From 228d1a7eb5f06ad82c0fdc2495eed9aa65c3fb6d Mon Sep 17 00:00:00 2001 From: Jason Wray Date: Tue, 2 Oct 2018 19:07:14 -0400 Subject: [ios, build] Check symbol namespacing for mapbox-events-ios --- Makefile | 4 +++ circle.yml | 3 +++ platform/ios/scripts/check-events-symbols.sh | 37 ++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100755 platform/ios/scripts/check-events-symbols.sh diff --git a/Makefile b/Makefile index cff9a28e8d..02ed977f0e 100644 --- a/Makefile +++ b/Makefile @@ -252,6 +252,10 @@ ios-sanitize-address: $(IOS_PROJ_PATH) ios-static-analyzer: $(IOS_PROJ_PATH) set -o pipefail && $(IOS_XCODEBUILD_SIM) analyze -scheme 'CI' test $(XCPRETTY) +.PHONY: ios-check-events-symbols +ios-check-events-symbols: + ./platform/ios/scripts/check-events-symbols.sh + .PHONY: ipackage ipackage: ipackage* ipackage%: diff --git a/circle.yml b/circle.yml index 1def734e60..087418de3d 100644 --- a/circle.yml +++ b/circle.yml @@ -850,6 +850,9 @@ jobs: - build-ios-test - build-ios-integration-test - check-public-symbols + - run: + name: Check symbol namespacing for mapbox-events-ios + command: make ios-check-events-symbols - run: name: Lint plist files command: make ios-lint diff --git a/platform/ios/scripts/check-events-symbols.sh b/platform/ios/scripts/check-events-symbols.sh new file mode 100755 index 0000000000..c76d5e2693 --- /dev/null +++ b/platform/ios/scripts/check-events-symbols.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +set -eu -o pipefail + +function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; } +function finish { >&2 echo -en "\033[0m"; } +trap finish EXIT + +find_framework() { + step "Looking for Mapbox.framework…" + echo $( find ./build -name Mapbox | tail -n 1 ) +} + +FRAMEWORK=$(find_framework) + +if [[ -z "${FRAMEWORK}" || ! -f "${FRAMEWORK}" ]]; then + echo "No framework found — building dynamic Mapbox.framework…" + make iframework BUILD_DEVICE=false + FRAMEWORK=$(find_framework) +fi + +echo "Found framework: ${FRAMEWORK}" + +step "Checking for un-namespaced symbols from mapbox-events-ios…" + +# Symbols from mapbox-events-ios are prefixed MME. To avoid duplicate symbol +# warnings when multiple copes of mapbox-events-ios are included in a project, +# the maps SDK prefixes these symbols with MGL_. +SYMBOLS=$( nm "$FRAMEWORK" | grep \$_MME || true ) + +if [ -z "${SYMBOLS}" ]; then + echo "✅ No un-namespaced symbols found." +else + echo "❗️ Found un-namespaced symbols:" + echo "${SYMBOLS}" + exit 1 +fi -- cgit v1.2.1