[Feature]add MT2731_MP2_MR2_SVN388 baseline version

Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.4.4.bb b/meta/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.4.4.bb
new file mode 100644
index 0000000..b31d8eb
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.4.4.bb
@@ -0,0 +1,53 @@
+SUMMARY = "The Geolocation Service"
+DESCRIPTION = "Geoclue is a D-Bus service that provides location information. \
+The primary goal of the Geoclue project is to make creating location-aware applications \
+as simple as possible, while the secondary goal is to ensure that no application \
+can access location information without explicit permission from user."
+LICENSE = "GPLv2.0+"
+SECTION = "console/network"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=8114b83a0435d8136b47bd70111ce5cd"
+
+DEPENDS = "glib-2.0 dbus json-glib libsoup-2.4 intltool-native"
+
+inherit autotools pkgconfig gtk-doc gobject-introspection
+
+SRC_URI = " \
+    http://www.freedesktop.org/software/geoclue/releases/2.4/geoclue-${PV}.tar.xz \
+"
+
+SRC_URI[md5sum] = "d2a5b05f4bad032673fe23afbce27926"
+SRC_URI[sha256sum] = "9c43fb9d0c12067ea64400500abb0640194947d4c2c55e38545afe5d9c5c315c"
+
+export BUILD_SYS
+export HOST_SYS
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+# Without this line, package is delcared a library and named libgeoclue*
+AUTO_LIBNAME_PKGS = ""
+
+PACKAGECONFIG ??= "3g modem-gps cdma nmea lib"
+PACKAGECONFIG[3g] = "--enable-3g-source,--disable-3g-source,modemmanager"
+PACKAGECONFIG[modem-gps] = "--enable-modem-gps-source,--disable-modem-gps-source,modemmanager"
+PACKAGECONFIG[cdma] = "--enable-cdma-source,--disable-cdma-source,modemmanager"
+PACKAGECONFIG[nmea] = "--enable-nmea-source,--disable-nmea-source,avahi"
+PACKAGECONFIG[lib] = "--enable-libgeoclue,--disable-libgeoclue,gobject-introspection"
+
+EXTRA_OECONF += " \
+    --with-dbus-service-user=root \
+    --with-dbus-sys-dir=${sysconfdir}/dbus-1/system.d \
+    --enable-demo-agent=no \
+"
+
+FILES_${PN} += " \
+    ${datadir}/dbus-1/system-services \
+    ${libdir} \
+    ${systemd_unitdir} \
+    ${prefix}/libexec \
+"
+
+FILES_${PN}-dev += " \
+    ${datadir}/dbus-1/interfaces \
+    ${datadir}/gir-1.0 \
+"
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/geos/files/fix-gcc6-isnan.patch b/meta/meta-openembedded/meta-oe/recipes-navigation/geos/files/fix-gcc6-isnan.patch
new file mode 100644
index 0000000..5c5fbd1
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/geos/files/fix-gcc6-isnan.patch
@@ -0,0 +1,22 @@
+--- geos-3.4.2/configure.in.orig	2016-06-08 17:46:43.002250304 +0000
++++ geos-3.4.2/configure.in	2016-06-08 17:57:36.342241606 +0000
+@@ -197,7 +197,7 @@
+ AC_LANG_PUSH([C++])
+ AC_CACHE_CHECK([for isnan], ac_cv_isnan,
+  [AC_TRY_LINK([#include <cmath>],
+- [double x; int y; y = isnan(x);],
++ [double x; int y; y = std::isnan(x);],
+  ac_cv_isnan=yes,
+  ac_cv_isnan=no
+ )])
+--- geos-3.4.2/include/geos/platform.h.in.orig	2016-06-08 14:06:53.910234182 -0400
++++ geos-3.4.2/include/geos/platform.h.in	2016-06-08 14:07:19.298233844 -0400
+@@ -84,7 +84,7 @@
+ #endif
+ 
+ #if defined(HAVE_ISNAN)
+-# define ISNAN(x) (isnan(x))
++# define ISNAN(x) (std::isnan(x))
+ #else
+ # if defined(_MSC_VER)
+ #  define ISNAN(x) _isnan(x)
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/geos/files/geos-config-Add-includedir-variable.patch b/meta/meta-openembedded/meta-oe/recipes-navigation/geos/files/geos-config-Add-includedir-variable.patch
new file mode 100644
index 0000000..645e6f6
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/geos/files/geos-config-Add-includedir-variable.patch
@@ -0,0 +1,39 @@
+From 9d51027c228dafd7db2d0cffca1f0fc695e950fd Mon Sep 17 00:00:00 2001
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Mon, 2 Dec 2013 11:33:26 -0200
+Subject: [PATCH] geos-config: Add includedir variable
+
+This fixes cross-compile as it is easier to mangle the includedir
+during sysroot generation.
+
+Upstream-Status: Pending
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ tools/geos-config.in |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/tools/geos-config.in b/tools/geos-config.in
+index 9b45b5f..1749892 100644
+--- a/tools/geos-config.in
++++ b/tools/geos-config.in
+@@ -1,6 +1,7 @@
+ #!/bin/sh
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
++includedir=@includedir@
+ libdir=@libdir@
+ 
+ usage()
+@@ -38,7 +39,7 @@ case $1 in
+     echo @VERSION@
+      ;;
+     --cflags)
+-    echo -I${prefix}/include 
++    echo -I${includedir}
+       ;;
+     --libs)
+       # TODO: make an alias for --clibs
+-- 
+1.7.10.4
+
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc b/meta/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc
new file mode 100644
index 0000000..2e308b4
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc
@@ -0,0 +1,21 @@
+DESCRIPTION = "GEOS - Geometry Engine, Open Source"
+HOMEPAGE = "http://trac.osgeo.org/geos/"
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+
+SRC_URI = "http://download.osgeo.org/geos/geos-${PV}.tar.bz2"
+
+inherit autotools pkgconfig binconfig
+
+PACKAGES =+ "geoslib ${PN}-c1"
+
+DESCRIPTION_${PN}lib = "Geometry engine for Geographic Information Systems - C++ Library"
+FILES_${PN}lib += "${libdir}/libgeos-${PV}.so"
+
+DESCRIPTION_${PN}-c1 = "Geometry engine for Geographic Information Systems - C Library"
+FILES_${PN}-c1 += "${libdir}/libgeos_c.so.*"
+
+ALLOW_EMPTY_${PN} = "1"
+RDEPENDS_${PN} += "geoslib ${PN}-c1"
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/geos/geos_3.4.2.bb b/meta/meta-openembedded/meta-oe/recipes-navigation/geos/geos_3.4.2.bb
new file mode 100644
index 0000000..7193f8f
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/geos/geos_3.4.2.bb
@@ -0,0 +1,7 @@
+require geos.inc
+
+SRC_URI += "file://geos-config-Add-includedir-variable.patch \
+            file://fix-gcc6-isnan.patch"
+
+SRC_URI[md5sum] = "fc5df2d926eb7e67f988a43a92683bae"
+SRC_URI[sha256sum] = "15e8bfdf7e29087a957b56ac543ea9a80321481cef4d4f63a7b268953ad26c53"
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch b/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch
new file mode 100644
index 0000000..1fa27c2
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch
@@ -0,0 +1,81 @@
+From 1e2cea8945bc2183fbe1a012dcd633a352125952 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 24 Apr 2012 18:45:14 +0200
+Subject: [PATCH] SConstruct: prefix includepy with sysroot and drop sysroot
+ from python_lib_dir
+
+* without PYTHONPATH, distutil's sysconfig returns INCLUDEPY without sysroot prefix
+  and with PYTHONPATH from OE it's pointing to native python dir
+
+    $ export PYTHONPATH=/OE/shr-core/tmp-eglibc/sysroots/om-gta02/usr/lib/python2.7/
+    $ python
+    Python 2.7.2 (default, Apr 18 2012, 09:19:59)
+    [GCC 4.6.2] on linux2
+    Type "help", "copyright", "credits" or "license" for more information.
+    >>> from distutils import sysconfig
+    >>> sysconfig.get_config_vars('INCLUDEPY')
+    ['/OE/shr-core/tmp-eglibc/sysroots/x86_64-linux/usr/include/python2.7']
+    >>>
+    $ unset PYTHONPATH
+    $ python
+    Python 2.7.2 (default, Apr 18 2012, 09:19:59)
+    [GCC 4.6.2] on linux2
+    Type "help", "copyright", "credits" or "license" for more information.
+    >>> from distutils import sysconfig
+    >>> sysconfig.get_config_vars('INCLUDEPY')
+    ['/python2.7']
+    >>> import sysconfig
+    >>> sysconfig.get_config_vars('INCLUDEPY')
+    ['/OE/shr-core/tmp-eglibc/sysroots/x86_64-linux/usr/include/python2.7']
+* python_lib_dir = python_lib_dir.replace(env['sysroot'], '')
+  returns path to target sysroot
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Signed-off-by: Peter A. Bigot <pab@pabigot.com>
+---
+ SConstruct | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/SConstruct b/SConstruct
+index 3318bb48..e1c4f963 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -934,7 +934,7 @@ else:
+ 
+ # Set up configuration for target Python
+ 
+-PYTHON_LIBDIR_CALL = 'sysconfig.get_python_lib()'
++PYTHON_LIBDIR_CALL = 'sysconfig.get_python_lib(plat_specific=1)'
+ 
+ PYTHON_CONFIG_NAMES = ['CC', 'CXX', 'OPT', 'BASECFLAGS',
+                        'CCSHARED', 'LDSHARED', 'SO', 'INCLUDEPY', 'LDFLAGS']
+@@ -1364,7 +1364,7 @@ else:
+                        LINK=ldshared,
+                        SHLIBPREFIX="",
+                        SHLIBSUFFIX=python_config['SO'],
+-                       CPPPATH=[python_config['INCLUDEPY']],
++                       CPPPATH=[os.path.normpath("%s/%s/%s/%s" % (env['sysroot'], env['prefix'], env['includedir'], python_config['INCLUDEPY']))] if env['sysroot'] else [python_config['INCLUDEPY']],
+                        CPPFLAGS=python_config['OPT'],
+                        CFLAGS=python_config['BASECFLAGS'],
+                        CXXFLAGS=python_config['BASECFLAGS'])
+@@ -1662,12 +1662,15 @@ if ((not env['debug'] and not env['profiling'] and not env['nostrip']
+ if not env['python']:
+     python_install = []
+ else:
++    python_libdir = python_libdir.replace(env['sysroot'], '')
+     python_module_dir = python_libdir + os.sep + 'gps'
+     python_extensions_install = python_env.Install(DESTDIR + python_module_dir,
+                                                    python_built_extensions)
+     if ((not env['debug'] and not env['profiling']
+          and not env['nostrip'] and not sys.platform.startswith('darwin'))):
+         python_env.AddPostAction(python_extensions_install, '$STRIP $TARGET')
++    env.AddPostAction(python_extensions_install, '$CHRPATH -r "%s" "$TARGET"' \
++                     % (python_libdir, ))
+ 
+     python_modules_install = python_env.Install(DESTDIR + python_module_dir,
+                                                 python_modules)
+-- 
+2.1.0
+
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0001-include-sys-ttydefaults.h.patch b/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0001-include-sys-ttydefaults.h.patch
new file mode 100644
index 0000000..e91e4e9
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0001-include-sys-ttydefaults.h.patch
@@ -0,0 +1,35 @@
+From f221fa959c80b43c65426500a6836a1b5cf6fe0c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 17 Aug 2016 02:16:12 +0000
+Subject: [PATCH] include sys/ttydefaults.h
+
+This is needed for CTRL definition, as exposed by musl on glibc
+this include file gets pulled indirectly.
+
+/usr/src/debug/gpsd/3.14-r0/gpsd-3.14/gpsmon.c:605: undefined reference to `CTRL'
+clang-3.9: error: linker command failed with exit code 1 (use -v to see invocation)
+scons: *** [gpsmon] Error 1
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Foreward port to gpsd 3.16
+Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
+---
+ gpsmon.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/gpsmon.c b/gpsmon.c
+index 89c43ee2..5cc0dabd 100644
+--- a/gpsmon.c
++++ b/gpsmon.c
+@@ -24,6 +24,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/select.h>
++#include <sys/ttydefaults.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+ 
+-- 
+2.12.0
+
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0004-SConstruct-disable-html-and-man-docs-building-becaus.patch b/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0004-SConstruct-disable-html-and-man-docs-building-becaus.patch
new file mode 100644
index 0000000..ba3d205
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0004-SConstruct-disable-html-and-man-docs-building-becaus.patch
@@ -0,0 +1,51 @@
+From 697e2e9ff97487266d817cdd41bacc83f681e3d7 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sun, 29 Apr 2012 00:05:59 +0200
+Subject: [PATCH 4/4] SConstruct: disable html and man docs building because
+ xmlto-native from OE is broken
+
+It will try to load dtd and fail:
+| xmlto man gpsctl.xml; mv `basename gpsctl.1` gpsctl.1
+| xmlto: /var/lib/jenkins/jobs/shr-core-branches/workspace/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/gpsd-3.4-r2/gpsd-3.4/gpsctl.xml does not validate (status 3)
+| xmlto: Fix document syntax or use --skip-validation option
+| I/O error : Attempt to load network entity http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
+| /var/lib/jenkins/jobs/shr-core-branches/workspace/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/gpsd-3.4-r2/gpsd-3.4/gpsctl.xml:8: warning: failed to load external entity "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"
+|    "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+|                                                               ^
+| I/O error : Attempt to load network entity http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
+| warning: failed to load external entity "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"
+| validity error : Could not load the external subset "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"
+| Document /var/lib/jenkins/jobs/shr-core-branches/workspace/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/gpsd-3.4-r2/gpsd-3.4/gpsctl.xml does not validate
+| mv: cannot stat `gpsctl.1': No such file or directory
+| scons: *** [gpsctl.1] Error 1
+| scons: building terminated because of errors.
+
+Upstream-Status: Inappropriate [disable feature]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Signed-off-by: Peter A. Bigot <pab@pabigot.com>
+---
+ SConstruct | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/SConstruct b/SConstruct
+index 3318bb48..a5bb756d 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -889,11 +889,11 @@ else:
+ 
+     manbuilder = htmlbuilder = None
+     if env['manbuild']:
+-        if config.CheckXsltproc():
++        if False and config.CheckXsltproc():
+             build = "xsltproc --nonet %s $SOURCE >$TARGET"
+             htmlbuilder = build % docbook_html_uri
+             manbuilder = build % docbook_man_uri
+-        elif WhereIs("xmlto"):
++        elif False and WhereIs("xmlto"):
+             xmlto = "xmlto %s $SOURCE || mv `basename $TARGET` " \
+                     "`dirname $TARGET`"
+             htmlbuilder = xmlto % "html-nochunks"
+-- 
+1.8.5.5
+
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-machine-conf_1.0.bb b/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-machine-conf_1.0.bb
new file mode 100644
index 0000000..d2058ba
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-machine-conf_1.0.bb
@@ -0,0 +1,7 @@
+SUMMARY = "Machine specific gpsd config"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/BSD;md5=3775480a712fc46a69647678acb234cb"
+
+# empty by default
+# BSP layers can add stuff like meta-openmoko example:
+#
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.17.bb b/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.17.bb
new file mode 100644
index 0000000..e823e42
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.17.bb
@@ -0,0 +1,137 @@
+SUMMARY = "A TCP/IP Daemon simplifying the communication with GPS devices"
+SECTION = "console/network"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d217a23f408e91c94359447735bc1800"
+DEPENDS = "dbus dbus-glib ncurses python libusb1 chrpath-replacement-native pps-tools"
+PROVIDES = "virtual/gpsd"
+
+EXTRANATIVEPATH += "chrpath-native"
+
+SRC_URI = "${SAVANNAH_GNU_MIRROR}/${BPN}/${BP}.tar.gz \
+    file://0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch \
+    file://0004-SConstruct-disable-html-and-man-docs-building-becaus.patch \
+    file://0001-include-sys-ttydefaults.h.patch \
+"
+SRC_URI[md5sum] = "e0cfadcf4a65dfbdd2afb11c58f4e4a1"
+SRC_URI[sha256sum] = "68e0dbecfb5831997f8b3d6ba48aed812eb465d8c0089420ab68f9ce4d85e77a"
+
+inherit scons update-rc.d python-dir pythonnative systemd bluetooth update-alternatives
+
+INITSCRIPT_PACKAGES = "gpsd-conf"
+INITSCRIPT_NAME = "gpsd"
+INITSCRIPT_PARAMS = "defaults 35"
+
+SYSTEMD_OESCONS = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false',d)}"
+
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)}"
+PACKAGECONFIG[bluez] = "bluez='true',bluez='false',${BLUEZ}"
+PACKAGECONFIG[qt] = "qt='yes',qt='no',qt4-x11-free"
+EXTRA_OESCONS = " \
+    sysroot=${STAGING_DIR_TARGET} \
+    libQgpsmm='false' \
+    debug='true' \
+    strip='false' \
+    chrpath='yes' \
+    systemd='${SYSTEMD_OESCONS}' \
+    libdir='${libdir}' \
+    ${PACKAGECONFIG_CONFARGS} \
+"
+# this cannot be used, because then chrpath is not found and only static lib is built
+# target=${HOST_SYS}
+
+do_compile_prepend() {
+    export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
+    export PKG_CONFIG="PKG_CONFIG_SYSROOT_DIR=\"${PKG_CONFIG_SYSROOT_DIR}\" pkg-config"
+    export STAGING_PREFIX="${STAGING_DIR_HOST}/${prefix}"
+    export LINKFLAGS="${LDFLAGS}"
+}
+
+do_install() {
+    export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}"
+    export PKG_CONFIG="PKG_CONFIG_SYSROOT_DIR=\"${PKG_CONFIG_SYSROOT_DIR}\" pkg-config"
+    export STAGING_PREFIX="${STAGING_DIR_HOST}/${prefix}"
+    export LINKFLAGS="${LDFLAGS}"
+
+    export DESTDIR="${D}"
+    # prefix is used for RPATH and DESTDIR/prefix for instalation
+    ${STAGING_BINDIR_NATIVE}/scons prefix=${prefix} install ${EXTRA_OESCONS}|| \
+      bbfatal "scons install execution failed."
+}
+
+do_install_append() {
+    install -d ${D}/${sysconfdir}/init.d
+    install -m 0755 ${S}/packaging/deb/etc_init.d_gpsd ${D}/${sysconfdir}/init.d/gpsd
+    install -d ${D}/${sysconfdir}/default
+    install -m 0644 ${S}/packaging/deb/etc_default_gpsd ${D}/${sysconfdir}/default/gpsd.default
+
+    #support for udev
+    install -d ${D}/${sysconfdir}/udev/rules.d
+    install -m 0644 ${S}/gpsd.rules ${D}/${sysconfdir}/udev/rules.d/
+    install -d ${D}${base_libdir}/udev/
+    install -m 0755 ${S}/gpsd.hotplug ${D}${base_libdir}/udev/
+
+    #support for python
+    install -d ${D}/${PYTHON_SITEPACKAGES_DIR}/gps
+    install -m 755 ${S}/gps/*.py ${D}/${PYTHON_SITEPACKAGES_DIR}/gps
+
+    #support for systemd
+    install -d ${D}${systemd_unitdir}/system/
+    install -m 0644 ${S}/systemd/${BPN}.service ${D}${systemd_unitdir}/system/${BPN}.service
+    install -m 0644 ${S}/systemd/${BPN}ctl@.service ${D}${systemd_unitdir}/system/${BPN}ctl@.service
+    install -m 0644 ${S}/systemd/${BPN}.socket ${D}${systemd_unitdir}/system/${BPN}.socket
+}
+
+PACKAGES =+ "libgps libgpsd python-pygps gpsd-udev gpsd-conf gpsd-gpsctl gps-utils"
+
+RPROVIDES_${PN}-dbg += "python-pygps-dbg"
+
+FILES_${PN}-dev += "${libdir}/pkgconfdir/libgpsd.pc ${libdir}/pkgconfdir/libgps.pc \
+                    ${libdir}/libQgpsmm.prl"
+
+RDEPENDS_${PN} = "gpsd-gpsctl"
+RRECOMMENDS_${PN} = "gpsd-conf gpsd-udev gpsd-machine-conf"
+
+SUMMARY_gpsd-udev = "udev relevant files to use gpsd hotplugging"
+FILES_gpsd-udev = "${base_libdir}/udev ${sysconfdir}/udev/*"
+RDEPENDS_gpsd-udev += "udev gpsd-conf"
+
+SUMMARY_libgpsd = "C service library used for communicating with gpsd"
+FILES_libgpsd = "${libdir}/libgpsd.so.*"
+
+SUMMARY_libgps = "C service library used for communicating with gpsd"
+FILES_libgps = "${libdir}/libgps.so.*"
+
+SUMMARY_gpsd-conf = "gpsd configuration files and init scripts"
+FILES_gpsd-conf = "${sysconfdir}"
+CONFFILES_gpsd-conf = "${sysconfdir}/default/gpsd.default"
+
+SUMMARY_gpsd-gpsctl = "Tool for tweaking GPS modes"
+FILES_gpsd-gpsctl = "${bindir}/gpsctl"
+
+SUMMARY_gps-utils = "Utils used for simulating, monitoring,... a GPS"
+FILES_gps-utils = "${bindir}/*"
+RDEPENDS_gps-utils = "python-pygps"
+
+SUMMARY_python-pygps = "Python bindings to gpsd"
+FILES_python-pygps = "${PYTHON_SITEPACKAGES_DIR}/*"
+RDEPENDS_python-pygps = " \
+    python-core \
+    python-io \
+    python-threading \
+    python-terminal \
+    python-curses \
+    gpsd \
+    python-json"
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "${BPN}.socket ${BPN}ctl@.service"
+
+
+ALTERNATIVE_${PN} = "gpsd-defaults"
+ALTERNATIVE_LINK_NAME[gpsd-defaults] = "${sysconfdir}/default/gpsd"
+ALTERNATIVE_TARGET[gpsd-defaults] = "${sysconfdir}/default/gpsd.default"
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite-4.2.0/geos-config.patch b/meta/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite-4.2.0/geos-config.patch
new file mode 100644
index 0000000..28bd7da
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite-4.2.0/geos-config.patch
@@ -0,0 +1,17 @@
+https://www.gaia-gis.it/fossil/libspatialite/tktview?name=abeeaad448
+
+Upstream-Status: Submitted [rpm5-devel@rpm5.org]
+
+Index: libspatialite-4.2.0/configure.ac
+===================================================================
+--- libspatialite-4.2.0.orig/configure.ac
++++ libspatialite-4.2.0/configure.ac
+@@ -260,7 +260,7 @@ if test x"$enable_geos" != "xno"; then
+   fi
+   # Extract the linker and include flags
+   GEOS_LDFLAGS=`$GEOSCONFIG --ldflags`
+-  GEOS_CFLAGS=-I`$GEOSCONFIG --includes`
++  GEOS_CFLAGS=`$GEOSCONFIG --cflags`
+   AC_SUBST([GEOS_LDFLAGS])
+   AC_SUBST([GEOS_CFLAGS])	
+   # Ensure that we can parse geos_c.h
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.2.0.bb b/meta/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.2.0.bb
new file mode 100644
index 0000000..d66dc87
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.2.0.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "Library extending the SQLite core to support fully fledged Spatial SQL capabilities"
+HOMEPAGE = "https://www.gaia-gis.it/fossil/libspatialite/"
+SECTION = "libs"
+DEPENDS = "proj geos sqlite3 libxml2 zlib"
+
+LICENSE = "MPLv1.1 & GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0e92e1a36cc384b60f5b31dde0bdd39e"
+
+SRC_URI = "http://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--enable-freexl=no"
+
+# package plugins for SQLite3
+PACKAGES += "${PN}-plugin"
+INSANE_SKIP_${PN}-plugin = "dev-so"
+FILES_${PN}-plugin += "${libdir}/mod_*"
+
+SRC_URI[md5sum] = "83305ed694a77152120d1f74c5151779"
+SRC_URI[sha256sum] = "9f138a6854740c7827fdee53845eb1485fce3e805a7aa9fc9151f8046ebd312d"
+
+SRC_URI += "file://geos-config.patch"
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/0001-orrery-Fix-sprintf-format.patch b/meta/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/0001-orrery-Fix-sprintf-format.patch
new file mode 100644
index 0000000..eb6241f
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/0001-orrery-Fix-sprintf-format.patch
@@ -0,0 +1,26 @@
+From e600d3c09d2f97a197f86e6987d44d142e7b7cdf Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 27 Jun 2017 21:12:17 -0700
+Subject: [PATCH] orrery: Fix sprintf format
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ orrery.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/orrery.c b/orrery.c
+index e3a1f6d..1b31a9f 100644
+--- a/orrery.c
++++ b/orrery.c
+@@ -3767,7 +3767,7 @@ static void drawOptsScreens(void)
+ 		      displayWidth/2 - gdk_string_width(smallFont, scratchString)/2,
+ 		      12, scratchString);
+       for (day = 0; day < 7; day++) {
+-	sprintf(scratchString, dayName[day]);
++	sprintf(scratchString, "%s", dayName[day]);
+ 	gdk_draw_string(pixmap, smallFont, blueGC,
+ 			CAL_DAY_WIDTH/2 + day*CAL_DAY_WIDTH + CAL_LEFT_OFFSET -
+ 			gdk_string_width(smallFont, scratchString)/2,
+-- 
+2.13.2
+
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/orrery.png b/meta/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/orrery.png
new file mode 100644
index 0000000..d9865b7
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/orrery.png
Binary files differ
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/use.GdkPixbuf.patch b/meta/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/use.GdkPixbuf.patch
new file mode 100644
index 0000000..92d194d
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery/use.GdkPixbuf.patch
@@ -0,0 +1,59 @@
+From: Benjamin Deering
+Subject: orrery crashing X
+Date: Thursday, September 2, 2010 - 5:25 pm
+Link: http://kerneltrap.org/mailarchive/openmoko-community/2010/9/3/13218
+
+diff -uNr orrery.orig//orrery.c orrery/orrery.c
+--- orrery.orig//orrery.c	2009-11-30 06:59:44.000000000 +0100
++++ orrery/orrery.c	2010-11-15 22:33:17.000000000 +0100
+@@ -1238,12 +1238,44 @@
+     }
+     currentEntry = currentEntry->forwardPointer;
+   }
+-  if (nDarkGreyPoints > 0)
+-    gdk_draw_points(pixmap, darkGreyGC, darkGreyPoints, nDarkGreyPoints);
+-  if (nGreyPoints > 0)
+-    gdk_draw_points(pixmap, greyGC, greyPoints, nGreyPoints);
+-  if (nWhitePoints > 0)
+-    gdk_draw_points(pixmap, whiteGC, whitePoints, nWhitePoints);
++  GdkPixbuf* starDrawingBuf = gdk_pixbuf_get_from_drawable( NULL,
++                                                            pixmap,
++                                                            gdk_colormap_get_system()
++                                                            , 0, 0, 0, 0, displayWidth, displayHeight);
++  g_assert (gdk_pixbuf_get_bits_per_sample (starDrawingBuf) == 8);
++  guchar* p;
++  int rowstride = gdk_pixbuf_get_rowstride (starDrawingBuf);
++  guchar* pixels = gdk_pixbuf_get_pixels (starDrawingBuf);
++  int n_channels = gdk_pixbuf_get_n_channels (starDrawingBuf);
++  GdkGCValues starGCval;
++  GdkColor starColor;
++  int pointNum;
++  gdk_gc_get_values(darkGreyGC, &starGCval);
++  gdk_colormap_query_color( gdk_gc_get_colormap(darkGreyGC),starGCval.foreground.pixel, &starColor );
++  for( pointNum = 0; pointNum < nDarkGreyPoints; pointNum++) {
++    p = pixels + darkGreyPoints[pointNum].y * rowstride + darkGreyPoints[pointNum].x * n_channels;
++    p[0] = starColor.red & 0xff;
++    p[1] = starColor.green & 0xff;
++    p[2] = starColor.blue & 0xff;
++  }
++  gdk_gc_get_values(greyGC, &starGCval);
++  gdk_colormap_query_color( gdk_gc_get_colormap(greyGC), starGCval.foreground.pixel, &starColor );
++  for( pointNum = 0; pointNum < nGreyPoints; pointNum++) {
++    p = pixels + greyPoints[pointNum].y * rowstride + greyPoints[pointNum].x * n_channels;
++    p[0] = starColor.red & 0xff;
++    p[1] = starColor.green & 0xff;
++    p[2] = starColor.blue & 0xff;
++  }
++  gdk_gc_get_values(whiteGC, &starGCval);
++  gdk_colormap_query_color( gdk_gc_get_colormap(whiteGC), starGCval.foreground.pixel, &starColor );
++  for( pointNum = 0; pointNum < nWhitePoints; pointNum++) {
++    p = pixels + whitePoints[pointNum].y * rowstride + whitePoints[pointNum].x * n_channels;
++    p[0] = starColor.red & 0xff;
++    p[1] = starColor.green & 0xff;
++    p[2] = starColor.blue & 0xff;
++  }
++  gdk_draw_pixbuf ( pixmap , NULL , starDrawingBuf,
++            0, 0, 0, 0, displayWidth, displayHeight, GDK_RGB_DITHER_NORMAL, 0, 0 ) ;
+ }
+ 
+ void makeTimeString(char *string)
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb b/meta/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb
new file mode 100644
index 0000000..010f65f
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Astronomical application which displays the night sky"
+HOMEPAGE    = "http://projects.openmoko.org/projects/orrery/"
+SECTION = "x11/scientific"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://orrery.c;endline=25;md5=d792bdf2b591972da175aecc38d88cfe"
+DEPENDS = "gtk+"
+
+inherit distro_features_check autotools-brokensep pkgconfig
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI = "http://projects.openmoko.org/frs/download.php/923/orrery_2.7_clean.tar.gz \
+           file://orrery.png \
+           file://use.GdkPixbuf.patch \
+           file://0001-orrery-Fix-sprintf-format.patch \
+           "
+
+SRC_URI[md5sum]    = "bd62a33e7554ee1030313dfcdefcda8b"
+SRC_URI[sha256sum] = "645166a5e05b2064ab630534a514697fc47b681951e7fe1d635c259cbdf7a5e6"
+
+S = "${WORKDIR}/${BPN}"
+
+do_configure_prepend() {
+    # fix DSO issue with binutils-2.22
+    sed -i 's/ -lrt/ -lrt -lm/g' ${S}/Makefile.am
+}
+do_install_append() {
+    install -d ${D}${datadir}/orrery
+    cp -R --no-dereference --preserve=mode,links -v ${S}/data/* ${D}${datadir}/orrery
+    chown -R root:root ${D}${datadir}/orrery
+    install -d ${D}${datadir}/icons
+    install -m 0755 ${WORKDIR}/orrery.png ${D}${datadir}/icons
+}
+
+FILES_${PN} += "${datadir}/icons/orrery.png"
diff --git a/meta/meta-openembedded/meta-oe/recipes-navigation/proj/proj_4.9.3.bb b/meta/meta-openembedded/meta-oe/recipes-navigation/proj/proj_4.9.3.bb
new file mode 100644
index 0000000..f45f894
--- /dev/null
+++ b/meta/meta-openembedded/meta-oe/recipes-navigation/proj/proj_4.9.3.bb
@@ -0,0 +1,14 @@
+SUMMARY = "PROJ.4 - Cartographic Projections library"
+HOMEPAGE = "http://trac.osgeo.org/proj/"
+SECTION = "libs"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=74d9aaec5fa0cd734341e8c4dc91b608"
+
+SRC_URI = "http://download.osgeo.org/proj/proj-${PV}.tar.gz"
+SRC_URI[md5sum] = "d598336ca834742735137c5674b214a1"
+SRC_URI[sha256sum] = "6984542fea333488de5c82eea58d699e4aff4b359200a9971537cd7e047185f7"
+
+inherit autotools pkgconfig lib_package
+
+FILES_${PN} += "${datadir}/proj"