[build, ios, macos] Simplify version portion of user agent string

The X.Y.Z version portion was unreliable, as it pulled from the latest tag regardless of platform. Set version to 0.0.0 and retrieve only the hash, which allows us to drop the node/npm dependency.
This commit is contained in:
John Firebaugh
2017-02-03 15:59:42 -08:00
parent d3ca6c67f1
commit 150b938b49
12 changed files with 34 additions and 126 deletions

View File

@@ -27,6 +27,18 @@ if(IS_CI_BUILD)
add_compile_options(-DCI_BUILD=1)
endif()
if(EXISTS ${CMAKE_SOURCE_DIR}/.git/HEAD)
exec_program(
"git"
${CMAKE_SOURCE_DIR}
ARGS "rev-parse --short=8 HEAD"
OUTPUT_VARIABLE MBGL_VERSION_REV )
else()
set(MBGL_VERSION_REV 00000000)
endif()
set_source_files_properties(src/mbgl/util/version.cpp PROPERTIES COMPILE_DEFINITIONS MBGL_VERSION_REV="${MBGL_VERSION_REV}")
mason_use(geometry VERSION 0.9.0 HEADER_ONLY)
mason_use(variant VERSION 1.1.4 HEADER_ONLY)
mason_use(unique_resource VERSION dev HEADER_ONLY)

View File

@@ -194,7 +194,6 @@ compdb: $(BUILD_DEPS) $(TEST_DEPS) $(MACOS_COMPDB_PATH)/Makefile
clang-tools: compdb
if test -z $(CLANG_TIDY); then .mason/mason install clang-tidy 3.9.1; fi
if test -z $(CLANG_FORMAT); then .mason/mason install clang-format 3.9.1; fi
$(MAKE) -C $(MACOS_COMPDB_PATH) mbgl-headers
.PHONY: tidy
tidy: clang-tools
@@ -366,7 +365,6 @@ compdb: $(LINUX_BUILD)
clang-tools: compdb
if test -z $(CLANG_TIDY); then .mason/mason install clang-tidy 3.9.1; fi
if test -z $(CLANG_FORMAT); then .mason/mason install clang-format 3.9.1; fi
$(NINJA) $(NINJA_ARGS) -j$(JOBS) -C $(LINUX_OUTPUT_PATH) mbgl-headers
.PHONY: tidy
tidy: clang-tools

View File

@@ -519,7 +519,8 @@ set(MBGL_CORE_FILES
src/mbgl/util/url.cpp
src/mbgl/util/url.hpp
src/mbgl/util/utf.hpp
src/mbgl/util/version_info.cpp
src/mbgl/util/version.cpp
src/mbgl/util/version.hpp
src/mbgl/util/work_queue.cpp
src/mbgl/util/work_queue.hpp
src/mbgl/util/work_request.cpp

View File

@@ -1,27 +1,7 @@
set(MBGL_VERSION_DEPS package.json)
if(EXISTS ${CMAKE_SOURCE_DIR}/.git/HEAD)
set(MBGL_VERSION_DEPS ${MBGL_VERSION_DEPS} .git/HEAD)
endif()
add_custom_command(
OUTPUT ${MBGL_GENERATED}/include/mbgl/util/version.hpp
DEPENDS ${MBGL_VERSION_DEPS}
COMMAND ${NodeJS_EXECUTABLE} ${CMAKE_SOURCE_DIR}/scripts/build-version.js ${MBGL_GENERATED}
VERBATIM
)
add_custom_target(mbgl-headers DEPENDS
${MBGL_GENERATED}/include/mbgl/util/version.hpp
)
add_library(mbgl-core STATIC
${MBGL_CORE_FILES}
)
add_dependencies(mbgl-core
mbgl-headers
)
target_compile_options(mbgl-core
PRIVATE -fPIC
PRIVATE -fvisibility-inlines-hidden
@@ -30,7 +10,6 @@ target_compile_options(mbgl-core
target_include_directories(mbgl-core
PUBLIC include
PUBLIC src # TODO: make private
PRIVATE ${MBGL_GENERATED}/include
)
target_add_mason_package(mbgl-core PUBLIC geometry)

View File

@@ -10,8 +10,6 @@ if (NOT MASON_PLATFORM)
set(MASON_PLATFORM "${MBGL_PLATFORM}")
endif()
set(MBGL_GENERATED ${CMAKE_BINARY_DIR}/generated/${CMAKE_CFG_INTDIR})
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/node_modules/node-cmake/FindNodeJS.cmake)
message(FATAL_ERROR "Can't find node-cmake")
endif()

View File

@@ -14,7 +14,6 @@ target_include_directories(mbgl-test
PRIVATE test/include
PRIVATE test/src
PRIVATE platform/default
PRIVATE ${MBGL_GENERATED}/include
)
target_link_libraries(mbgl-test

View File

@@ -237,7 +237,6 @@ target_include_directories(mbgl-test
PRIVATE test/include
PRIVATE test/src
PRIVATE platform/default
PRIVATE ${MBGL_GENERATED}/include
)
target_link_libraries(mbgl-test

View File

@@ -4,7 +4,6 @@
#include <mbgl/util/http_header.hpp>
#include <mbgl/util/async_task.hpp>
#include <mbgl/util/version.hpp>
#import <Foundation/Foundation.h>
@@ -133,8 +132,8 @@ NSString *HTTPFileSource::Impl::getUserAgent() const {
// Avoid %s here because it inserts hidden bidirectional markers on macOS when the system
// language is set to a right-to-left language.
[userAgentComponents addObject:[NSString stringWithFormat:@"MapboxGL/%@ (%@)",
CFSTR(MBGL_VERSION_STRING), CFSTR(MBGL_VERSION_REV)]];
[userAgentComponents addObject:[NSString stringWithFormat:@"MapboxGL/0.0.0 (%@)",
@(mbgl::version::revision)]];
NSString *systemName = @"Darwin";
#if TARGET_OS_IPHONE

View File

@@ -1,81 +0,0 @@
#!/usr/bin/env node
var path = require('path');
var fs = require('fs');
var util = require('util');
var mkdirp = require('mkdirp');
var execSync = require('child_process').execSync;
const DEFAULT_TAG = [0, 0, 0];
const DEFAULT_REV = 'unknown';
function is_git_repo() {
try {
execSync('git rev-parse', { stdio: ['ignore', 'ignore', 'ignore'] });
return true;
} catch(err) {
return false;
}
}
function parse_tag(raw_tag) {
return raw_tag.replace(/[^0-9.]/g, '').split('.').map(parseFloat).slice(0, 3);
}
function parse_rev(raw_rev) {
return raw_rev.substr(0, 8);
}
var output_dir = process.argv[2];
if (!output_dir) {
console.warn('No output directory given.');
console.warn('Usage: %s [output dir]', path.basename(process.argv[1]));
process.exit(1);
}
if (is_git_repo()) {
var raw_tag = execSync('git describe --tags --always --abbrev=0').toString().trim();
var raw_rev = execSync('git rev-parse HEAD').toString().trim();
// When they're identical, the "git describe" can't find a tag and reports the rev instead.
if (raw_tag == raw_rev) {
var tag = DEFAULT_TAG
var rev = parse_rev(raw_rev)
} else {
var tag = parse_tag(raw_tag)
var rev = parse_rev(raw_rev)
}
} else {
var tag = DEFAULT_TAG;
var rev = DEFAULT_REV;
}
console.log('Tag: %d.%d.%d', tag[0], tag[1], tag[2]);
console.log('Rev: %s', rev);
var header = '// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.\n' +
'#pragma once\n' +
'\n' +
'#define MBGL_VERSION 0x' + (tag[0] << 16 | tag[1] << 8 | tag[2]).toString(16) + '\n' +
'#define MBGL_VERSION_STRING "' + tag[0] + '.' + tag[1] + '.' + tag[2] + '"\n' +
'#define MBGL_VERSION_MAJOR ' + tag[0] + '\n' +
'#define MBGL_VERSION_MINOR ' + tag[1] + '\n' +
'#define MBGL_VERSION_PATCH ' + tag[2] + '\n' +
'#define MBGL_VERSION_REV "' + rev + '"\n' +
'\n' +
'namespace mbgl {\n' +
'namespace version {\n' +
'\n' +
'extern const int major, minor, patch;\n' +
'extern const char *revision;\n' +
'extern const char *string;\n' +
'extern const unsigned int number;\n' +
'\n' +
'} // namespace version\n' +
'} // namespace mbgl\n';
var header_path = path.join(output_dir, 'include/mbgl/util/version.hpp')
mkdirp.sync(path.dirname(header_path));
fs.writeFileSync(header_path, header);

View File

@@ -0,0 +1,9 @@
#include <mbgl/util/version.hpp>
namespace mbgl {
namespace version {
const char* revision = MBGL_VERSION_REV;
} // namespace version
} // namespace mbgl

View File

@@ -0,0 +1,9 @@
#pragma once
namespace mbgl {
namespace version {
extern const char* revision;
} // namespace version
} // namespace mbgl

View File

@@ -1,14 +0,0 @@
#include <mbgl/util/version.hpp>
namespace mbgl {
namespace version {
const int major = MBGL_VERSION_MAJOR;
const int minor = MBGL_VERSION_MINOR;
const int patch = MBGL_VERSION_PATCH;
const char *revision = MBGL_VERSION_REV;
const char *string = MBGL_VERSION_STRING;
const unsigned int number = MBGL_VERSION;
} // namespace version
} // namespace mbgl