From 4e1ead344bfb1f9ddb207924465fabae3d218d67 Mon Sep 17 00:00:00 2001 From: Lucas Wojciechowski Date: Wed, 2 Sep 2015 13:38:37 -0700 Subject: [node] Enable npm to build mapbox-gl-native package from source - Allow node bindings to be built if git submodules cannot be checked out - Made geojsonvt a mason package instead of a git submodule - Use globally installed mason if it cannot be checked out via git submodules --- scripts/android/configure.sh | 2 ++ scripts/build-version.py | 45 ++++++++++++++++++++++++++++++-------------- scripts/ios/configure.sh | 2 ++ scripts/ios/package.sh | 6 ++++-- scripts/linux/configure.sh | 2 ++ scripts/main.mk | 10 ++++++---- scripts/osx/configure.sh | 2 ++ scripts/osx/run.sh | 3 --- 8 files changed, 49 insertions(+), 23 deletions(-) (limited to 'scripts') diff --git a/scripts/android/configure.sh b/scripts/android/configure.sh index 70c8973a8b..a849d48d18 100644 --- a/scripts/android/configure.sh +++ b/scripts/android/configure.sh @@ -8,5 +8,7 @@ LIBUV_VERSION=1.4.0 ZLIB_VERSION=system NUNICODE_VERSION=1.5.1 LIBZIP_VERSION=0.11.2 +GEOJSONVT_VERSION=1.1.0 +VARIANT_VERSION=1.0 export MASON_ANDROID_ABI=${MASON_PLATFORM_VERSION} diff --git a/scripts/build-version.py b/scripts/build-version.py index 0110e6a2e1..1d58998c9b 100755 --- a/scripts/build-version.py +++ b/scripts/build-version.py @@ -1,22 +1,22 @@ #!/usr/bin/env python -import sys, os, errno, re +import sys, os, errno, re, subprocess +DEFAULT_TAG = [0, 0, 0] +DEFAULT_REV = 'unknown' -output_dir = sys.argv[1] +def is_git_repo(): + try: + subprocess.check_output("git rev-parse", shell=True) + return True + except subprocess.CalledProcessError as exc: + return False -if len(sys.argv) <= 3: - tag = [0, 0, 0] - rev = sys.argv[2][0:8] -else: - # When they're identical, the git describe can't find a tag and reports the rev instead. - if sys.argv[2] == sys.argv[3]: - tag = [0, 0, 0] - else: - ver = re.sub("[^0-9.]", "", sys.argv[2]) - tag = map(int, ver.split('.')) - rev = sys.argv[3][0:8] +def parse_tag(raw_tag): + return map(int, re.sub("[^0-9.]", "", raw_tag).split('.')) +def parse_rev(raw_rev): + return raw_rev[0:8] def mkdir_p(path): try: @@ -27,6 +27,24 @@ def mkdir_p(path): else: raise +output_dir = sys.argv[1] + +if is_git_repo(): + raw_tag = subprocess.check_output("git describe --tags --always --abbrev=0", shell=True) + raw_rev = subprocess.check_output("git rev-parse HEAD", shell=True) + + # When they're identical, the "git describe" can't find a tag and reports the rev instead. + if raw_tag == raw_rev: + tag = DEFAULT_TAG + rev = parse_rev(raw_rev) + else: + tag = parse_tag(raw_tag) + rev = parse_rev(raw_rev) +else: + tag = DEFAULT_TAG + rev = DEFAULT_REV + + header = """// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED. #ifndef MBGL_UTIL_VERSION #define MBGL_UTIL_VERSION @@ -60,4 +78,3 @@ extern const unsigned int number; header_path = os.path.join(output_dir, 'include/mbgl/util/version.hpp') mkdir_p(os.path.dirname(header_path)) with open(header_path, 'w') as f: f.write(header) - diff --git a/scripts/ios/configure.sh b/scripts/ios/configure.sh index 0562e0e39a..954ba34b1b 100644 --- a/scripts/ios/configure.sh +++ b/scripts/ios/configure.sh @@ -4,3 +4,5 @@ BOOST_VERSION=1.57.0 SQLITE_VERSION=system LIBUV_VERSION=0.10.28 ZLIB_VERSION=system +GEOJSONVT_VERSION=1.1.0 +VARIANT_VERSION=1.0 diff --git a/scripts/ios/package.sh b/scripts/ios/package.sh index 2b1e97c304..3d21bacb5a 100755 --- a/scripts/ios/package.sh +++ b/scripts/ios/package.sh @@ -74,12 +74,14 @@ if [[ "${BUILD_FOR_DEVICE}" == true ]]; then -o ${OUTPUT}/static/lib${NAME}.a \ ${LIBS[@]/#/build/${BUILDTYPE}-iphoneos/libmbgl-} \ ${LIBS[@]/#/build/${BUILDTYPE}-iphonesimulator/libmbgl-} \ - `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libuv.a` + `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libuv.a` \ + `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libgeojsonvt.a` else libtool -static -no_warning_for_no_symbols \ -o ${OUTPUT}/static/lib${NAME}.a \ ${LIBS[@]/#/build/${BUILDTYPE}-iphonesimulator/libmbgl-} \ - `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libuv.a` + `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libuv.a` \ + `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libgeojsonvt.a` fi echo "Created ${OUTPUT}/static/lib${NAME}.a" diff --git a/scripts/linux/configure.sh b/scripts/linux/configure.sh index 1099a65504..c4c307eb78 100644 --- a/scripts/linux/configure.sh +++ b/scripts/linux/configure.sh @@ -11,6 +11,8 @@ LIBUV_VERSION=0.10.28 ZLIB_VERSION=system NUNICODE_VERSION=1.5.1 LIBZIP_VERSION=0.11.2 +GEOJSONVT_VERSION=1.1.0 +VARIANT_VERSION=1.0 function print_opengl_flags { CONFIG+=" 'opengl_cflags%': $(quote_flags $(pkg-config gl x11 --cflags)),"$LN diff --git a/scripts/main.mk b/scripts/main.mk index 3639a780a7..dae3782a68 100644 --- a/scripts/main.mk +++ b/scripts/main.mk @@ -16,6 +16,10 @@ HOST_VERSION ?= $(BUILD_VERSION) export MASON_PLATFORM=$(HOST) export MASON_PLATFORM_VERSION=$(HOST_VERSION) +ifneq (,$(wildcard scripts/$(HOST)/$(HOST_VERSION)/configure.sh)) + CONFIGURE_FILES += scripts/$(HOST)/$(HOST_VERSION)/configure.sh +endif + HOST_SLUG = $(HOST)-$(HOST_VERSION) CONFIGURE_FILES = scripts/$(HOST)/configure.sh ifneq (,$(wildcard scripts/$(HOST)/$(HOST_VERSION)/configure.sh)) @@ -34,6 +38,7 @@ default: ; #### Dependencies ############################################################## +ifneq (,$(wildcard .git/.)) SUBMODULES += .mason/mason.sh .mason/mason.sh: ./scripts/flock.py .git/Submodule.lock git submodule update --init .mason @@ -42,10 +47,6 @@ SUBMODULES += styles/styles styles/styles: ./scripts/flock.py .git/Submodule.lock git submodule update --init styles -SUBMODULES += src/mbgl/util/geojsonvt/geojsonvt.hpp -src/mbgl/util/geojsonvt/geojsonvt.hpp: - ./scripts/flock.py .git/Submodule.lock git submodule update --init src/mbgl/util/geojsonvt - ifeq ($(HOST),ios) SUBMODULES += platform/ios/vendor/SMCalloutView/SMCalloutView.h platform/ios/vendor/SMCalloutView/SMCalloutView.h: @@ -55,6 +56,7 @@ SUBMODULES += test/ios/KIF/KIF.xcodeproj test/ios/KIF/KIF.xcodeproj: ./scripts/flock.py .git/Submodule.lock git submodule update --init test/ios/KIF endif +endif # Wildcard targets get removed after build by default, but we want to preserve the config. .PRECIOUS: config/%.gypi diff --git a/scripts/osx/configure.sh b/scripts/osx/configure.sh index fc3c5f464f..4280bdf0a1 100644 --- a/scripts/osx/configure.sh +++ b/scripts/osx/configure.sh @@ -11,3 +11,5 @@ LIBUV_VERSION=0.10.28 ZLIB_VERSION=system NUNICODE_VERSION=1.5.1 LIBZIP_VERSION=0.11.2 +GEOJSONVT_VERSION=1.1.0 +VARIANT_VERSION=1.0 diff --git a/scripts/osx/run.sh b/scripts/osx/run.sh index 86a7291522..70d54c5ce9 100755 --- a/scripts/osx/run.sh +++ b/scripts/osx/run.sh @@ -14,9 +14,6 @@ BUILDTYPE=${BUILDTYPE:-Release} mapbox_time "checkout_styles" \ git submodule update --init styles -mapbox_time "checkout_geojsonvt" \ -git submodule update --init src/mbgl/util/geojsonvt - mapbox_time "compile_program" \ make xosx -j${JOBS} BUILDTYPE=${BUILDTYPE} -- cgit v1.2.1