Merge pull request #13 from maptiler/cmake-xcode12-update

ios/macos release build improvements
This commit is contained in:
Petr Pokorny
2021-02-01 12:14:19 +01:00
committed by GitHub
12 changed files with 178 additions and 7 deletions

View File

@@ -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:

View File

@@ -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 }}

View 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}

View File

@@ -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})

View File

@@ -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")

View File

@@ -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}

View File

@@ -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";

View File

@@ -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

View File

@@ -0,0 +1,2 @@
<%-CHANGELOG-%>

View File

@@ -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%>
<% }) -%>

View 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);

View File

@@ -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)