diff options
Diffstat (limited to 'third_party/protobuf/3.6.0/objectivec/DevTools/check_version_stamps.sh')
-rw-r--r-- | third_party/protobuf/3.6.0/objectivec/DevTools/check_version_stamps.sh | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/third_party/protobuf/3.6.0/objectivec/DevTools/check_version_stamps.sh b/third_party/protobuf/3.6.0/objectivec/DevTools/check_version_stamps.sh new file mode 100644 index 0000000000..1acbe2a2b7 --- /dev/null +++ b/third_party/protobuf/3.6.0/objectivec/DevTools/check_version_stamps.sh @@ -0,0 +1,55 @@ +#!/bin/bash -eu + +# This script checks that the runtime version number constant in the compiler +# source and in the runtime source is the same. +# +# A distro can be made of the protobuf sources with only a subset of the +# languages, so if the compiler depended on the Objective C runtime, those +# builds would break. At the same time, we don't want the runtime source +# depending on the compiler sources; so two copies of the constant are needed. + +readonly ScriptDir=$(dirname "$(echo $0 | sed -e "s,^\([^/]\),$(pwd)/\1,")") +readonly ProtoRootDir="${ScriptDir}/../.." + +die() { + echo "Error: $1" + exit 1 +} + +readonly GeneratorSrc="${ProtoRootDir}/src/google/protobuf/compiler/objectivec/objectivec_file.cc" +readonly RuntimeSrc="${ProtoRootDir}/objectivec/GPBBootstrap.h" + +check_constant() { + local ConstantName="$1" + + # Collect version from generator sources. + local GeneratorVersion=$( \ + cat "${GeneratorSrc}" \ + | sed -n -e "s:const int32 ${ConstantName} = \([0-9]*\);:\1:p" + ) + if [[ -z "${GeneratorVersion}" ]] ; then + die "Failed to find ${ConstantName} in the generator source (${GeneratorSrc})." + fi + + # Collect version from runtime sources. + local RuntimeVersion=$( \ + cat "${RuntimeSrc}" \ + | sed -n -e "s:#define ${ConstantName} \([0-9]*\):\1:p" + ) + if [[ -z "${RuntimeVersion}" ]] ; then + die "Failed to find ${ConstantName} in the runtime source (${RuntimeSrc})." + fi + + # Compare them. + if [[ "${GeneratorVersion}" != "${RuntimeVersion}" ]] ; then + die "${ConstantName} values don't match! + Generator: ${GeneratorVersion} from ${GeneratorSrc} + Runtime: ${RuntimeVersion} from ${RuntimeSrc} +" + fi +} + +# Do the check. +check_constant GOOGLE_PROTOBUF_OBJC_VERSION + +# Success |