From 7acfd3a243d23b6a6d1489060f47e2deddee9a60 Mon Sep 17 00:00:00 2001 From: tobrun Date: Wed, 9 Oct 2019 14:19:03 +0200 Subject: [PATCH] [build] rework scripts to new build system --- .gitignore | 5 ++++- README.md | 4 ++-- gradle/android-nitpick.gradle | 2 +- package-lock.json | 26 ++++++++++++++++++++++++ package.json | 25 +++++++++++++++++++++++ scripts/generate-license.py | 6 +++--- scripts/generate-style-code.js | 36 +++++++++++++++++----------------- scripts/generate-test-code.js | 8 ++++---- scripts/metrics.sh | 10 +++++----- scripts/parse-jacoco-report.py | 2 +- scripts/run-render-test.py | 4 ++-- scripts/validate-license.py | 2 +- 12 files changed, 92 insertions(+), 38 deletions(-) create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore index ff3db8735..37b7600a5 100644 --- a/.gitignore +++ b/.gitignore @@ -32,4 +32,7 @@ MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/acti MapboxGLAndroidSDKTestApp/src/main/assets/integration/ # Local AS configuration file -gradle.properties \ No newline at end of file +gradle.properties + +# Node modules +node_modules \ No newline at end of file diff --git a/README.md b/README.md index b7b2cb225..af3968de9 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ make aproj #### linux -run `make android-configuration` in the root folder of the project and open the Android Studio project in `/platform/android`. +run `make android-configuration` in the root folder of the project and open in Android Studio. If you are using Arch Linux, install [ncurses5-compat-libs](https://aur.archlinux.org/packages/ncurses5-compat-libs). @@ -88,7 +88,7 @@ With the first gradle invocation, gradle will take the value of the `MAPBOX_ACCE Run the configuration for the `MapboxGLAndroidSDKTestApp` module and select a device or emulator to deploy on. Based on the selected device, the c++ code will be compiled for the related processor architecture. You can see the project compiling in the `View > Tool Windows > Gradle Console`. -More information about building and distributing this project in [DISTRIBUTE.md](https://github.com/mapbox/mapbox-gl-native/blob/master/platform/android/DISTRIBUTE.md). +More information about building and distributing this project in [DISTRIBUTE.md](DISTRIBUTE.md). ### Additional resources diff --git a/gradle/android-nitpick.gradle b/gradle/android-nitpick.gradle index 6db351967..9de46d8cf 100644 --- a/gradle/android-nitpick.gradle +++ b/gradle/android-nitpick.gradle @@ -51,7 +51,7 @@ private def verifyVendorSubmodulePin(def dir, def prefix, def version) { throw new IllegalStateException("${dir} vendor repository is not checked out on the consumed binary's tag.\n" + "Expected commit: " + expectedCommit + "(${prefix + version} tag).\n" + "Actual commit: " + actualCommit + ".\n" + - "If you've updated the version in the dependencies.gradle file, make sure to bump the submodule pin in the platform/android/vendor/ directory to match the release tag.\n" + + "If you've updated the version in the dependencies.gradle file, make sure to bump the submodule pin in the /vendor directory to match the release tag.\n" + "If you've bumped the pin, make sure to verify the version tag prefix in the android-nitpick.gradle file.") } output.close() diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..08419e91e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,26 @@ +{ + "name": "@mapbox/mapbox-gl-native-android", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ejs": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.1.tgz", + "integrity": "sha512-kS/gEPzZs3Y1rRsbGX4UOSjtP/CeJP0CxSNZHYxGfVM/VgLcv0ZqM7C45YyTj2DI2g7+P9Dd24C+IMIg6D0nYQ==", + "dev": true + }, + "esm": { + "version": "3.0.84", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.0.84.tgz", + "integrity": "sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw==", + "dev": true + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..08e60e15e --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "@mapbox/mapbox-gl-native-android", + "version": "1.0.0", + "description": "Renders map tiles with the Mapbox Maps SDK for Android", + "keywords": [ + "mapbox", + "gl" + ], + "repository": { + "type": "git", + "url": "git@github.com:mapbox/mapbox-gl-native-android.git" + }, + "license": "BSD-2-Clause", + "dependencies": {}, + "devDependencies": { + "ejs": "^2.5.7", + "esm": "~3.0.84", + "lodash": "^4.16.4", + "pixelmatch": "^4.0.2" + }, + "engines": { + "node": ">=6" + }, + "scripts": {} +} diff --git a/scripts/generate-license.py b/scripts/generate-license.py index 9e59cb418..c78ba9cba 100644 --- a/scripts/generate-license.py +++ b/scripts/generate-license.py @@ -3,11 +3,11 @@ import os import json -path = os.getcwd() + "/platform/android/" -with open(path + "LICENSE.md", 'w') as licenseFile: +path = os.getcwd() +with open(path + "/LICENSE.md", 'w') as licenseFile: licenseFile.write(" \n") licenseFile.write("## Additional Mapbox GL licenses \n") - with open(path + "MapboxGLAndroidSDK/build/reports/licenses/licenseReleaseReport.json", 'r') as dataFile: + with open(path + "/MapboxGLAndroidSDK/build/reports/licenses/licenseReleaseReport.json", 'r') as dataFile: data = json.load(dataFile) gradleLicensePlugin =""" diff --git a/scripts/generate-style-code.js b/scripts/generate-style-code.js index fa814f89a..652b8a98a 100755 --- a/scripts/generate-style-code.js +++ b/scripts/generate-style-code.js @@ -3,7 +3,7 @@ const fs = require('fs'); const ejs = require('ejs'); -const spec = require('../../../scripts/style-spec'); +const spec = require('../vendor/mapbox-gl-native/scripts/style-spec'); const _ = require('lodash'); // FIXME: https://github.com/mapbox/mapbox-gl-native/issues/15008 @@ -11,7 +11,7 @@ delete spec.layout_circle["circle-sort-key"] delete spec.layout_line["line-sort-key"] delete spec.layout_fill["fill-sort-key"] -require('../../../scripts/style-code'); +require('../vendor/mapbox-gl-native/scripts/style-code'); // Specification parsing // const lightProperties = Object.keys(spec[`light`]).reduce((memo, name) => { @@ -361,34 +361,34 @@ global.supportsPropertyFunction = function (property) { // Template processing // // Java + JNI Light (Peer model) -const lightJava = ejs.compile(fs.readFileSync('platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/light/light.java.ejs', 'utf8'), {strict: true}); -const lightJavaUnitTests = ejs.compile(fs.readFileSync('platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/light.junit.ejs', 'utf8'), {strict: true}); -writeIfModified(`platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/light/Light.java`, lightJava({properties: lightProperties})); -writeIfModified(`platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/LightTest.java`, lightJavaUnitTests({properties: lightProperties})); +const lightJava = ejs.compile(fs.readFileSync('MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/light/light.java.ejs', 'utf8'), {strict: true}); +const lightJavaUnitTests = ejs.compile(fs.readFileSync('MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/light.junit.ejs', 'utf8'), {strict: true}); +writeIfModified(`MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/light/Light.java`, lightJava({properties: lightProperties})); +writeIfModified(`MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/LightTest.java`, lightJavaUnitTests({properties: lightProperties})); // Java + JNI Layers (Peer model) -const layerHpp = ejs.compile(fs.readFileSync('platform/android/src/style/layers/layer.hpp.ejs', 'utf8'), {strict: true}); -const layerCpp = ejs.compile(fs.readFileSync('platform/android/src/style/layers/layer.cpp.ejs', 'utf8'), {strict: true}); -const layerJava = ejs.compile(fs.readFileSync('platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/layer.java.ejs', 'utf8'), {strict: true}); -const layerJavaUnitTests = ejs.compile(fs.readFileSync('platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/layer.junit.ejs', 'utf8'), {strict: true}); +const layerHpp = ejs.compile(fs.readFileSync('src/style/layers/layer.hpp.ejs', 'utf8'), {strict: true}); +const layerCpp = ejs.compile(fs.readFileSync('src/style/layers/layer.cpp.ejs', 'utf8'), {strict: true}); +const layerJava = ejs.compile(fs.readFileSync('MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/layer.java.ejs', 'utf8'), {strict: true}); +const layerJavaUnitTests = ejs.compile(fs.readFileSync('MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/layer.junit.ejs', 'utf8'), {strict: true}); for (const layer of layers) { - writeIfModified(`platform/android/src/style/layers/${layer.type.replace('-', '_')}_layer.hpp`, layerHpp(layer)); - writeIfModified(`platform/android/src/style/layers/${layer.type.replace('-', '_')}_layer.cpp`, layerCpp(layer)); - writeIfModified(`platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/${camelize(layer.type)}Layer.java`, layerJava(layer)); - writeIfModified(`platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/${camelize(layer.type)}LayerTest.java`, layerJavaUnitTests(layer)); + writeIfModified(`src/style/layers/${layer.type.replace('-', '_')}_layer.hpp`, layerHpp(layer)); + writeIfModified(`src/style/layers/${layer.type.replace('-', '_')}_layer.cpp`, layerCpp(layer)); + writeIfModified(`MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/${camelize(layer.type)}Layer.java`, layerJava(layer)); + writeIfModified(`MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/${camelize(layer.type)}LayerTest.java`, layerJavaUnitTests(layer)); } // Java PropertyFactory -const propertiesTemplate = ejs.compile(fs.readFileSync('platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/property_factory.java.ejs', 'utf8'), {strict: true}); +const propertiesTemplate = ejs.compile(fs.readFileSync('MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/property_factory.java.ejs', 'utf8'), {strict: true}); writeIfModified( - `platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/PropertyFactory.java`, + `MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/PropertyFactory.java`, propertiesTemplate({layoutProperties: layoutProperties, paintProperties: paintProperties}) ); // Java Property -const enumPropertyJavaTemplate = ejs.compile(fs.readFileSync('platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/property.java.ejs', 'utf8'), {strict: true}); +const enumPropertyJavaTemplate = ejs.compile(fs.readFileSync('MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/property.java.ejs', 'utf8'), {strict: true}); writeIfModified( - `platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/Property.java`, + `MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/layers/Property.java`, enumPropertyJavaTemplate({properties: enumProperties}) ); diff --git a/scripts/generate-test-code.js b/scripts/generate-test-code.js index 64b38e5ac..e3684d181 100644 --- a/scripts/generate-test-code.js +++ b/scripts/generate-test-code.js @@ -13,11 +13,11 @@ global.camelize = function (str) { }); } -const excludeClasses = JSON.parse(fs.readFileSync('platform/android/scripts/exclude-activity-gen.json', 'utf8')); -const appBasePath = 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity'; -const testBasePath = 'platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/gen'; +const excludeClasses = JSON.parse(fs.readFileSync('scripts/exclude-activity-gen.json', 'utf8')); +const appBasePath = 'MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity'; +const testBasePath = 'MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/gen'; const subPackages = fs.readdirSync(appBasePath); -const ejsConversionTask = ejs.compile(fs.readFileSync('platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/activity.junit.ejs', 'utf8'), {strict: true}); +const ejsConversionTask = ejs.compile(fs.readFileSync('MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/activity.junit.ejs', 'utf8'), {strict: true}); if (!fs.existsSync(testBasePath)){ fs.mkdirSync(testBasePath); diff --git a/scripts/metrics.sh b/scripts/metrics.sh index cc33daf17..a59429b58 100755 --- a/scripts/metrics.sh +++ b/scripts/metrics.sh @@ -4,13 +4,13 @@ set -e set -o pipefail # Track individual architectures -scripts/check_binary_size.js "platform/android/MapboxGLAndroidSDK/build/intermediates/intermediate-jars/release/jni/armeabi-v7a/libmapbox-gl.so" "Android arm-v7" -scripts/check_binary_size.js "platform/android/MapboxGLAndroidSDK/build/intermediates/intermediate-jars/release/jni/arm64-v8a/libmapbox-gl.so" "Android arm-v8" -scripts/check_binary_size.js "platform/android/MapboxGLAndroidSDK/build/intermediates/intermediate-jars/release/jni/x86/libmapbox-gl.so" "Android x86" -scripts/check_binary_size.js "platform/android/MapboxGLAndroidSDK/build/intermediates/intermediate-jars/release/jni/x86_64/libmapbox-gl.so" "Android x86_64" +scripts/check_binary_size.js "MapboxGLAndroidSDK/build/intermediates/intermediate-jars/release/jni/armeabi-v7a/libmapbox-gl.so" "Android arm-v7" +scripts/check_binary_size.js "MapboxGLAndroidSDK/build/intermediates/intermediate-jars/release/jni/arm64-v8a/libmapbox-gl.so" "Android arm-v8" +scripts/check_binary_size.js "MapboxGLAndroidSDK/build/intermediates/intermediate-jars/release/jni/x86/libmapbox-gl.so" "Android x86" +scripts/check_binary_size.js "MapboxGLAndroidSDK/build/intermediates/intermediate-jars/release/jni/x86_64/libmapbox-gl.so" "Android x86_64" # Track overall library size -scripts/check_binary_size.js "platform/android/MapboxGLAndroidSDK/build/outputs/aar/MapboxGLAndroidSDK-release.aar" "Android AAR" +scripts/check_binary_size.js "MapboxGLAndroidSDK/build/outputs/aar/MapboxGLAndroidSDK-release.aar" "Android AAR" if [[ $CIRCLE_BRANCH == master ]]; then # Build source data for http://mapbox.github.io/mapbox-gl-native/metrics/binary-size/ diff --git a/scripts/parse-jacoco-report.py b/scripts/parse-jacoco-report.py index 4d06fda6c..3577947de 100755 --- a/scripts/parse-jacoco-report.py +++ b/scripts/parse-jacoco-report.py @@ -4,7 +4,7 @@ import os import re from io import open -reportPath = os.getcwd() + "/platform/android/MapboxGLAndroidSDK/build/reports/jacoco/jacocoTestReport/jacocoTestReport.xml" +reportPath = os.getcwd() + "/MapboxGLAndroidSDK/build/reports/jacoco/jacocoTestReport/jacocoTestReport.xml" with open(reportPath, 'r', encoding='utf-8') as jacocoReport: line = jacocoReport.readline().strip() diff --git a/scripts/run-render-test.py b/scripts/run-render-test.py index 940ae7a3d..540dbed15 100644 --- a/scripts/run-render-test.py +++ b/scripts/run-render-test.py @@ -3,13 +3,13 @@ import os import shutil -catPath = os.getcwd() + "/platform/android/build/render-test/" +catPath = os.getcwd() + "/build/render-test/" failCounter = 0 testCounter = 0 for cat in os.listdir(catPath): testPath = catPath + cat + "/" for test in os.listdir(testPath): - inputPath = os.getcwd() + "/mapbox-gl-js/test/integration/render-tests/" + cat + "/" + test + inputPath = os.getcwd() + "vendor/mapbox-gl-native/mapbox-gl-js/test/integration/render-tests/" + cat + "/" + test outputPath = testPath + test expected = outputPath + "/expected.png" diff --git a/scripts/validate-license.py b/scripts/validate-license.py index 1c9a153b8..ae8859537 100644 --- a/scripts/validate-license.py +++ b/scripts/validate-license.py @@ -10,7 +10,7 @@ call('cd ../../ && make android-license', shell=True) ## Git diff changes p = Popen(['git', 'diff', '--name-only', 'LICENSE.md'], stdin=PIPE, stdout=PIPE, stderr=PIPE) output, err = p.communicate(b"input data that is passed to subprocess' stdin") -if b"platform/android/LICENSE.md" in output: +if b"LICENSE.md" in output: raise ValueError("""An error ocurred while validating the license generation. Changes were detected to the license generation output but weren't commited. Run make android-license and