summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/basic_upload_apks.py82
-rw-r--r--scripts/build.sh14
-rwxr-xr-xscripts/build_android.sh67
-rw-r--r--scripts/build_linux.sh55
-rw-r--r--scripts/build_tomtom_minimal.sh69
-rw-r--r--scripts/build_tomtom_plugin.sh140
-rw-r--r--scripts/build_win32.sh18
-rw-r--r--scripts/build_wince.sh29
-rwxr-xr-xscripts/ci_sanity_checks.sh66
-rw-r--r--scripts/dbus_tests.py52
-rw-r--r--scripts/generate_contributors.sh52
-rw-r--r--scripts/import_translation.sh69
-rw-r--r--scripts/merge_i18n_update.sh12
-rw-r--r--scripts/pointer-64.pngbin0 -> 1733 bytes
-rwxr-xr-xscripts/pre-commit44
-rw-r--r--scripts/publish.sh35
-rw-r--r--scripts/run_linux_tests.sh66
-rw-r--r--scripts/setup_14.04_requirements.list2
-rw-r--r--scripts/setup_android.sh45
-rw-r--r--scripts/setup_common_requirements.sh6
-rw-r--r--scripts/setup_tomtom_requirements.sh167
-rw-r--r--scripts/setup_wince.sh7
-rw-r--r--scripts/update_download_center.sh106
-rw-r--r--scripts/update_doxygen.sh15
-rw-r--r--scripts/xdotools.sh99
25 files changed, 1317 insertions, 0 deletions
diff --git a/scripts/basic_upload_apks.py b/scripts/basic_upload_apks.py
new file mode 100644
index 000000000..b4b439536
--- /dev/null
+++ b/scripts/basic_upload_apks.py
@@ -0,0 +1,82 @@
+#!/usr/bin/python
+#
+# Copyright 2014 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the 'License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Uploads an apk to the beta track."""
+
+import argparse
+import sys
+from apiclient import sample_tools
+from oauth2client import client
+
+TRACK = 'beta' # Can be 'alpha', beta', 'production' or 'rollout'
+
+# Declare command-line flags.
+argparser = argparse.ArgumentParser(add_help=False)
+argparser.add_argument('package_name',
+ help='The package name. Example: com.android.sample')
+argparser.add_argument('apk_file',
+ nargs='?',
+ default='test.apk',
+ help='The path to the APK file to upload.')
+
+
+def main(argv):
+ # Authenticate and construct service.
+ service, flags = sample_tools.init(
+ argv,
+ 'androidpublisher',
+ 'v2',
+ __doc__,
+ __file__, parents=[argparser],
+ scope='https://www.googleapis.com/auth/androidpublisher')
+
+ # Process flags and read their values.
+ package_name = flags.package_name
+ apk_file = flags.apk_file
+
+ try:
+ edit_request = service.edits().insert(body={}, packageName=package_name)
+ result = edit_request.execute()
+ edit_id = result['id']
+
+ apk_response = service.edits().apks().upload(
+ editId=edit_id,
+ packageName=package_name,
+ media_body=apk_file).execute()
+
+ print 'Version code %d has been uploaded' % apk_response['versionCode']
+
+ track_response = service.edits().tracks().update(
+ editId=edit_id,
+ track=TRACK,
+ packageName=package_name,
+ body={u'versionCodes': [apk_response['versionCode']]}).execute()
+
+ print 'Track %s is set for version code(s) %s' % (
+ track_response['track'], str(track_response['versionCodes']))
+
+ commit_request = service.edits().commit(
+ editId=edit_id, packageName=package_name).execute()
+
+ print 'Edit "%s" has been committed' % (commit_request['id'])
+
+ except client.AccessTokenRefreshError:
+ print ('The credentials have been revoked or expired, please re-run the '
+ 'application to re-authorize')
+
+if __name__ == '__main__':
+ main(sys.argv)
+
diff --git a/scripts/build.sh b/scripts/build.sh
new file mode 100644
index 000000000..536ab7781
--- /dev/null
+++ b/scripts/build.sh
@@ -0,0 +1,14 @@
+set -e
+
+echo "$# build script (s) to run"
+
+for i in $(seq 1 $#); do
+ eval s=\$$i
+ echo "Starting build script #$i : $s"
+ if [ ! -z $CIRCLE_ARTIFACTS ]; then
+ set -o pipefail
+ bash -e $s 2>&1 | tee $CIRCLE_ARTIFACTS/${i}.log
+ else
+ bash -e $s
+ fi
+done
diff --git a/scripts/build_android.sh b/scripts/build_android.sh
new file mode 100755
index 000000000..4b915f35e
--- /dev/null
+++ b/scripts/build_android.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+# Build Navit for Android.
+#
+# This script is to be run from the root of the Navit source tree. It is used by CircleCI as well as for local builds,
+# in order to keep build environments as uniform as possible and CI test results meaningful.
+#
+# It will build Navit for all processor architectures specified in navit/android/build.gradle.
+#
+# When running this script locally, ensure all build dependencies are in place:
+# - Packages required: cmake gettext libsaxonb-java librsvg2-bin pkg-config libprotobuf-c-dev protobuf-c-compiler
+# - Android SDK installed
+# - Environment variable $ANDROID_HOME points to Android SDK install location
+# - Android NDK and CMake components installed via
+# sdkmanager ndk-bundle "cmake;3.6.4111459"
+# (later CMake versions from the SDK repository may also work)
+#
+# If any of the build steps fails, this script aborts with an error immediately.
+
+echo Set up environment
+set - e
+export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin
+export JVM_OPTS="-Xmx3200m"
+export GRADLE_OPTS='-Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"'
+
+echo Run CMake
+cmake ./ -Dvehicle/gpsd_dbus:BOOL=FALSE -Dsvg2png_scaling:STRING=-1,24,32,48,64,96,128,192,256 -Dsvg2png_scaling_nav:STRING=-1,24,32,48,64,96,128,192,256 -Dsvg2png_scaling_flag:STRING=-1,24,32,64,96 -DUSE_PLUGINS=n -DBUILD_MAPTOOL=n -DXSL_PROCESSING=y -DXSLTS=android -DANDROID=y -DSAMPLE_MAP=n || exit 1
+
+echo Process icons
+pushd navit/icons
+make || exit 32
+mkdir ../android/res/drawable-nodpi
+cp ./*.png ../android/res/drawable-nodpi
+pushd ../android/res/drawable-nodpi
+rename 'y/A-Z/a-z/' ./*.png
+popd
+popd
+
+echo Process translations
+pushd po
+make || exit 64
+mkdir ../navit/android/res/raw
+cp ./*.mo ../navit/android/res/raw
+pushd ../navit/android/res/raw
+rename 'y/A-Z/a-z/' ./*.mo
+popd
+popd
+
+echo Process xml config files
+make navit_config_xml || exit 96
+pushd navit
+mkdir -p ./android/assets
+cp -R config ./android/assets/
+popd
+
+echo Chmod permissions
+chmod a+x ./gradlew
+
+echo Download dependencies
+./gradlew -v
+
+echo Build
+./gradlew assembleDebug || exit 128
+
+echo Build finished.
+echo APK should be in "navit/android/build/outputs/apk" and can be installed with
+echo ./gradlew installDebug
+
diff --git a/scripts/build_linux.sh b/scripts/build_linux.sh
new file mode 100644
index 000000000..5d807ec45
--- /dev/null
+++ b/scripts/build_linux.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+set -e
+
+COVERITY_VERSION="2017.07"
+BUILD_PATH="linux"
+
+cmake_opts="-Dgraphics/qt_qpainter:BOOL=FALSE -Dgui/qml:BOOL=FALSE -DSVG2PNG:BOOL=FALSE -DSAMPLE_MAP=n -Dgraphics/gtk_drawing_area:BOOL=TRUE"
+
+[ -d $BUILD_PATH ] || mkdir -p $BUILD_PATH
+pushd $BUILD_PATH
+
+# Build everything
+ echo "Building..."
+cmake ${cmake_opts} ../
+make -j $(nproc --all)
+make package
+
+if [[ "${CIRCLE_PROJECT_USERNAME}" == "navit-gps" && "${CIRCLE_BRANCH}" == "trunk" ]]; then
+ # If we are building the official trunk code, push an update to coverity
+ # Temporarily disabled because Coverity is down.
+ # TODO on the long run, CI should not fail just because the Coverity test did not run,
+ # especially if the test results are not taken into account.
+ #echo "Pushing an update to coverity as we are building the official trunk code."
+ #echo "Downloading coverity..."
+ #curl \
+ # -X POST --data "token=${COVERITY_TOKEN}&project=${CIRCLE_PROJECT_USERNAME}" \
+ # -o /tmp/cov-analysis-linux64-${COVERITY_VERSION}.tar.gz -s \
+ # https://scan.coverity.com/download/linux64
+
+ #echo "Unpacking coverity..."
+ #tar xfz /tmp/cov-analysis-linux64-${COVERITY_VERSION}.tar.gz --no-same-owner -C /usr/local/share/
+ #export PATH=/usr/local/share/cov-analysis-linux64-${COVERITY_VERSION}/bin:$PATH
+
+ #echo "Re-running build with coverity..."
+ #cov-build --dir cov-int make -j $(nproc --all)
+ #tar czvf navit.tgz cov-int
+
+# curl --form token=$COVERITY_TOKEN \
+# --form email=$COVERITY_EMAIL \
+# --form file=@navit.tgz \
+# --form version="${CIRCLE_BRANCH}-$CIRCLE_SHA1" \
+# --form description="${CIRCLE_BRANCH}-$CIRCLE_SHA1" \
+# https://scan.coverity.com/builds?project=$CIRCLE_PROJECT_USERNAME
+
+ # Then update the translation template on launchpad
+ echo "Updating the translation template on launchpad..."
+ sed -i '/INTEGER/d' po/navit.pot
+ cp po/navit.pot $CIRCLE_ARTIFACTS/
+ curl "https://translations.launchpad.net/navit/${CIRCLE_BRANCH}/+translations-upload" -H "$lp_cookie" -H "Referer: https://translations.launchpad.net/navit/${CIRCLE_BRANCH}/+translations-upload" -F file=@po/navit.pot | grep title
+fi
+
+if [[ "$CIRCLE_ARTIFACTS" != "" ]]; then
+ echo "Copying icons to artifacts..."
+ cp -r navit/icons $CIRCLE_ARTIFACTS
+fi
diff --git a/scripts/build_tomtom_minimal.sh b/scripts/build_tomtom_minimal.sh
new file mode 100644
index 000000000..ba6975e0f
--- /dev/null
+++ b/scripts/build_tomtom_minimal.sh
@@ -0,0 +1,69 @@
+#!/usr/bin/env bash
+# this builds navit for tomtom
+# in case you want to build a plugin for tomtom use build_tomtom_plugin.sh instead
+# in case you want to build a standalone system
+# https://github.com/george-hopkins/opentom
+# https://github.com/gefin/opentom
+
+set -e
+
+export ARCH=arm-linux
+export TOMTOM_SDK_DIR=/opt/tomtom-sdk
+mkdir -p $TOMTOM_SDK_DIR >/dev/null 2>&1 || export TOMTOM_SDK_DIR=$HOME/tomtom-sdk
+export PREFIX=$TOMTOM_SDK_DIR/gcc-3.3.4_glibc-2.3.2/$ARCH/sys-root
+export PATH=$TOMTOM_SDK_DIR/gcc-3.3.4_glibc-2.3.2/bin:$PREFIX/bin/:$PATH
+export CFLAGS="-O2 -I$PREFIX/include -I$PREFIX/usr/include"
+export CPPFLAGS="-I$PREFIX/include -I$PREFIX/usr/include"
+export LDFLAGS="-L$PREFIX/lib -L$PREFIX/usr/lib"
+export CC=$ARCH-gcc
+export CXX=$ARCH-g++
+export LD=$ARCH-ld
+export NM="$ARCH-nm -B"
+export AR=$ARCH-ar
+export RANLIB=$ARCH-ranlib
+export STRIP=$ARCH-strip
+export OBJCOPY=$ARCH-objcopy
+export LN_S="ln -s"
+export PKG_CONFIG_LIBDIR=$PREFIX/lib/pkgconfig
+JOBS=$(nproc --all)
+
+mkdir -p build
+pushd build
+cmake ../ -DCMAKE_INSTALL_PREFIX=$PREFIX -DFREETYPE_INCLUDE_DIRS=$PREFIX/include/freetype2/ -Dsupport/gettext_intl=TRUE \
+-DHAVE_API_TOMTOM=TRUE -DXSLTS=tomtom -DAVOID_FLOAT=TRUE -Dmap/mg=FALSE -DUSE_PLUGINS=0 -DCMAKE_TOOLCHAIN_FILE=../Toolchain/$ARCH.cmake \
+-DDISABLE_QT=ON -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n
+make -j$JOBS
+make install
+
+# creating directories
+OUT_PATH="/tmp/tomtom/sdcard"
+[ -d $OUT_PATH ] && rm -rf $OUT_PATH
+mkdir -p $OUT_PATH/navit/bin
+mkdir -p $OUT_PATH/navit/share/fonts
+mkdir -p $OUT_PATH/navit/share/icons
+mkdir -p $OUT_PATH/navit/share/maps
+mkdir -p $OUT_PATH/navit/share/locale
+
+# navit executable
+cp navit/navit $OUT_PATH/navit/bin
+
+# fonts
+cp -r ../navit/fonts/*.ttf $OUT_PATH/navit/share/fonts
+
+# images and xml
+cp $PREFIX/share/navit/icons/*16.png $OUT_PATH/navit/share/icons
+cp $PREFIX/share/navit/icons/*32.png $OUT_PATH/navit/share/icons
+cp $PREFIX/share/navit/icons/*48.png $OUT_PATH/navit/share/icons
+cp $PREFIX/share/navit/icons/*64.png $OUT_PATH/navit/share/icons
+cp $PREFIX/share/navit/icons/nav*.* $OUT_PATH/navit/share/icons
+cp $PREFIX/share/navit/icons/country*.png $OUT_PATH/navit/share/icons
+cd ..
+cp $PREFIX/share/navit/navit.xml ./tomtom480.xml
+
+# locale
+cp -r $PREFIX/share/locale $OUT_PATH/navit/share/locale
+
+
+cd $OUT_PATH
+mkdir /output
+zip -r /output/navitom_minimal.zip navit
diff --git a/scripts/build_tomtom_plugin.sh b/scripts/build_tomtom_plugin.sh
new file mode 100644
index 000000000..47fedb59a
--- /dev/null
+++ b/scripts/build_tomtom_plugin.sh
@@ -0,0 +1,140 @@
+#!/usr/bin/env bash
+# this builds a plugin for tomtom
+# in case you want to build a standalone system
+# https://github.com/george-hopkins/opentom
+# https://github.com/gefin/opentom
+
+set -e
+
+export ARCH=arm-linux
+cp Toolchain/$ARCH.cmake /tmp
+
+# toolchain
+export TOMTOM_SDK_DIR=/opt/tomtom-sdk
+mkdir -p $TOMTOM_SDK_DIR >/dev/null 2>&1 || export TOMTOM_SDK_DIR=$HOME/tomtom-sdk
+export PREFIX=$TOMTOM_SDK_DIR/gcc-3.3.4_glibc-2.3.2/$ARCH/sys-root
+export PATH=$TOMTOM_SDK_DIR/gcc-3.3.4_glibc-2.3.2/bin:$PREFIX/bin/:$PATH
+export CFLAGS="-O2 -I$PREFIX/include -I$PREFIX/usr/include"
+export CPPFLAGS="-I$PREFIX/include -I$PREFIX/usr/include"
+export LDFLAGS="-L$PREFIX/lib -L$PREFIX/usr/lib"
+export CC=$ARCH-gcc
+export CXX=$ARCH-g++
+export LD=$ARCH-ld
+export NM="$ARCH-nm -B"
+export AR=$ARCH-ar
+export RANLIB=$ARCH-ranlib
+export STRIP=$ARCH-strip
+export OBJCOPY=$ARCH-objcopy
+export LN_S="ln -s"
+export PKG_CONFIG_LIBDIR=$PREFIX/lib/pkgconfig
+JOBS=$(nproc --all)
+
+echo "Jobs"
+echo $JOBS
+
+# espeak
+pushd /tmp
+# this one includes the precompiled voices
+wget -nv -c http://freefr.dl.sourceforge.net/project/espeak/espeak/espeak-1.48/espeak-1.48.04-source.zip
+unzip espeak-1.48.04-source.zip
+pushd espeak-1.48.04-source
+sed -i "s/PREFIX=\/usr//g" src/Makefile
+sed -i "s/DATADIR=\/usr\/share\/espeak-data/DATADIR=~\/share\/espeak-data/g" src/Makefile
+sed -i "s/AUDIO = portaudio/#AUDIO = portaudio/g" src/Makefile
+sed -i "s/-fvisibility=hidden//g" src/Makefile
+cat src/Makefile
+make -C src
+pushd src
+make install
+popd # src
+popd # espeak-*
+popd # /tmp
+
+
+# navit
+mkdir -p build
+pushd build
+cmake ../ -DCMAKE_INSTALL_PREFIX=$PREFIX -DFREETYPE_INCLUDE_DIRS=$PREFIX/include/freetype2/ -Dsupport/gettext_intl=TRUE \
+-DHAVE_API_TOMTOM=TRUE -DXSLTS=tomtom -DAVOID_FLOAT=TRUE -Dmap/mg=FALSE -DUSE_PLUGINS=0 -DCMAKE_TOOLCHAIN_FILE=/tmp/$ARCH.cmake \
+-DDISABLE_QT=ON -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n
+make -j$JOBS
+make install
+
+# creating directories
+OUT_PATH="/tmp/tomtom/sdcard"
+[ -d $OUT_PATH ] && rm -rf $OUT_PATH
+mkdir -p $OUT_PATH/navit/bin
+mkdir -p $OUT_PATH/navit/lib
+mkdir -p $OUT_PATH/navit/sdl
+mkdir -p $OUT_PATH/navit/ts
+mkdir -p $OUT_PATH/navit/share/fonts
+mkdir -p $OUT_PATH/navit/share/icons
+mkdir -p $OUT_PATH/navit/share/maps
+mkdir -p $OUT_PATH/navit/share/locale
+
+cp $PREFIX/lib/libfreetype.so.6 $OUT_PATH/navit/lib
+cp $PREFIX/lib/libSDL-1.2.so.0 $OUT_PATH/navit/lib
+cp $PREFIX/lib/libSDL_image-1.2.so.0 $OUT_PATH/navit/lib
+cp $PREFIX/lib/libfreetype.so.6 $OUT_PATH/navit/lib
+cp $PREFIX/lib/libgio-2.0.so $OUT_PATH/navit/lib
+cp $PREFIX/lib/libglib-2.0.so $OUT_PATH/navit/lib/libglib-2.0.so.0
+cp $PREFIX/lib/libgmodule-2.0.so $OUT_PATH/navit/lib/libgmodule-2.0.so.0
+cp $PREFIX/lib/libgobject-2.0.so $OUT_PATH/navit/lib/libgobject-2.0.so.0
+cp $PREFIX/lib/libgthread-2.0.so $OUT_PATH/navit/lib/libgthread-2.0.so.0
+cp $PREFIX/lib/libpng16.so.16 $OUT_PATH/navit/lib
+cp $PREFIX/lib/libts-1.0.so.0 $OUT_PATH/navit/lib
+cp $PREFIX/lib/libxml2.so.2 $OUT_PATH/navit/lib
+cp $PREFIX/lib/libz.so.1 $OUT_PATH/navit/lib
+cp $TOMTOM_SDK_DIR/gcc-3.3.4_glibc-2.3.2/$ARCH/lib/libstdc++.so.5 $OUT_PATH/navit/lib
+cp $PREFIX/etc/ts.conf $OUT_PATH/navit/ts
+
+# flite
+# cp $PREFIX/bin/flite* bin/
+
+# http://forum.navit-project.org/viewtopic.php?f=17&t=568
+arm-linux-gcc -O2 -I$PREFIX/include -I$PREFIX/usr/include ../contrib/tomtom/espeakdsp.c -o $OUT_PATH/navit/bin/espeakdsp
+
+# SDL testvidinfo
+cp $PREFIX/usr/bin/testvidinfo $OUT_PATH/navit/sdl
+
+# navit executable and wrapper
+cp $PREFIX/bin/navit $OUT_PATH/navit/bin
+cp ../contrib/tomtom/navit-wrapper $OUT_PATH/navit/bin/navit-wrapper
+
+# fonts
+cp -r ../navit/fonts/*.ttf $OUT_PATH/navit/share/fonts
+
+# ts
+cp -r $PREFIX/lib/ts $OUT_PATH/navit/lib/
+cp $PREFIX/bin/ts_* $OUT_PATH/navit/ts/
+
+# images and xml
+cp $PREFIX/share/navit/icons/*16.png $OUT_PATH/navit/share/icons
+cp $PREFIX/share/navit/icons/*32.png $OUT_PATH/navit/share/icons
+cp $PREFIX/share/navit/icons/*48.png $OUT_PATH/navit/share/icons
+cp $PREFIX/share/navit/icons/*64.png $OUT_PATH/navit/share/icons
+cp $PREFIX/share/navit/icons/nav*.* $OUT_PATH/navit/share/icons
+cp $PREFIX/share/navit/icons/country*.png $OUT_PATH/navit/share/icons
+cp $PREFIX/share/navit/navit.xml ./tomtom480.xml
+
+
+# locale
+cp -r $PREFIX/share/locale $OUT_PATH/navit/share/locale
+
+# espeak
+cp -r ~/share/espeak-data $OUT_PATH/navit/share/
+cp $PREFIX/bin/espeak $OUT_PATH/navit/bin/
+cp $PREFIX/lib/libespeak.so.1 $OUT_PATH/navit/lib
+
+# add a menu button
+cp -r ../contrib/tomtom/SDKRegistry/ $OUT_PATH/
+cp -r ../contrib/tomtom/ts $OUT_PATH/
+
+convert $PREFIX/share/icons/hicolor/128x128/apps/navit.png -type truecolor -crop 100x100+12+28 -resize 48x48 $OUT_PATH/SDKRegistry/navit.bmp
+convert -background none ../navit/icons/tomtom_plus.svg -resize 80x80 $OUT_PATH/navit/share/icons/tomtom_plus_80_80.png
+convert -background none ../navit/icons/tomtom_minus.svg -resize 80x80 $OUT_PATH/navit/share/icons/tomtom_minus_80_80.png
+
+
+cd $OUT_PATH
+mkdir /output
+zip -r /output/navitom_plugin.zip navit SDKRegistry ts
diff --git a/scripts/build_win32.sh b/scripts/build_win32.sh
new file mode 100644
index 000000000..ce0ec0c07
--- /dev/null
+++ b/scripts/build_win32.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+set -e
+apt-get update && apt-get install -y mingw-w64 mingw-w64-tools \
+ default-jdk nsis libsaxonb-java curl
+
+mkdir win32
+pushd win32
+
+cmake -DTARGET_ARCH=i686-w64-mingw32 -DCMAKE_SYSTEM_NAME=Windows \
+ -Dbinding/python:BOOL=FALSE -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n \
+ -DXSLTS=windows -DCMAKE_TOOLCHAIN_FILE=../Toolchain/mingw.cmake ..
+
+make -j $(nproc --all)
+make -j $(nproc --all) package
+
+popd
+
+cp win32/*.exe $CIRCLE_ARTIFACTS/ \ No newline at end of file
diff --git a/scripts/build_wince.sh b/scripts/build_wince.sh
new file mode 100644
index 000000000..bd8f6feb1
--- /dev/null
+++ b/scripts/build_wince.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+set -e
+
+mkdir -p wince
+pushd wince
+#
+cmake \
+ -DTARGET_ARCH=arm-mingw32ce -DCMAKE_SYSTEM_NAME=WindowsCETest \
+ -DCMAKE_TOOLCHAIN_FILE=../Toolchain/mingw.cmake \
+ -DXSLTS=windows,wince -DCACHE_SIZE=10485760 -Dsvg2png_scaling:STRING=16,32 \
+ -Dsvg2png_scaling_nav:STRING=32 -Dsvg2png_scaling_flag=16 -DSAMPLE_MAP=n ..
+make VERBOSE=1
+
+test -d output && rm -rf output
+mkdir output
+cp navit/navit.exe output/
+cp navit/navit.xml output/
+cp navit/navit_layout*.xml output/
+cp -r locale/ output/
+cp -r navit/icons/ output/
+cp -r ../navit/support/espeak/espeak-data/ output/
+mkdir output/maps
+rm -rf output/icons/CMakeFiles/ icons/cmake_install.cmake
+
+cd output/
+zip -r navit.zip .
+
+cd ../..
+bash ./navit/script/cabify.sh wince/output/navit.cab wince/
diff --git a/scripts/ci_sanity_checks.sh b/scripts/ci_sanity_checks.sh
new file mode 100755
index 000000000..cceec6397
--- /dev/null
+++ b/scripts/ci_sanity_checks.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+set -u
+
+# #####################################################################################################################
+# This script runs on circle CI to verify that the code of the PR has been
+# sanitized before push.
+#
+# WARNING: make sure you commit ALL your changes before running it locally if you ever do it because it will run a git
+# checkout -- which will reset your changes on all files...
+# #####################################################################################################################
+
+return_code=0
+
+# Check if any file has been modified. If yes, that means the best practices
+# have not been followed, so we will fail the job later but print a message here.
+check_diff(){
+ git diff --exit-code
+ code=$?
+ if [[ $code -ne 0 ]]; then
+ echo "[ERROR] You may need to do some cleanup in the files you commited, see the git diff output above."
+ fi
+ git checkout -- .
+ return_code=$(($return_code + $code))
+}
+
+# List the files that are different from the trunk
+from=$(git rev-parse refs/remotes/origin/trunk)
+to=$(git rev-parse HEAD)
+interval=${from}..${to}
+[[ "${from}" == "${to}" ]] && interval=${to}
+
+for f in $(git diff --name-only ${interval} | sort -u); do
+ if [[ "${f}" =~ navit/support/ ]] || [[ "${f}" =~ navit/fib-1\.1/ ]]; then
+ echo "[DEBUG] Skipping file ${f} ..."
+ continue
+ fi
+ if [[ -e "${f}" ]]; then
+
+ # Checks for trailing spaces
+ if [[ "${f: -4}" != ".bat" ]]; then
+ echo "[INFO] Checking for trailing spaces on ${f}..."
+ if [[ "$(file -bi """${f}""")" =~ ^text ]]; then
+ sed 's/\s*$//' -i "${f}"
+ check_diff
+ fi
+ fi
+
+ # Formats any *.c and *.cpp files
+ if [[ "${f: -2}" == ".c" ]] || [[ "${f: -4}" == ".cpp" ]]; then
+ echo "[INFO] Checking for indentation and style compliance on ${f}..."
+ astyle --indent=spaces=4 --style=attach -n --max-code-length=120 -xf -xh "${f}"
+ check_diff
+ fi
+
+ if [[ "${f}" == "navit/navit_shipped.xml" ]]; then
+ echo "[INFO] Checking for compliance with the DTD using xmllint on ${f}..."
+ xmllint --noout --dtdvalid navit/navit.dtd "$f"
+ rc=$?
+ if [[ $rc -ne 0 ]]; then
+ echo "[ERROR] Your ${f} file doesn't validate against the navit/navit.dtd using xmllint"
+ fi
+ fi
+ fi
+done
+
+exit $return_code
diff --git a/scripts/dbus_tests.py b/scripts/dbus_tests.py
new file mode 100644
index 000000000..fe343da32
--- /dev/null
+++ b/scripts/dbus_tests.py
@@ -0,0 +1,52 @@
+import glob
+import dbus
+from dbus import glib
+import gobject
+import sys
+import os
+import time
+from subprocess import call
+from junit_xml import TestSuite, TestCase
+
+
+gobject.threads_init()
+
+glib.init_threads()
+
+bus = dbus.SessionBus()
+
+navit_object = bus.get_object("org.navit_project.navit", # Connection name
+ "/org/navit_project/navit/default_navit" ) # Object's path
+
+iface = dbus.Interface(navit_object, dbus_interface="org.navit_project.navit.navit")
+junit_directory=sys.argv[1]
+if not os.path.exists(junit_directory):
+ os.makedirs(junit_directory)
+
+tests=[]
+start_time = time.time()
+test_cases = TestCase("zoom (factor) expected 512", '', time.time() - start_time, '', '')
+iface.zoom(-2)
+zoom=iface.get_attr("zoom")[1]
+if zoom !=512 :
+ test_cases.add_failure_info('zoom level mismatch. Got '+str(zoom)+', expected 512')
+tests.append(test_cases)
+
+test_cases = TestCase("zoom (factor) expected 1024", '', time.time() - start_time, '', '')
+iface.zoom(-2)
+zoom=iface.get_attr("zoom")[1]
+if zoom !=1024 :
+ test_cases.add_failure_info('zoom level mismatch. Got '+str(zoom)+', expected 1024')
+tests.append(test_cases)
+
+test_cases = TestCase("zoom via set_attr expected 512", '', time.time() - start_time, '', '')
+iface.set_attr("zoom", 512)
+zoom=iface.get_attr("zoom")[1]
+if zoom !=512 :
+ test_cases.add_failure_info('zoom level mismatch. Got '+str(zoom)+', expected 512')
+tests.append(test_cases)
+
+ts = [TestSuite("Navit dbus tests", tests)]
+
+with open(junit_directory+'dbus.xml', 'w+') as f:
+ TestSuite.to_file(f, ts, prettyprint=False)
diff --git a/scripts/generate_contributors.sh b/scripts/generate_contributors.sh
new file mode 100644
index 000000000..43ef47c73
--- /dev/null
+++ b/scripts/generate_contributors.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+set -e
+
+# ###########################################################################################################
+# This script generates a AUTHORS file in the current directory based on the
+# output of the git log command. It splits the contributors in 2 groups:
+# * The "active contributors" are the contributors that authored commits over the last 2 years
+# * The "retired contributors" are the contributors that have authored commits but not over the last 2 years
+# Note: it uses git's mailmap functionnality to get a clean list of users
+# ###########################################################################################################
+
+declare -A CONTRIBUTORS=()
+declare -a authors=()
+TWO_YEARS_AGO=$(date +%s --date="2 years ago")
+retiredTitleWritten=false
+
+git log --encoding=utf-8 --full-history --date=short --use-mailmap "--format=format:%ad;%aN" |
+{
+ echo "# Active contributors:" > AUTHORS
+ while read -r line; do
+ IFS=';'; arrLine=($line); unset IFS;
+ author=${arrLine[1]}
+ commitDate=$(date +%s --date="${arrLine[0]}")
+
+ # Exclude circleci
+ if [[ $author =~ [Cc]ircle[[:space:]]*[Cc][Ii] ]]; then
+ continue
+ fi
+
+ # indicates that the commits are now older than 2 years so we print the
+ # sorted list of active contributors and reset the authors array
+ if [ "$retiredTitleWritten" = false ]; then
+ if [ $TWO_YEARS_AGO -ge $commitDate ]; then
+ IFS=$'\n' sorted=($(sort <<<"${authors[*]}"))
+ printf "%s\n" "${sorted[@]}" >> AUTHORS
+ authors=()
+ echo -e "\n# Retired contributors:" >> AUTHORS
+ retiredTitleWritten=true
+ fi
+ fi
+
+ # using the map as an easy way to check if the author has already been listed
+ if [ -z "${CONTRIBUTORS[${author}]}" ]; then
+ CONTRIBUTORS[${author}]=${arrLine[0]}
+ authors+=("${author}")
+ fi
+ done
+ # We are still in the subprocess scope so we can print the sorted list of
+ # retired contributors
+ IFS=$'\n' sorted=($(sort <<<"${authors[*]}"))
+ printf "%s\n" "${sorted[@]}" >> AUTHORS
+}
diff --git a/scripts/import_translation.sh b/scripts/import_translation.sh
new file mode 100644
index 000000000..fc4117847
--- /dev/null
+++ b/scripts/import_translation.sh
@@ -0,0 +1,69 @@
+#!/bin/bash
+
+# This script imports one translation from launchpad
+# The url to the .po file should be provided as an argument
+
+if [[ $1 == "" ]]; then
+ echo "I need the po URL from Launchpad"
+ exit
+fi
+
+id=$(echo $1|cut -d'/' -f4)
+po=$(echo $1|cut -d'/' -f5|cut -c 13-)
+
+rm -rf navit
+git clone git@github.com:navit-gps/navit.git
+cd navit/
+[ -d po/import_queue ] && exit -1
+mkdir po/import_queue
+i="po/import_queue/$po"
+wget $1 -O po/import_queue/$po
+
+# Let's fix the headers of the .po files in the import queue
+for i in po/import_queue/*.po; do
+ b=$(basename $i)
+ po=${b#*-}
+ code=${po%.*}
+ git checkout -b i18n/$code || exit -1
+ lname=$(head -n1 ${i} | sed 's/# \(.*\) translation.\{0,1\} for navit/\1/')
+ if [[ $lname == "" ]]; then
+ echo "Cannot find the language name in the header of $i"
+ exit 1
+ fi
+ d=$(date +"%Y")
+ echo "# ${lname} translations for navit" > po/${po}.header
+ echo "# Copyright (C) 2006-${d} The Navit Team" >> po/${po}.header
+ echo "# This file is distributed under the same license as the navit package." >> po/${po}.header
+ echo "# Many thanks to the contributors of this translation:" >> po/${po}.header
+ # Build a clean list of the contributors
+ IFS=$'\n'
+ echo "Downloading https://translations.launchpad.net/navit/trunk/+pots/navit/${code}/+details"
+ contributors=$(wget -q https://translations.launchpad.net/navit/trunk/+pots/navit/${code}/+details -O - | grep -E '^ <a href=".+?" class="sprite person">')
+ for user in $contributors; do
+ url=$(echo $user|cut -d'"' -f2)
+ name=$(echo $user|cut -d'>' -f2|cut -d'<' -f1)
+ echo "# $name $url" >> po/${po}.header
+ done
+ echo '' >> po/${po}.header
+ echo 'msgid ""' >> po/${po}.header
+
+ # We remove two tags that just generate noise
+ sed -i '/X-Launchpad-Export-Date/d' ${i}
+ sed -i '/X-Generator/d' ${i}
+ sed -i '/POT-Creation-Date/d' ${i}
+
+ # Let's put the translation from launchpad without the header
+ mv po/${po}.header po/${po}.in
+ sed '1,/msgid ""/ d' ${i} >> po/${po}.in
+
+ # We remove extra whitespaces to make the sanity checks happy
+ sed -i -e 's/ *$//' po/${po}.in
+
+ git status
+ git add po/${po}.in && rm $i
+ git commit -m "Update:i18n:Updated ${lname} translation from launchpad" po/${po}.in
+ git diff trunk
+ echo "Going to push $id/$code in branch i18n/$code, press a key"
+ read -r
+ git push --set-upstream origin i18n/${code}
+done
diff --git a/scripts/merge_i18n_update.sh b/scripts/merge_i18n_update.sh
new file mode 100644
index 000000000..bb0715d5b
--- /dev/null
+++ b/scripts/merge_i18n_update.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+set -e
+
+message=$(git log -1 --pretty=%B)
+git config --global user.name "CircleCI"
+git config --global user.email circleci@navit-project.org
+git rebase trunk
+git checkout trunk
+git pull
+git merge --squash ${CIRCLE_BRANCH}
+git commit -m "${message}"
+git push
diff --git a/scripts/pointer-64.png b/scripts/pointer-64.png
new file mode 100644
index 000000000..904f6878d
--- /dev/null
+++ b/scripts/pointer-64.png
Binary files differ
diff --git a/scripts/pre-commit b/scripts/pre-commit
new file mode 100755
index 000000000..4a07a26a8
--- /dev/null
+++ b/scripts/pre-commit
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+set -eu
+
+# #############################################################################
+# This is a pre-commit hook that allows you to respect the code formatting
+# chosen by the Navit team.
+#
+# To install it, create a folder named "hooks" in the .git directory of this
+# project and just symlink this script inside it. Or run the following script
+# from the root directory of the project:
+# mkdir .git/hooks
+# ln -s ${PWD}/scripts/pre-commit ${PWD}/.git/hooks/
+#
+# This will not work on Windows platform unless you are using cygwin.
+# #############################################################################
+
+files=$(git diff --cached --name-only --diff-filter=ACM)
+git_dir=$(git rev-parse --show-toplevel)
+
+# check for common misspells if misspell is installed
+[[ -n "$(which misspell)" ]] && misspell
+if [[ -z "$(which astyle)" ]]; then
+ echo "Unable to find the astyle executable. Please install it to have automatic formatting of your files."
+fi
+
+# Only work on the files that are part of the commit
+for f in $files; do
+ if [[ -e "${git_dir}/${f}" ]]; then
+ if [[ "${f: -4}" != ".bat" ]]; then
+ # Makes sure to not commit ^M
+ [[ -n "$(which dos2unix)" ]] && dos2unix -s -S -q "${git_dir}/${f}"
+ # Removes trailing spaces
+ [[ "$(file -bi """${git_dir}/${f}""")" =~ ^text ]] && sed 's/\s*$//' -i "${git_dir}/${f}"
+ git add "${git_dir}/${f}"
+ fi
+ # Formats any *.c and *.cpp files
+ if [[ "${f: -2}" == ".c" ]] || [[ "${f: -4}" == ".cpp" ]]; then
+ if [[ -n "$(which astyle)" ]]; then
+ astyle --indent=spaces=4 --style=attach -n --max-code-length=120 -xf -xh "${git_dir}/${f}"
+ git add "${git_dir}/${f}"
+ fi
+ fi
+ fi
+done
diff --git a/scripts/publish.sh b/scripts/publish.sh
new file mode 100644
index 000000000..8b564eaa8
--- /dev/null
+++ b/scripts/publish.sh
@@ -0,0 +1,35 @@
+#!/usr/bin/env bash
+
+if [ -z $CI ];then
+ echo "This Script needs to be run by CI"
+fi
+if [ -z $CIRCLECI ];then
+ echo "This Script needs to be run on CircleCI"
+fi
+if [[ "${CIRCLE_PROJECT_USERNAME}" != "navit-gps" || "${CIRCLE_BRANCH}" != "trunk" ]]; then
+ echo "Only trunk on navit-gps may upload to the Play Store"
+ exit 0
+fi
+
+set -e
+
+ARCH="arm"
+BINPATH="android-arm/navit/android/bin"
+
+export PATH="/opt/android-sdk-linux/build-tools/25.0.1/":$PATH
+
+cd ~/
+git clone git@github.com:navit-gps/infrastructure-blackbox.git
+cd infrastructure-blackbox/keyrings/
+openssl aes-256-cbc -d -in keystore.gpg -k $KEY > ~/.keystore
+openssl aes-256-cbc -d -in client_secrets.gpg -k $KEY > /root/project/scripts/client_secrets.json
+openssl aes-256-cbc -d -in androidpublisher.gpg -k $KEY > /root/project/androidpublisher.dat
+cd ~/project
+
+pip install google-api-python-client
+
+jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -storepass $SP $BINPATH/navit-$CIRCLE_SHA1-${ARCH}-release-unsigned.apk $key_name
+
+zipalign 4 $BINPATH/navit-$CIRCLE_SHA1-${ARCH}-release-unsigned.apk $BINPATH/navit-$CIRCLE_SHA1-${ARCH}-release-signed.apk
+apksigner verify -v $BINPATH/navit-$CIRCLE_SHA1-${ARCH}-release-signed.apk
+python ~/project/scripts/basic_upload_apks.py org.navitproject.navit $BINPATH/navit-$CIRCLE_SHA1-${ARCH}-release-signed.apk --noauth_local_webserver
diff --git a/scripts/run_linux_tests.sh b/scripts/run_linux_tests.sh
new file mode 100644
index 000000000..ff91bed6b
--- /dev/null
+++ b/scripts/run_linux_tests.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+
+linux_test () {
+ # create logs dir
+ mkdir $CIRCLE_ARTIFACTS/logs_${1}
+
+ #run instance of navit and remember pid
+ ./navit >$CIRCLE_ARTIFACTS/logs_${1}/stdout.txt 2>$CIRCLE_ARTIFACTS/logs_${1}/stderr.txt &
+ pid=$!
+
+ # give navit time to come up
+ sleep 5
+
+ # screen shot root window
+ import -window root $CIRCLE_ARTIFACTS/logs_${1}/default.png
+
+ # run tests on X11
+ bash ~/navit/scripts/xdotools.sh ${1}
+
+ # python ~/navit/scripts/dbus_tests.py $CIRCLE_TEST_REPORTS/
+ # dbus-send --print-reply --session --dest=org.navit_project.navit /org/navit_project/navit/default_navit org.navit_project.navit.navit.quit
+
+ # kill navit instance
+ kill $pid
+}
+
+set -e
+
+pushd ~/linux-bin/navit/
+
+# prepare environment by getting a map of berkley
+cat > maps/berkeley.xml << EOF
+<map type="binfile" data="\$NAVIT_SHAREDIR/maps/berkeley.bin" />
+EOF
+wget http://sd-55475.dedibox.fr/berkeley.bin -O maps/berkeley.bin
+
+# back up config
+cp navit.xml navit.xml.bak
+
+# run gtk test
+sed -i -e 's@name="Local GPS" profilename="car" enabled="yes" active="1"@name="Local GPS" profilename="car" enabled="no" active="0"@' navit.xml
+sed -i -e 's@name="Demo" profilename="car" enabled="no" @name="Demo" profilename="car" enabled="yes" follow="1" refresh="1"@' navit.xml
+sed -i -e 's@type="internal" enabled@type="internal" fullscreen="1" font_size="350" enabled@' navit.xml
+sed -i -e 's@libbinding_dbus.so" active="no"@libbinding_dbus.so" active="yes"@' navit.xml
+linux_test gtk_drawing_area
+
+# restore config
+cp navit.xml.bak navit.xml
+# run qt5 qwidget test
+sed -i -e 's@graphics type="gtk_drawing_area"@graphics type="qt5" w="792" h="547" qt5_widget="qwidget"@' navit.xml
+sed -i -e 's@name="Local GPS" profilename="car" enabled="yes" active="1"@name="Local GPS" profilename="car" enabled="no" active="0"@' navit.xml
+sed -i -e 's@name="Demo" profilename="car" enabled="no" @name="Demo" profilename="car" enabled="yes" follow="1" refresh="1"@' navit.xml
+sed -i -e 's@type="internal" enabled@type="internal" fullscreen="1" font_size="350" enabled@' navit.xml
+sed -i -e 's@libbinding_dbus.so" active="no"@libbinding_dbus.so" active="yes"@' navit.xml
+linux_test qt5_widget
+
+# restore config
+cp navit.xml.bak navit.xml
+# run qt5 qml test
+sed -i -e 's@graphics type="gtk_drawing_area"@graphics type="qt5" w="792" h="547" qt5_widget="qml"@' navit.xml
+sed -i -e 's@name="Local GPS" profilename="car" enabled="yes" active="1"@name="Local GPS" profilename="car" enabled="no" active="0"@' navit.xml
+sed -i -e 's@name="Demo" profilename="car" enabled="no" @name="Demo" profilename="car" enabled="yes" follow="1" refresh="1"@' navit.xml
+sed -i -e 's@type="internal" enabled@type="internal" fullscreen="1" font_size="350" enabled@' navit.xml
+sed -i -e 's@libbinding_dbus.so" active="no"@libbinding_dbus.so" active="yes"@' navit.xml
+linux_test qt5_qml
+
diff --git a/scripts/setup_14.04_requirements.list b/scripts/setup_14.04_requirements.list
new file mode 100644
index 000000000..efa122c7e
--- /dev/null
+++ b/scripts/setup_14.04_requirements.list
@@ -0,0 +1,2 @@
+wget unzip cmake build-essential gettext librsvg2-bin util-linux git ssh
+sed astyle libprotobuf-c0-dev protobuf-c-compiler bash
diff --git a/scripts/setup_android.sh b/scripts/setup_android.sh
new file mode 100644
index 000000000..fee29613b
--- /dev/null
+++ b/scripts/setup_android.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+set -e
+
+apt-get update && apt-get install -y software-properties-common
+add-apt-repository -y ppa:openjdk-r/ppa
+apt-get update && apt-get install -y openjdk-8-jdk wget expect curl libsaxonb-java ant ca-certificates python-pip
+apt-get remove -y openjdk-7-jre-headless
+
+export ANDROID_SDK_HOME=/opt/android-sdk-linux
+export ANDROID_HOME=/opt/android-sdk-linux
+
+cd /opt && wget -q https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz -O android-sdk.tgz
+cd /opt && tar -xvzf android-sdk.tgz --no-same-owner
+cd /opt && rm -f android-sdk.tgz
+
+export PATH=${PATH}:${ANDROID_SDK_HOME}/tools:${ANDROID_SDK_HOME}/platform-tools:/opt/tools
+
+echo y | android update sdk --no-ui --all --filter platform-tools | grep 'package installed'
+
+# This is only an workaround to make sure the platform tools are installed
+if [ ! -d ${ANDROID_SDK_HOME}/platform-tools ] && [ -f ${ANDROID_SDK_HOME}/temp/platform-tools_r26.0.2-linux.zip ]; then
+ if [ "$(md5sum ${ANDROID_SDK_HOME}/temp/platform-tools_r26.0.2-linux.zip | cut -d" " -f1)" == "ef952bb31497f7535e061ad0e712bed8" ]; then
+ cd ${ANDROID_SDK_HOME} && unzip ${ANDROID_SDK_HOME}/temp/platform-tools_r26.0.2-linux.zip
+ fi
+fi
+
+#RUN echo y | android update sdk --no-ui --all --filter extra-android-support | grep 'package installed'
+
+echo y | android update sdk --no-ui --all --filter android-25 | grep 'package installed'
+echo y | android update sdk --no-ui --all --filter android-24 | grep 'package installed'
+echo y | android update sdk --no-ui --all --filter android-23 | grep 'package installed'
+echo y | android update sdk --no-ui --all --filter android-18 | grep 'package installed'
+echo y | android update sdk --no-ui --all --filter android-16 | grep 'package installed'
+
+echo y | android update sdk --no-ui --all --filter build-tools-25.0.3 | grep 'package installed'
+echo y | android update sdk --no-ui --all --filter build-tools-25.0.2 | grep 'package installed'
+echo y | android update sdk --no-ui --all --filter build-tools-25.0.1 | grep 'package installed'
+echo y | android update sdk --no-ui --all --filter build-tools-25.0.0 | grep 'package installed'
+echo y | android update sdk --no-ui --all --filter build-tools-24.0.3 | grep 'package installed'
+echo y | android update sdk --no-ui --all --filter build-tools-24.0.2 | grep 'package installed'
+echo y | android update sdk --no-ui --all --filter build-tools-24.0.1 | grep 'package installed'
+echo y | android update sdk --no-ui --all --filter build-tools-23.0.3 | grep 'package installed'
+echo y | android update sdk --no-ui --all --filter build-tools-23.0.2 | grep 'package installed'
+echo y | android update sdk --no-ui --all --filter build-tools-23.0.1 | grep 'package installed'
+
diff --git a/scripts/setup_common_requirements.sh b/scripts/setup_common_requirements.sh
new file mode 100644
index 000000000..0506fff7c
--- /dev/null
+++ b/scripts/setup_common_requirements.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+apt-get update && apt-get install -y wget unzip cmake build-essential \
+ gettext librsvg2-bin util-linux git ssh sed astyle \
+ libprotobuf-c-dev protobuf-c-compiler
diff --git a/scripts/setup_tomtom_requirements.sh b/scripts/setup_tomtom_requirements.sh
new file mode 100644
index 000000000..4e8415daf
--- /dev/null
+++ b/scripts/setup_tomtom_requirements.sh
@@ -0,0 +1,167 @@
+#!/bin/sh
+# this builds navit for tomtom
+
+set -e
+
+# install additional packages to build TT evitonment and navit
+apt-get install -y libglib2.0-dev git autogen autoconf libtool zip
+dpkg --add-architecture i386
+apt-get update
+apt-get install -y libc6:i386 libncurses5:i386 libstdc++6:i386
+
+#remove disturbing build artefact for second run
+rm -f /opt/tomtom-sdk/gcc-3.3.4_glibc-2.3.2/arm-linux/sys-root/bin//glib-genmarshal
+
+export ARCH=arm-linux
+cp Toolchain/$ARCH.cmake /tmp
+
+# toolchain
+export TOMTOM_SDK_DIR=/opt/tomtom-sdk
+mkdir -p $TOMTOM_SDK_DIR >/dev/null 2>&1 || export TOMTOM_SDK_DIR=$HOME/tomtom-sdk
+export PREFIX=$TOMTOM_SDK_DIR/gcc-3.3.4_glibc-2.3.2/$ARCH/sys-root
+export PATH=$TOMTOM_SDK_DIR/gcc-3.3.4_glibc-2.3.2/bin:$PREFIX/bin/:$PATH
+export CFLAGS="-O2 -I$PREFIX/include -I$PREFIX/usr/include"
+export CPPFLAGS="-I$PREFIX/include -I$PREFIX/usr/include"
+export LDFLAGS="-L$PREFIX/lib -L$PREFIX/usr/lib"
+export CC=$ARCH-gcc
+export CXX=$ARCH-g++
+export LD=$ARCH-ld
+export NM="$ARCH-nm -B"
+export AR=$ARCH-ar
+export RANLIB=$ARCH-ranlib
+export STRIP=$ARCH-strip
+export OBJCOPY=$ARCH-objcopy
+export LN_S="ln -s"
+export PKG_CONFIG_LIBDIR=$PREFIX/lib/pkgconfig
+JOBS=$(nproc --all)
+
+echo "Jobs"
+echo $JOBS
+
+mkdir -p ~/tomtom_assets
+
+if ! [ -e "~/tomtom_assets/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz" ]
+ then
+ wget -nv -c https://github.com/navit-gps/dependencies/raw/master/tomtom/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -P ~/tomtom_assets
+fi
+
+if ! test -f "~/tomtom_assets/libpng-1.6.29.tar.gz"
+then
+ wget -nv -c https://github.com/navit-gps/dependencies/raw/master/tomtom/libpng-1.6.29.tar.gz -P ~/tomtom_assets
+fi
+
+# toolchain
+cd /tmp
+mkdir -p $TOMTOM_SDK_DIR
+tar xzf ~/tomtom_assets/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -C $TOMTOM_SDK_DIR
+
+
+# zlib
+cd /tmp
+wget -nv -c http://zlib.net/zlib-1.2.11.tar.gz
+tar xzf zlib-1.2.11.tar.gz
+cd zlib-1.2.11
+./configure --prefix=$PREFIX
+make -j$JOBS
+make install
+
+# libxml
+cd /tmp/
+wget -nv -c http://xmlsoft.org/sources/libxml2-2.7.8.tar.gz
+tar xzf libxml2-2.7.8.tar.gz
+cd libxml2-2.7.8/
+./configure --prefix=$PREFIX --host=$ARCH --without-python
+make -j$JOBS
+make install
+
+# libpng
+cd /tmp/
+tar xzf ~/tomtom_assets/libpng-1.6.29.tar.gz
+cd libpng-1.6.29/
+./configure --prefix=$PREFIX --host=$ARCH
+make -j$JOBS
+make install
+
+
+cd /tmp
+wget -nv -c http://download.savannah.gnu.org/releases/freetype/freetype-2.5.0.tar.gz
+tar xzf freetype-2.5.0.tar.gz
+cd freetype-2.5.0
+./configure --prefix=$PREFIX --host=$ARCH
+make -j$JOBS
+make install
+
+freetype-config --cflags
+
+# glib
+cd /tmp
+wget -nv -c http://ftp.gnome.org/pub/gnome/sources/glib/2.25/glib-2.25.17.tar.gz
+tar xzf glib-2.25.17.tar.gz
+cd glib-2.25.17
+cat > tomtom.cache << EOF
+glib_cv_long_long_format=ll
+glib_cv_stack_grows=no
+glib_cv_uscore=no
+ac_cv_func_posix_getgrgid_r=yes
+ac_cv_func_posix_getpwuid_r=yes
+EOF
+chmod a-w tomtom.cache
+./configure --prefix=$PREFIX --host=$ARCH --cache-file=tomtom.cache
+sed -i "s|cp xgen-gmc gmarshal.c |cp xgen-gmc gmarshal.c \&\& sed -i \"s\|g_value_get_schar\|g_value_get_char\|g\" gmarshal.c |g" gobject/Makefile
+make -j$JOBS
+make install
+
+
+# tslib
+cd /tmp
+rm -rf tslib-svn
+git clone https://github.com/playya/tslib-svn.git
+cd tslib-svn
+sed -i "s|AM_CONFIG_HEADER|AC_CONFIG_HEADERS|g" configure.ac
+sed -i "119i\#ifdef EVIOCGRAB" plugins/input-raw.c
+sed -i "124i\#endif" plugins/input-raw.c
+sed -i "290i\#ifdef EVIOCGRAB" plugins/input-raw.c
+sed -i "294i\#endif" plugins/input-raw.c
+sed -i "s|# module_raw h3600|module_raw h3600|g" etc/ts.conf # tomtom go 710
+./autogen.sh
+./configure --prefix=$PREFIX --host=$ARCH
+make -j$JOBS
+make install
+
+
+cd /tmp
+wget -nv -c http://www.libsdl.org/release/SDL-1.2.15.tar.gz
+tar xzf SDL-1.2.15.tar.gz
+cd SDL-1.2.15
+wget -nv -c http://tracks.yaina.de/source/sdl-fbcon-notty.patch
+patch -p0 -i sdl-fbcon-notty.patch
+./configure --prefix=$PREFIX --host=$ARCH \
+ --disable-esd --disable-cdrom --disable-joystick --disable-video-x11 \
+ --disable-x11-vm --disable-dga --disable-video-x11-dgamouse \
+ --disable-video-x11-xv --disable-video-x11-xinerama --disable-video-directfb \
+ --enable-video-fbcon --disable-audio CFLAGS="$CFLAGS -DFBCON_NOTTY"
+make -j$JOBS
+make install
+
+# sdl test utilities
+cd test
+./configure --prefix=$PREFIX --host=$ARCH
+make testvidinfo
+cp testvidinfo $PREFIX/usr/bin/
+
+# to find sdl-config
+export PATH=$PREFIX/bin:$PATH
+
+# sdl image
+cd /tmp
+wget -nv -c http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.12.tar.gz
+tar xzf SDL_image-1.2.12.tar.gz
+cd SDL_image-1.2.12
+./configure --prefix=$PREFIX --host=$ARCH
+make -j$JOBS
+make install
+
+
+# in the end we only want Navit locale
+rm -r $PREFIX/share/locale
+
diff --git a/scripts/setup_wince.sh b/scripts/setup_wince.sh
new file mode 100644
index 000000000..66f85abaa
--- /dev/null
+++ b/scripts/setup_wince.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+set -e
+
+mkdir -p /var/lib/apt/lists/partial
+apt-get update
+apt-get install -y git-core
+apt-get install -y xsltproc
diff --git a/scripts/update_download_center.sh b/scripts/update_download_center.sh
new file mode 100644
index 000000000..8e4359717
--- /dev/null
+++ b/scripts/update_download_center.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+
+#############################################
+############# Functions #############
+#############################################
+
+cleanup(){
+ if [ -d $TMP_DIR ]; then
+ rm -rf $TMP_DIR
+ fi
+}
+
+#############################################
+############# Functions END #############
+#############################################
+
+echo "Check the requirements"
+
+if [ -z $CI ];then
+ echo "This Script needs to be run by CI"
+fi
+if [ -z $CIRCLECI ];then
+ echo "This Script needs to be run on CircleCI"
+fi
+if [[ "${CIRCLE_PROJECT_USERNAME}" != "navit-gps" || "${CIRCLE_BRANCH}" != "trunk" ]]; then
+ echo "Only trunk on navit-gps may upload to the Download Center"
+ exit 0
+fi
+
+#############################################
+
+echo "Setting up all Variables"
+
+UUID=${RANDOM}-${RANDOM}-${RANDOM}-${RANDOM}
+TMP_DIR=$(mktemp -d)
+CIRCLECI_API_BASE="https://circleci.com/api/v1.1/"
+NAVIT_DOWNLOAD_CENTER_REPO="git@github.com:navit-gps/download-center"
+
+# To keep it generic
+CVS_TYPE="github"
+REPONAME=$CIRCLE_PROJECT_REPONAME
+USERNAME=$CIRCLE_PROJECT_USERNAME
+BUILD_NUM=$CIRCLE_BUILD_NUM
+JOB_NAME=$CIRCLE_JOB
+
+# Build all api urls
+URL_BUILD_ARTIFACTS="${CIRCLECI_API_BASE}project/${CVS_TYPE}/${USERNAME}/${REPONAME}/${BUILD_NUM}/artifacts"
+echo "Artifact URL: $URL_BUILD_ARTIFACTS"
+
+#############################################
+
+echo "Setup trap for cleanup"
+trap cleanup EXIT
+
+#############################################
+
+echo "Init Git Repo"
+export GIT_TERMINAL_PROMPT=0
+cd $TMP_DIR
+mkdir -p ~/.ssh/
+ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
+git clone $NAVIT_DOWNLOAD_CENTER_REPO $UUID
+if [ ! -d $UUID/_data/$JOB_NAME ]; then
+ mkdir -p $UUID/_data/$JOB_NAME
+fi
+cd $UUID/_data/$JOB_NAME
+
+#############################################
+
+echo "Download metadata of this build"
+wget --no-check-certificate $URL_BUILD_ARTIFACTS -O $(printf "%010d" ${BUILD_NUM}).json
+RC=$?
+if [ $RC -ne 0 ]; then
+ echo "wget artifacts download failed"
+ exit 1
+fi
+
+#############################################
+
+echo "Push update to ${NAVIT_DOWNLOAD_CENTER_REPO}"
+git config --global push.default simple
+git config user.name "Circle CI"
+git config user.email "circleci@navit-project.org"
+git add $(printf "%010d" ${BUILD_NUM}).json
+git commit -m "add:artifacts:Add artifacts for build #${BUILD_NUM} with SHA1:${CIRCLE_SHA1}"
+git push
+RC=$?
+if [ $RC -ne 0 ]; then
+ exit 0
+else
+ echo "Push to ${NAVIT_DOWNLOAD_CENTER_REPO} was not successful update repo and try again..."
+ for NUM in {1..10}; do
+ echo "Retry #${NUM} to push to github"
+ git pull
+ git push
+ RC=$?
+ if [ $RC -eq 0 ]; then
+ exit 0
+ fi
+ sleep $(($RANDOM%5)) # sleep between 1 and 5 seconds
+ done
+fi
+
+echo "Failed to push to github"
+exit 100
diff --git a/scripts/update_doxygen.sh b/scripts/update_doxygen.sh
new file mode 100644
index 000000000..7a76f1fd1
--- /dev/null
+++ b/scripts/update_doxygen.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+set -e
+mkdir -p ~/.ssh/
+ssh-keyscan github.com >> ~/.ssh/known_hosts
+git clone -b gh-pages git@github.com:navit-gps/navit.git /root/navit-doc
+cd /root/navit-doc
+git config --global push.default simple
+git config user.name "Circle CI"
+git config user.email "circleci@navit-project.org"
+rsync -vrtza --exclude '.git' --delete /root/project/doc/html/ /root/navit-doc/
+echo "" > .nojekyll
+echo "doxygen.navit-project.org" > CNAME
+git add .
+git commit -am "update:doc:Doxygen update for commit ${CIRCLE_SHA1} [ci skip]" || true
+git push
diff --git a/scripts/xdotools.sh b/scripts/xdotools.sh
new file mode 100644
index 000000000..a9fa65e8d
--- /dev/null
+++ b/scripts/xdotools.sh
@@ -0,0 +1,99 @@
+#!/usr/bin/env bash
+set -e
+sudo apt-get install xdotool
+# Use xinput test 4 when running x11vnc on the circleci server to find mouse coordinates
+
+FRAME_DIR=$CIRCLE_ARTIFACTS/logs_${1}/frames
+LOGS_DIR=$CIRCLE_ARTIFACTS/logs_${1}
+
+[ -d $FRAME_DIR/ ] || mkdir $FRAME_DIR/
+
+event=0
+
+send_event (){
+ file=$(printf "%05d\n" $event)
+
+ import -window root $FRAME_DIR/tmp.png
+ if [[ "$1" == "mousemove" ]]; then
+ composite -gravity NorthWest -geometry +$2+$3 ~/navit/scripts/pointer-64.png $FRAME_DIR/tmp.png $FRAME_DIR/${file}.png
+ else
+ mv $FRAME_DIR/tmp.png $FRAME_DIR/${file}.png
+ fi
+ event=$((event+1))
+ xdotool $@
+ sleep 1
+}
+
+
+# Center the view
+send_event key KP_Enter # Open main menu
+send_event key Down # Select 'Actions'
+send_event key KP_Enter # Validate
+send_event key Down # Scroll to 'Bookmarks'
+send_event key Right # Scroll to 'Former destinations'
+send_event key Right # Select 'Town'
+send_event key KP_Enter # Validate
+# Send 'Berk'
+send_event key b
+send_event key e
+send_event key r
+send_event key k
+send_event key Down # Highlight search area
+send_event key Down # Highlight first result
+send_event key KP_Enter # Validate
+
+# Set the position
+send_event mousemove 482 318 click 1 # Open main menu, clicking on a somewhat random position on the map
+send_event key Down # Select 'Actions'
+send_event key KP_Enter # Validate
+send_event key Down # Scroll to 'Bookmarks'
+send_event key Right # Scroll to 'Former destinations'
+send_event key Right # Select current coordinates
+send_event key KP_Enter # Validate
+
+# Set a destination
+send_event key KP_Enter # Open main menu
+send_event key Down # Select 'Actions'
+send_event key KP_Enter # Validate
+send_event key Down # Scroll to 'Bookmarks'
+send_event key Right # Scroll to 'Former destinations'
+send_event key Right # Select 'Town'
+send_event key KP_Enter # Validate
+# Send 'oakl'
+send_event key o
+send_event key a
+send_event key k
+send_event key l
+send_event key Down # Highlight search area
+send_event key Down # Highlight first result
+send_event key KP_Enter # Validate
+
+# Switch to 3d view
+send_event key KP_Enter # Open main menu
+send_event key Down # Select 'Actions'
+send_event key Right # Select 'Settings'
+send_event key KP_Enter # Validate
+send_event key Down # Select 'Display'
+send_event key KP_Enter # Validate
+send_event key Down # Scroll to 'Layout'
+send_event key Right # Scroll to 'Fullscreen'
+send_event key Right # Select '3d'
+send_event key KP_Enter # Validate
+# Send 'Berk'
+
+# capture 5 seconds of usage
+for i in $(seq 99994 99999); do
+ import -window root $FRAME_DIR/${i}.png
+ sleep 1
+done
+
+# Quit
+send_event key KP_Enter # Open main menu
+send_event key Down # Select 'Actions'
+send_event key Down # Select 'Route'
+send_event key Right # Select 'About'
+send_event key Right # Select 'Quit'
+send_event key KP_Enter # Validate
+
+# Assemble the gif
+convert -delay 100 -loop 0 $FRAME_DIR/*.png $LOGS_DIR/town_search.gif