Merge pull request #13 from maptiler/cmake-xcode12-update
ios/macos release build improvements
This commit is contained in:
5
.github/workflows/android-release.yml
vendored
5
.github/workflows/android-release.yml
vendored
@@ -31,6 +31,11 @@ jobs:
|
||||
submodules: recursive
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Ensure source code revision
|
||||
run: scripts/ensure-code-revision.sh
|
||||
working-directory: platform/android
|
||||
shell: bash
|
||||
|
||||
- name: Cache node modules
|
||||
uses: actions/cache@v2
|
||||
env:
|
||||
|
||||
7
.github/workflows/macos-release.yml
vendored
7
.github/workflows/macos-release.yml
vendored
@@ -16,6 +16,7 @@ jobs:
|
||||
SYMBOLS: NO
|
||||
HOMEBREW_NO_AUTO_UPDATE: 1
|
||||
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
||||
CILAUNCH: true
|
||||
defaults:
|
||||
run:
|
||||
working-directory: platform/ios
|
||||
@@ -73,13 +74,11 @@ jobs:
|
||||
- name: Install packaging dependencies
|
||||
run: |
|
||||
./platform/ios/scripts/install-packaging-dependencies.sh
|
||||
env:
|
||||
CILAUNCH: true
|
||||
|
||||
- name: Build package
|
||||
run: make xpackage
|
||||
|
||||
|
||||
- name: Deploy package
|
||||
run: make xdeploy
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
25
platform/android/scripts/ensure-code-revision.sh
Executable file
25
platform/android/scripts/ensure-code-revision.sh
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o pipefail
|
||||
set -u
|
||||
|
||||
function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; }
|
||||
function finish { >&2 echo -en "\033[0m"; }
|
||||
trap finish EXIT
|
||||
|
||||
VERSION_TAG=${VERSION_TAG:-''}
|
||||
if [[ -z ${VERSION_TAG} ]]; then
|
||||
step "Determining version number from most recent relevant git tag…"
|
||||
VERSION_TAG=$( git describe --tags --match=android-v*.*.* --abbrev=0 )
|
||||
echo "Found tag: ${VERSION_TAG}"
|
||||
fi
|
||||
|
||||
if [[ $( echo ${VERSION_TAG} | grep --invert-match android-v ) ]]; then
|
||||
echo "Error: ${VERSION_TAG} is not a valid android version tag"
|
||||
echo "VERSION_TAG should be in format: android-vX.X.X-pre.X"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
step "Checking out source code at ${VERSION_TAG}"
|
||||
git checkout ${VERSION_TAG}
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required(VERSION 3.9)
|
||||
cmake_minimum_required(VERSION 3.19)
|
||||
|
||||
message(source-dir=${CMAKE_SOURCE_DIR} current-dir=${CMAKE_CURRENT_SOURCE_DIR} current-binary-dir=${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
|
||||
@@ -4,6 +4,12 @@ if(NOT DEFINED IOS_DEPLOYMENT_TARGET)
|
||||
set(IOS_DEPLOYMENT_TARGET "9.0")
|
||||
endif()
|
||||
|
||||
# Override default CMake NATIVE_ARCH_ACTUAL
|
||||
# https://gitlab.kitware.com/cmake/cmake/-/issues/20893
|
||||
# https://stackoverflow.com/a/22689917/5531400
|
||||
set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD)")
|
||||
set_target_properties(mbgl-core PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] "YES")
|
||||
|
||||
macro(initialize_ios_target target)
|
||||
set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${IOS_DEPLOYMENT_TARGET}")
|
||||
set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_ENABLE_BITCODE "YES")
|
||||
|
||||
@@ -95,6 +95,8 @@ if github-release info --tag ${VERSION_TAG} | grep --quiet "draft: ✗"; then
|
||||
fi
|
||||
PUBLISH_VERSION=$( echo ${VERSION_TAG} | sed 's/^ios-v//' )
|
||||
|
||||
git checkout ${VERSION_TAG}
|
||||
|
||||
npm install --ignore-scripts
|
||||
mkdir -p ${BINARY_DIRECTORY}
|
||||
|
||||
|
||||
@@ -2191,7 +2191,6 @@
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 15256;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
"EXCLUDED_ARCHS[sdk=*]" = arm64;
|
||||
FRAMEWORK_VERSION = A;
|
||||
INFOPLIST_FILE = sdk/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
|
||||
@@ -47,7 +47,7 @@ publish() {
|
||||
else
|
||||
file_name=mapbox-macos-sdk-${PUBLISH_VERSION}-${suffix}.zip
|
||||
fi
|
||||
step "Compressing ${file_name}…"
|
||||
step "Compressing ${file_name}-> ${PWD}../deploy/${file_name}"
|
||||
cd build/macos/pkg
|
||||
rm -f ../deploy/${file_name}
|
||||
zip -yr ../deploy/${file_name} *
|
||||
@@ -129,6 +129,14 @@ fi
|
||||
npm install --ignore-scripts
|
||||
mkdir -p ${BINARY_DIRECTORY}
|
||||
|
||||
step "Generating release notes…"
|
||||
RELEASE_NOTES=$( ./platform/macos/scripts/release-notes.js github )
|
||||
|
||||
if [[ -z "${RELEASE_NOTES}" ]]; then
|
||||
echo "Release notes cannot be empty."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${GITHUB_RELEASE}" == true ]]; then
|
||||
step "Create GitHub release…"
|
||||
if [[ $( echo ${PUBLISH_VERSION} | awk '/[0-9]-/' ) ]]; then
|
||||
@@ -137,6 +145,7 @@ if [[ "${GITHUB_RELEASE}" == true ]]; then
|
||||
github-release release \
|
||||
--tag "macos-v${PUBLISH_VERSION}" \
|
||||
--name "macos-v${PUBLISH_VERSION}" \
|
||||
--description "${RELEASE_NOTES}" \
|
||||
--draft ${PUBLISH_PRE_FLAG}
|
||||
fi
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
<%-CHANGELOG-%>
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
# [MapLibre Maps SDK for macos]
|
||||
|
||||
The MapLibre Maps SDK for macos is an open-source framework for embedding interactive map views with scalable, customizable vector maps into Cocoa Touch applications on iOS 9.0 and above using Objective-C, Swift, or Interface Builder. It takes stylesheets that conform to the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/), applies them to vector tiles that conform to the [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/), and renders them using OpenGL.
|
||||
|
||||
## Changes in version <%-CURRENTVERSION%>
|
||||
|
||||
<%-CURRENTCHANGELOG%>
|
||||
|
||||
## Recent changes
|
||||
|
||||
<% OTHERRELEASES.forEach(function(release) { %>
|
||||
### <%-release.version%>
|
||||
|
||||
<%-release.changelog%>
|
||||
<% }) -%>
|
||||
103
platform/ios/platform/macos/scripts/release-notes.js
Executable file
103
platform/ios/platform/macos/scripts/release-notes.js
Executable file
@@ -0,0 +1,103 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const fs = require('fs');
|
||||
const execSync = require('child_process').execSync;
|
||||
const ejs = require('ejs');
|
||||
const _ = require('lodash');
|
||||
const semver = require('semver');
|
||||
|
||||
const changelogPath = 'platform/macos/CHANGELOG.md';
|
||||
const changelog = fs.readFileSync(changelogPath, 'utf8');
|
||||
|
||||
let outputMode = {};
|
||||
switch(process.argv[2]) {
|
||||
case "jazzy":
|
||||
outputMode.isJazzy = true; break;
|
||||
case "github":
|
||||
default:
|
||||
outputMode.isGitHub = true;
|
||||
}
|
||||
|
||||
/*
|
||||
Find current and immediately previous releases by parsing git tags.
|
||||
*/
|
||||
let currentVersion = execSync('git describe --tags --match=macos-v*.*.* --abbrev=0')
|
||||
.toString()
|
||||
.trim()
|
||||
.replace('macos-v', '');
|
||||
|
||||
let gitTags = execSync('git tag --list macos-v*.*.*')
|
||||
.toString()
|
||||
.split('\n')
|
||||
.map(function (tag) {
|
||||
tag = tag.replace('macos-v', '').trim();
|
||||
return semver.clean(tag);
|
||||
});
|
||||
let previousVersion = semver.maxSatisfying(gitTags, "<" + currentVersion);
|
||||
|
||||
/*
|
||||
Parse the raw changelog text and split it into individual releases.
|
||||
|
||||
This regular expression:
|
||||
- Matches lines starting with "## x.x.x".
|
||||
- Groups the version number.
|
||||
- Skips the (optional) release date.
|
||||
- Groups the changelog content.
|
||||
- Ends when another "## x.x.x" is found.
|
||||
*/
|
||||
const regex = /^## (\d+\.\d+\.\d+).*?\n(.+?)(?=\n^## \d+\.\d+\.\d+.*?\n)/gms;
|
||||
|
||||
let releaseNotes = [];
|
||||
while (match = regex.exec(changelog)) {
|
||||
releaseNotes.push({
|
||||
'version': match[1],
|
||||
'changelog': match[2].trim(),
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
Match the current tag with the most appropriate release notes.
|
||||
*/
|
||||
const versionsInReleaseNotes = _.map(releaseNotes, 'version');
|
||||
const bestReleaseNotesForCurrentVersion = semver.minSatisfying(versionsInReleaseNotes, ">=" + currentVersion);
|
||||
const currentReleaseNotes = _.find(releaseNotes, { version: bestReleaseNotesForCurrentVersion });
|
||||
|
||||
if (!currentReleaseNotes) {
|
||||
console.error('Could not find a release section satisfying %s in %s — did you forget to rename the "master" section to %s?', currentVersion, changelogPath, currentVersion.split("-")[0]);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
/*
|
||||
Fill and print the release notes template.
|
||||
*/
|
||||
let templatedReleaseNotes;
|
||||
|
||||
if (outputMode.isGitHub) {
|
||||
templatedReleaseNotes = ejs.render(fs.readFileSync('platform/macos/scripts/release-notes-github.md.ejs', 'utf8'), {
|
||||
'CURRENTVERSION': currentVersion,
|
||||
'PREVIOUSVERSION': previousVersion,
|
||||
'CHANGELOG': currentReleaseNotes.changelog,
|
||||
'isPrerelease': semver.prerelease(currentVersion)
|
||||
});
|
||||
}
|
||||
|
||||
if (outputMode.isJazzy) {
|
||||
const minorReleaseSeries = semver.major(currentVersion) + "." + semver.minor(currentVersion) + ".0";
|
||||
const range = ">=" + minorReleaseSeries + " <" + currentVersion;
|
||||
const otherReleasesInSeries = _.filter(releaseNotes, function(release) {
|
||||
return semver.satisfies(release.version, range);
|
||||
});
|
||||
|
||||
otherReleasesInSeries.forEach(function(release) {
|
||||
// Bump section headings from h3 to h4.
|
||||
release.changelog = release.changelog.replace(/^### /gm, '#### ');
|
||||
});
|
||||
|
||||
templatedReleaseNotes = ejs.render(fs.readFileSync('platform/macos/scripts/release-notes-jazzy.md.ejs', 'utf8'), {
|
||||
'CURRENTVERSION': currentVersion,
|
||||
'CURRENTCHANGELOG': currentReleaseNotes.changelog,
|
||||
'OTHERRELEASES': otherReleasesInSeries
|
||||
});
|
||||
}
|
||||
|
||||
process.stdout.write(templatedReleaseNotes);
|
||||
@@ -1,5 +1,11 @@
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.11")
|
||||
|
||||
# Override default CMake NATIVE_ARCH_ACTUAL
|
||||
# https://gitlab.kitware.com/cmake/cmake/-/issues/20893
|
||||
# https://stackoverflow.com/a/22689917/5531400
|
||||
set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD)")
|
||||
set_target_properties(mbgl-core PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] "YES")
|
||||
|
||||
set_target_properties(mbgl-core PROPERTIES XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES)
|
||||
|
||||
if(MBGL_WITH_OPENGL)
|
||||
|
||||
Reference in New Issue
Block a user