[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:
@@ -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)
|
||||
|
||||
2
Makefile
2
Makefile
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
9
src/mbgl/util/version.cpp
Normal file
9
src/mbgl/util/version.cpp
Normal file
@@ -0,0 +1,9 @@
|
||||
#include <mbgl/util/version.hpp>
|
||||
|
||||
namespace mbgl {
|
||||
namespace version {
|
||||
|
||||
const char* revision = MBGL_VERSION_REV;
|
||||
|
||||
} // namespace version
|
||||
} // namespace mbgl
|
||||
9
src/mbgl/util/version.hpp
Normal file
9
src/mbgl/util/version.hpp
Normal file
@@ -0,0 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
namespace mbgl {
|
||||
namespace version {
|
||||
|
||||
extern const char* revision;
|
||||
|
||||
} // namespace version
|
||||
} // namespace mbgl
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user