Index: third_party/protobuf/objectivec/generate_well_known_types.sh |
diff --git a/third_party/protobuf/objectivec/generate_descriptors_proto.sh b/third_party/protobuf/objectivec/generate_well_known_types.sh |
similarity index 53% |
rename from third_party/protobuf/objectivec/generate_descriptors_proto.sh |
rename to third_party/protobuf/objectivec/generate_well_known_types.sh |
index 84ba07380f3154778464a71570de8e611257f5cf..36c346031c85d0deef969973b98961cf5dee46a8 100755 |
--- a/third_party/protobuf/objectivec/generate_descriptors_proto.sh |
+++ b/third_party/protobuf/objectivec/generate_well_known_types.sh |
@@ -1,9 +1,9 @@ |
#!/bin/bash |
-# Run this script to regenerate descriptor.pbobjc.{h,m} after the protocol |
-# compiler changes. |
+# Run this script to regenerate *.pbobjc.{h,m} for the well known types after |
+# the protocol compiler changes. |
-# HINT: Flags passed to generate_descriptor_proto.sh will be passed directly |
+# HINT: Flags passed to generate_well_known_types.sh will be passed directly |
# to make when building protoc. This is particularly useful for passing |
# -j4 to run 4 jobs simultaneously. |
@@ -12,6 +12,13 @@ set -eu |
readonly ScriptDir=$(dirname "$(echo $0 | sed -e "s,^\([^/]\),$(pwd)/\1,")") |
readonly ProtoRootDir="${ScriptDir}/.." |
+# Flag for continuous integration to check that everything is current. |
+CHECK_ONLY=0 |
+if [[ $# -ge 1 && ( "$1" == "--check-only" ) ]] ; then |
+ CHECK_ONLY=1 |
+ shift |
+fi |
+ |
pushd "${ProtoRootDir}" > /dev/null |
if test ! -e src/google/protobuf/stubs/common.h; then |
@@ -37,7 +44,6 @@ make $@ protoc |
declare -a RUNTIME_PROTO_FILES=( \ |
google/protobuf/any.proto \ |
google/protobuf/api.proto \ |
- google/protobuf/descriptor.proto \ |
google/protobuf/duration.proto \ |
google/protobuf/empty.proto \ |
google/protobuf/field_mask.proto \ |
@@ -47,4 +53,24 @@ declare -a RUNTIME_PROTO_FILES=( \ |
google/protobuf/type.proto \ |
google/protobuf/wrappers.proto) |
-./protoc --objc_out="${ProtoRootDir}/objectivec" ${RUNTIME_PROTO_FILES[@]} |
+# Generate to a temp directory to see if they match. |
+TMP_DIR=$(mktemp -d) |
+trap "rm -rf ${TMP_DIR}" EXIT |
+./protoc --objc_out="${TMP_DIR}" ${RUNTIME_PROTO_FILES[@]} |
+set +e |
+diff -r "${TMP_DIR}/google" "${ProtoRootDir}/objectivec/google" > /dev/null |
+if [[ $? -eq 0 ]] ; then |
+ echo "Generated source for WellKnownTypes is current." |
+ exit 0 |
+fi |
+set -e |
+ |
+# If check only mode, error out. |
+if [[ "${CHECK_ONLY}" == 1 ]] ; then |
+ echo "ERROR: The WKTs need to be regenerated! Run $0" |
+ exit 1 |
+fi |
+ |
+# Copy them over. |
+echo "Copying over updated WellKnownType sources." |
+cp -r "${TMP_DIR}/google/." "${ProtoRootDir}/objectivec/google/" |