vendor-grpc.sh 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/bin/bash
  2. # Copyright 2019, gRPC Authors All rights reserved.
  3. #
  4. # Licensed under the Apache License, Version 2.0 (the "License");
  5. # you may not use this file except in compliance with the License.
  6. # You may obtain a copy of the License at
  7. #
  8. # http://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS,
  12. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. # See the License for the specific language governing permissions and
  14. # limitations under the License.
  15. # This script vendors the gRPC Core library into the
  16. # CgRPC module in a form suitable for building with
  17. # the Swift Package Manager.
  18. #
  19. # For usage, see `vendor-all.sh`.
  20. set -eu
  21. source ./tmp/grpc/swift-vendoring.sh
  22. TMP_DIR=./tmp
  23. DSTROOT=../Sources
  24. DSTASSETS=../Assets
  25. #
  26. # Remove previously-vendored code.
  27. #
  28. echo "REMOVING any previously-vendored gRPC code"
  29. rm -rf $DSTROOT/CgRPC/src
  30. rm -rf $DSTROOT/CgRPC/grpc
  31. rm -rf $DSTROOT/CgRPC/third_party
  32. rm -rf $DSTROOT/CgRPC/include/grpc
  33. #
  34. # Copy grpc headers and source files
  35. #
  36. echo "COPYING public gRPC headers"
  37. for src in "${public_headers[@]}"
  38. do
  39. dest="$DSTROOT/CgRPC/$src"
  40. dest_dir=$(dirname "$dest")
  41. mkdir -pv "$dest_dir"
  42. cp "$TMP_DIR/grpc/$src" "$dest"
  43. done
  44. echo "COPYING private gRPC headers"
  45. for src in "${private_headers[@]}"
  46. do
  47. dest="$DSTROOT/CgRPC/$src"
  48. dest_dir=$(dirname "$dest")
  49. mkdir -pv "$dest_dir"
  50. cp "$TMP_DIR/grpc/$src" "$dest"
  51. done
  52. echo "COPYING gRPC source files"
  53. for src in "${source_files[@]}"
  54. do
  55. dest="$DSTROOT/CgRPC/$src"
  56. dest_dir=$(dirname "$dest")
  57. mkdir -pv "$dest_dir"
  58. cp "$TMP_DIR/grpc/$src" "$dest"
  59. done
  60. echo "ADDING additional compiler flags to tsi/ssl_transport_security.cc"
  61. perl -pi -e 's/#define TSI_OPENSSL_ALPN_SUPPORT 1/#define TSI_OPENSSL_ALPN_SUPPORT 0/' $DSTROOT/CgRPC/src/core/tsi/ssl_transport_security.cc
  62. echo "COPYING CgRPC/src to CgRPC/include"
  63. cp -rp $DSTROOT/CgRPC/src $DSTROOT/CgRPC/include/src
  64. echo "REMOVING *.c and *.cc from CgRPC/include"
  65. find $DSTROOT/CgRPC/include/src -name '*.c' -delete
  66. find $DSTROOT/CgRPC/include/src -name '*.cc' -delete
  67. echo "MOVING headers from CgRPC/include/src/core/ext/upb-generated/src/proto to CgRPC/include/src/proto"
  68. mv -v "$DSTROOT/CgRPC/include/src/core/ext/upb-generated/src/proto" "$DSTROOT/CgRPC/include/src/proto"
  69. echo "MOVING headers from CgRPC/include/src/core/ext/upb-generated/* to CgRPC/include"
  70. mv -v $DSTROOT/CgRPC/include/src/core/ext/upb-generated/envoy "$DSTROOT/CgRPC/include/envoy"
  71. mv -v $DSTROOT/CgRPC/include/src/core/ext/upb-generated/gogoproto "$DSTROOT/CgRPC/include/gogoproto"
  72. mv -v $DSTROOT/CgRPC/include/src/core/ext/upb-generated/google "$DSTROOT/CgRPC/include/google"
  73. mv -v $DSTROOT/CgRPC/include/src/core/ext/upb-generated/udpa "$DSTROOT/CgRPC/include/udpa"
  74. mv -v $DSTROOT/CgRPC/include/src/core/ext/upb-generated/validate "$DSTROOT/CgRPC/include/validate"
  75. echo "MOVING headers CgRPC/third_party/upb from CgRPC/include/upb"
  76. mkdir -p $DSTROOT/CgRPC/include/upb
  77. cp -rp $DSTROOT/CgRPC/third_party/upb/upb/*.h $DSTROOT/CgRPC/include/upb
  78. cp -rp $DSTROOT/CgRPC/third_party/upb/upb/*.inc $DSTROOT/CgRPC/include/upb
  79. echo "DISABLING ARES"
  80. perl -pi -e 's/#define GRPC_ARES 1/#define GRPC_ARES 0/' $DSTROOT/CgRPC/include/grpc/impl/codegen/port_platform.h
  81. echo "APPLYING patches"
  82. (cd ..; git apply scripts/patch-1-import.patch)
  83. echo "COPYING roots.pem"
  84. echo "Please run 'swift run RootsEncoder > Sources/SwiftGRPC/Core/Roots.swift' to import the updated certificates."
  85. cp $TMP_DIR/grpc/etc/roots.pem $DSTASSETS/roots.pem