From ed519c68568e5c6826f2b6660fbb054e6f979198 Mon Sep 17 00:00:00 2001 From: Matthew Hague Date: Sat, 30 Jun 2018 15:21:10 +0100 Subject: [PATCH] Update to osmand 3.0.4 This also include a fix to Persian fonts, with a patched srclib for icu. Fixes #1254. Also adjusted build to ensure OsmAnd binary snapshots not downloaded. Added sha256sum checks to external source tarball downloads in core-legacy. Moved external skia github fetch to osmand-external-skia srclib. --- metadata/net.osmand.plus.txt | 89 ++++++++++++++++++++++++++++++-- srclibs/icu50-2-1-patched.txt | 2 + srclibs/osmand-external-skia.txt | 2 + 3 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 srclibs/icu50-2-1-patched.txt create mode 100644 srclibs/osmand-external-skia.txt diff --git a/metadata/net.osmand.plus.txt b/metadata/net.osmand.plus.txt index 26a1cfb0a2..7de56893d7 100644 --- a/metadata/net.osmand.plus.txt +++ b/metadata/net.osmand.plus.txt @@ -476,6 +476,66 @@ Build:3.0.3,303 popd ndk=r11c +Build:3.0.4,304 + commit=a7d4e54d09e6e366686beac50a40f06b92443a40 + subdir=android/OsmAnd + submodules=yes + sudo=apt-get update && \ + apt-get install --yes -t jessie-backports swig + gradle=full,legacy,fat + srclibs=icu50-2-1-patched@0d825a9779eeb8ee35977ddf8bb4bea4119bf638,osmand-external-skia@chromium-41.0.2272.118 + rm=android/OsmAnd-java/libs/*.jar,android/OsmAnd-java/test/libs/*.jar,android/OsmAnd/ant-lib/*.jar,android/OsmAnd/libs/*.jar,android/OsmAndCore-sample + prebuild=sed -i -e "/.*OsmAndCore.*SNAPSHOT.*/d" ../OsmAnd/build.gradle && \ + sed -i -e "/ivy {/,+6d" ../OsmAnd/build.gradle && \ + sed -i -e '/qt.*Compile/d' -e '/com.google.firebase/d' build.gradle ../plugins/Osmand-ParkingPlugin/build.gradle ../plugins/Osmand-SRTMPlugin/build.gradle ../plugins/Osmand-Skimaps/build.gradle ../plugins/Osmand-Nautical/build.gradle && \ + sed -i -e "s/System.getenv(\"APK_VERSION\")/\"$$VERSION$$\"/g" build.gradle && \ + sed -i -e "s/System.getenv(\"APK_NUMBER_VERSION\")/\"$$VERCODE$$\"/g" build.gradle && \ + sed -i -e "s/System.getenv(\"APP_FEATURES\")/\"+play_market +gps_status -parking_plugin -blackberry -amazon -route_nav\"/g" build.gradle && \ + sed -i -e "s/System.getenv(\"APP_NAME\")/\"OsmAnd~\"/g" build.gradle && \ + sed -i -e "s/System.getenv(\"TARGET_APP_NAME\")/\"OsmAnd~\"/g" build.gradle && \ + sed -i -e '/com.android.vending.BILLING/d' AndroidManifest.xml && \ + sed -i -e '/javaMaxHeapSize/s/4g/1536m/g' build.gradle && \ + sed -i -e "s/compile fileTree.*/ compile fileTree(include: ['icu4j.jar'], dir: 'libs')\n compile 'commons-logging:commons-logging:1.1.1'\n compile group: 'net.sf.trove4j', name: 'trove4j', version: '3.0.3'\n compile 'org.json:json:20090211'\n compile 'it.unibo.alice.tuprolog:tuprolog:3.2.1'\n compile 'net.sf.kxml:kxml2:2.3.0'\n compile 'org.beanshell:bsh-core:2.0b4'\n compile 'fr.univ-valenciennes:bzip2:1.0'\n compile 'com.moparisthebest:junidecode:0.1.1'\n compile 'com.vividsolutions:jts-core:1.14.0'/" ../OsmAnd-java/build.gradle && \ + sed -i -e "s/implementation fileTree.*/implementation fileTree(include: ['classes.jar','icu4j.jar'], dir: 'libs')\n implementation group: 'net.sf.trove4j', name: 'trove4j', version: '3.0.3'\n/" build.gradle && \ + sed -i -e "s/, ':OsmAndCore-sample'//" ../settings.gradle && \ + pushd ../../core-legacy/externals && \ + sed -i "s/# Extract/sha256sum \$SRCLOC\/upstream.tar.gz | grep 823705472f816df21c8f6aa026dd162b280806838bb55b3432b0fb1fcca7eb86 || { echo 'Failed checksum' 1>\&2; exit; }/" expat/configure.sh && \ + sed -i "s/# Extract/sha256sum \$SRCLOC\/upstream.tar.bz2 | grep 0c8e242c33c45928de560d7d595db06feb41d1b22167e37260ceabe72f9e992f || { echo 'Failed checksum' 1>\&2; exit; }/" freetype/configure.sh && \ + sed -i "s/# Extract/sha256sum \$SRCLOC\/upstream.tar.bz2 | grep f6c9dea12e41d00e253f7465d714d09248a8bcbed3415c25fd9ce50a1cdded6 || { echo 'Failed checksum' 1>\&2; exit; }/" giflib/configure.sh && \ + sed -i "s/# Extract/sha256sum \$SRCLOC\/upstream.tar.gz | grep 00029b1473f0f0ea72fbca3230e8cb25797fbb27e58ae2e46bb8bf5a806fe0b3 || { echo 'Failed checksum' 1>\&2; exit; }/" jpeg/configure.sh && \ + sed -i "s/# Extract/sha256sum \$SRCLOC\/upstream.tar.bz2 | grep 6e761e584e5d72d72fc80923e7851a468bf86538456e304aea401b99038ca92 || { echo 'Failed checksum' 1>\&2; exit; }/" libpng/configure.sh && \ + sed -i "s/# Extract/sha256sum \$SRCLOC\/upstream.tar.bz2 | grep 13bfc5ae543cf3aa180ac2485c0bc89495e3ae711fc6fab4f8ffe90dfb4bb677 || { echo 'Failed checksum' 1>\&2; exit; }/" protobuf/configure.sh && \ + sed -i "s/# Extract/sha256sum \$SRCLOC\/upstream.tar.bz2 | grep 9e2e9658dfb036900da6ea0267a737fa3c4eee6666776d378c79d52e9334934 || { echo 'Failed checksum' 1>\&2; exit; }/" zlib/configure.sh && \ + sed -i "/# Download/,+8d" skia/configure.sh && \ + sed -i "s/# Patch/cp -r $(echo $$osmand-external-skia$$ | sed 's/\//\\\//g') \$SRCLOC\/upstream.original/" skia/configure.sh && \ + popd + scanignore=help/website/help/map-legend_nautical.png,help/website/help/map-legend_default.png,help/website/images/dvr/4p-en.png,help/website/images/blog/ios-2-0/con-scrn-1.png,help/website/images/blog/ios-2-0/con-scrn-2.png,help/website/images/blog/ios-2-0/interf-2.png,help/website/images/blog/ios-2-0/navigat-6.png,android/OsmAnd/assets/fonts/RobotoSlab-Regular.ttf + build=pushd ../../OsmAnd-core/wrappers/android/ && \ + sed -i -e "/Native/d" settings.gradle && \ + sed -i -e "/Native/d" build.gradle && \ + sed -i -e "/compileTask.*copyNdkSharedLibs/d" build.gradle && \ + sed -i -e "/compileTask.*copyQtSharedLibs/d" build.gradle && \ + sed -i -e "/compileTask.*copyQtJarLibs/d" build.gradle && \ + gradle210 assembleRelease && \ + cd build/outputs/aar && \ + unzip OsmAndCore_android-release.aar && \ + cp classes.jar ../../../../../../android/OsmAnd/libs/ && \ + popd && \ + pushd $$icu50-2-1-patched$$/icu4j && \ + ant jar && \ + zip -d icu4j.jar "com/ibm/icu/impl/data/icudt50b/brkitr/*" && \ + zip -d icu4j.jar "com/ibm/icu/impl/data/icudt50b/coll/*" && \ + zip -d icu4j.jar "com/ibm/icu/impl/data/icudt50b/curr/*" && \ + zip -d icu4j.jar "com/ibm/icu/impl/data/icudt50b/lang/*" && \ + zip -d icu4j.jar "com/ibm/icu/impl/data/icudt50b/rbnf/*" && \ + zip -d icu4j.jar "com/ibm/icu/impl/data/icudt50b/region/*" && \ + zip -d icu4j.jar "com/ibm/icu/impl/data/icudt50b/translit/*" && \ + zip -d icu4j.jar "com/ibm/icu/impl/data/icudt50b/zone/*" && \ + popd && \ + cp $$icu50-2-1-patched$$/icu4j/icu4j.jar libs/ && \ + cp $$icu50-2-1-patched$$/icu4j/icu4j.jar ../OsmAnd-java/libs/ + ndk=r11c + Maintainer Notes: Update CV only after sucessfully built and tested. @@ -496,7 +556,8 @@ android/OsmAnd submodule as libs/classes.jar. A couple of rogue pngs are scan-ignored. In the prebuild, the very first sed command prevents gradle downloading -OsmAndCore_android.*SNAPSHOT.jar, which contains the files built above. +OsmAndCore*SNAPSHOT.(j|a)ar, which contains the files built above. To +be extra sure the next command removes the osmand ivy repository. Many other jar files are distributed, prebuilt, with the OsmAnd submodules. The rm= command removes all of these, and replacements are sought through @@ -507,17 +568,35 @@ Replacement of jar files in OsmAnd-java where versions did not match: commons-logging-1.1.1.jar replaced with commons-logging:commons-logging:1.1.1 gnu-trove-osmand.jar replaced with net.sf.trove4j:trove4j:3.0.3 tuprolog.jar replaced with it.unibo.alice.tuprolog:tuprolog:3.2.1 - icu4j-49_1_patched.jar replaced with compile 'com.ibm.icu:icu4j:50.1' in the hope that whatever patch was applied appears also in 50.1. bzip2-20090327.jar replaced with compile 'fr.univ-valenciennes:bzip2:1.0' junidecode-0.1.jar replaced with compile 'com.moparisthebest:junidecode:0.1.1' simple-logging.jar not replaced (subset of commons-logging-1.1.1.jar) -The final sed command removes OsmAndCore-sample from the settings to prevent +icu4j-49_1_patched.jar was replaced with the icu50-2-1 srclib which is a +mirror of the nearest icu version i could find with the patch applied +(http://bugs.icu-project.org/trac/ticket/12021). The end of the build +process compiles this library and removes a bunch of unwanted data +files. + +The prebuild finishes in the core-legacy/externals directory. Just before this +there is a sed command removes OsmAndCore-sample from the settings to prevent its build (which also downloads prebuilt binaries). OsmAndCore-sample is demo code that is not needed. + +In core-legacy/externals the build fetches in source tarballs from external +sources. Checksums for these need to be verified but are not. Hence the lines +that fallow add sha256sum checks to the build scripts where tarballs are +downloaded. As part of this, the skia library, which was fetched from a git +repo, has been made a srclib. Note, we have to adjust the build script here +because if we link to the srclib before building, it will be deleted (see +skia/configure.sh). (Note, have to be careful with paths, because the scripts +are run from the android/OsmAnd directory, with $SRCLOC being the location of +the configure script.) + +For all externals, check that the added checksums cover all, and that the skia version hasn't changed (it can be found in skia/configure.sh before the sed commands are applied). . Auto Update Mode:None Update Check Mode:None -Current Version:3.0.3 -Current Version Code:303 +Current Version:3.0.4 +Current Version Code:304 diff --git a/srclibs/icu50-2-1-patched.txt b/srclibs/icu50-2-1-patched.txt new file mode 100644 index 0000000000..1272451327 --- /dev/null +++ b/srclibs/icu50-2-1-patched.txt @@ -0,0 +1,2 @@ +Repo Type:git +Repo:https://gitlab.com/Hague/icu-release-50-2-1-patched-mirror.git diff --git a/srclibs/osmand-external-skia.txt b/srclibs/osmand-external-skia.txt new file mode 100644 index 0000000000..4982cfbb0d --- /dev/null +++ b/srclibs/osmand-external-skia.txt @@ -0,0 +1,2 @@ +Repo Type:git +Repo:https://github.com/osmandapp/OsmAnd-external-skia.git