diff --git a/meta-openembedded/meta-demo/recipes-devtools/python/python-engineio.inc b/meta-openembedded/meta-demo/recipes-devtools/python/python-engineio.inc
new file mode 100644
index 0000000..c399d7d
--- /dev/null
+++ b/meta-openembedded/meta-demo/recipes-devtools/python/python-engineio.inc
@@ -0,0 +1,13 @@
+SUMMARY = "Engine.IO server"
+HOMEPAGE = "https://github.com/miguelgrinberg/python-engineio/"
+SECTION = "devel/python"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=42d0a9e728978f0eeb759c3be91536b8"
+
+inherit pypi
+
+PYPI_PACKAGE = "python-engineio"
+
+SRC_URI[md5sum] = "011a61f1ee84755043cf862c8cc24f21"
+SRC_URI[sha256sum] = "b2756ce53076163eb24f59c1d1a903ac72f071ad4fb7b3ef6dab1b1b9ae9a44f"
diff --git a/meta-openembedded/meta-demo/recipes-devtools/python/python-engineio_3.5.0.bb b/meta-openembedded/meta-demo/recipes-devtools/python/python-engineio_3.5.0.bb
new file mode 100644
index 0000000..7dd6ec0
--- /dev/null
+++ b/meta-openembedded/meta-demo/recipes-devtools/python/python-engineio_3.5.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-engineio.inc
diff --git a/meta-openembedded/meta-demo/recipes-devtools/python/python-flask-socketio.inc b/meta-openembedded/meta-demo/recipes-devtools/python/python-flask-socketio.inc
new file mode 100644
index 0000000..251d13e
--- /dev/null
+++ b/meta-openembedded/meta-demo/recipes-devtools/python/python-flask-socketio.inc
@@ -0,0 +1,18 @@
+SUMMARY = "Socket.IO integration for Flask applications"
+HOMEPAGE = "https://github.com/miguelgrinberg/Flask-SocketIO/"
+SECTION = "devel/python"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=38cc21254909604298ce763a6e4440a0"
+
+inherit pypi
+
+PYPI_PACKAGE = "Flask-SocketIO"
+
+SRC_URI[md5sum] = "298965a43f6534e8a5b24d1ba1fc4186"
+SRC_URI[sha256sum] = "8d8f9f104db5ddff1b06ba322d8e158881d590144199c993fe26cf53218c7edd"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-flask \
+    ${PYTHON_PN}-socketio \
+    "
diff --git a/meta-openembedded/meta-demo/recipes-devtools/python/python-flask-socketio_3.3.2.bb b/meta-openembedded/meta-demo/recipes-devtools/python/python-flask-socketio_3.3.2.bb
new file mode 100644
index 0000000..3b9ad33
--- /dev/null
+++ b/meta-openembedded/meta-demo/recipes-devtools/python/python-flask-socketio_3.3.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-flask-socketio.inc
diff --git a/meta-openembedded/meta-demo/recipes-devtools/python/python-socketio.inc b/meta-openembedded/meta-demo/recipes-devtools/python/python-socketio.inc
new file mode 100644
index 0000000..a23e780
--- /dev/null
+++ b/meta-openembedded/meta-demo/recipes-devtools/python/python-socketio.inc
@@ -0,0 +1,17 @@
+SUMMARY = "Socket.IO server"
+HOMEPAGE = "https://github.com/miguelgrinberg/python-socketio/"
+SECTION = "devel/python"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=42d0a9e728978f0eeb759c3be91536b8"
+
+inherit pypi
+
+PYPI_PACKAGE = "python-socketio"
+
+SRC_URI[md5sum] = "0b57da61a9464d2e0dc9a8d0164d86d2"
+SRC_URI[sha256sum] = "64feb0817f1bf7e3e7fc05f6f65e28d76146d8061cb7de25b63502717f80e908"
+
+RDEPENDS_${PN} += "\
+    ${PYTHON_PN}-engineio \
+    "
diff --git a/meta-openembedded/meta-demo/recipes-devtools/python/python-socketio_4.0.0.bb b/meta-openembedded/meta-demo/recipes-devtools/python/python-socketio_4.0.0.bb
new file mode 100644
index 0000000..e25a6b3
--- /dev/null
+++ b/meta-openembedded/meta-demo/recipes-devtools/python/python-socketio_4.0.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools
+require python-socketio.inc
diff --git a/meta-openembedded/meta-demo/recipes-devtools/python/python3-engineio_3.5.0.bb b/meta-openembedded/meta-demo/recipes-devtools/python/python3-engineio_3.5.0.bb
new file mode 100644
index 0000000..028d110
--- /dev/null
+++ b/meta-openembedded/meta-demo/recipes-devtools/python/python3-engineio_3.5.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-engineio.inc
diff --git a/meta-openembedded/meta-demo/recipes-devtools/python/python3-flask-socketio_3.3.2.bb b/meta-openembedded/meta-demo/recipes-devtools/python/python3-flask-socketio_3.3.2.bb
new file mode 100644
index 0000000..ffc4aa7
--- /dev/null
+++ b/meta-openembedded/meta-demo/recipes-devtools/python/python3-flask-socketio_3.3.2.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-flask-socketio.inc
diff --git a/meta-openembedded/meta-demo/recipes-devtools/python/python3-socketio_4.0.0.bb b/meta-openembedded/meta-demo/recipes-devtools/python/python3-socketio_4.0.0.bb
new file mode 100644
index 0000000..ce83d09
--- /dev/null
+++ b/meta-openembedded/meta-demo/recipes-devtools/python/python3-socketio_4.0.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-socketio.inc
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/0001-meson.build-Disable-libseccomp-for-all-archs.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/0001-meson.build-Disable-libseccomp-for-all-archs.patch
new file mode 100644
index 0000000..e93d5b6
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop/0001-meson.build-Disable-libseccomp-for-all-archs.patch
@@ -0,0 +1,40 @@
+From de0d33b068a5d8e61cc0c82d88d15b9a8aa97977 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Sat, 6 Apr 2019 18:07:17 +0200
+Subject: [PATCH] meson.build: Disable libseccomp for all archs
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It does not seem mandatory and can cause unsatisfied dependency [1].
+
+[1] https://errors.yoctoproject.org/Errors/Details/235565/
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ meson.build | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 83407b4..80eab84 100644
+--- a/meson.build
++++ b/meson.build
+@@ -53,12 +53,7 @@ udev_dep = dependency('libudev', required: get_option('udev'))
+ host_os = host_machine.system()
+ host_cpu = host_machine.cpu()
+ supported_os = ['linux']
+-unsupported_cpus = ['alpha', 'ia64', 'm68k', 'sh4', 'sparc', 'sparc64']
+-if supported_os.contains(host_os) and not unsupported_cpus.contains(host_cpu)
+-  seccomp_dep = dependency('libseccomp')
+-else
+-  seccomp_dep = dependency('', required: false)
+-endif
++seccomp_dep = dependency('', required: false)
+ fontconfig_cache_path = fontconfig_dep.get_pkgconfig_variable('cachedir')
+ 
+ xkb_base = xkb_config_dep.get_pkgconfig_variable('xkb_base')
+-- 
+2.20.1
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop3_3.32.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop3_3.32.0.bb
index 185a253..ffd7dce 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop3_3.32.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-desktop/gnome-desktop3_3.32.0.bb
@@ -8,14 +8,21 @@
 
 GNOMEBASEBUILDCLASS = "meson"
 
-inherit gnome pkgconfig upstream-version-is-even gobject-introspection
+inherit gnome pkgconfig upstream-version-is-even gobject-introspection distro_features_check
+
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+UNKNOWN_CONFIGURE_WHITELIST_append = " introspection"
 
 SRC_URI[archive.md5sum] = "e423ed6d648c6c4f9798fa9cd9ea8d99"
 SRC_URI[archive.sha256sum] = "a6393dc5fc29fc0652ac84c73b3da205d0b0168128c4cf6d27797a08f3d07b54"
 
-SRC_URI += "file://gnome-desktop-thumbnail-don-t-assume-time_t-is-long.patch"
+SRC_URI += " \
+    file://gnome-desktop-thumbnail-don-t-assume-time_t-is-long.patch \
+    file://0001-meson.build-Disable-libseccomp-for-all-archs.patch \
+"
 
-DEPENDS += "itstool-native gsettings-desktop-schemas gconf virtual/libx11 gtk+3 glib-2.0 startup-notification xkeyboard-config iso-codes udev"
+DEPENDS += "itstool-native gsettings-desktop-schemas virtual/libx11 gtk+3 startup-notification xkeyboard-config iso-codes udev"
 
 inherit distro_features_check gtk-doc
 REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.40.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.40.0.bb
index 7f239c4..df9fd50 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.40.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.40.0.bb
@@ -5,7 +5,7 @@
 GNOMEBASEBUILDCLASS = "meson"
 inherit gnome bash-completion gettext upstream-version-is-even
 
-DEPENDS += "libsecret glib-2.0 gconf intltool-native libgudev udisks2 polkit shadow-native"
+DEPENDS += "libsecret glib-2.0 gconf libgudev udisks2 polkit shadow-native"
 
 SRC_URI = "https://download.gnome.org/sources/${BPN}/${@gnome_verdir("${PV}")}/${BPN}-${PV}.tar.xz;name=archive"
 
@@ -15,12 +15,10 @@
 
 EXTRA_OEMESON = " \
     -Dbluray=false \
-    -Dgdu=false \
     -Dgoa=false \
     -Dgoogle=false \
     -Dnfs=false \
     -Dudisks2=true \
-    -Ddocumentation=false \
 "
 
 PACKAGES =+ "gvfsd-ftp gvfsd-sftp gvfsd-trash"
@@ -63,8 +61,16 @@
 # libcdio-paranoia recipe doesn't exist yet
 PACKAGECONFIG[cdda] = "-Dcdda=true, -Dcdda=false, libcdio-paranoia"
 
-# Fix up permissions on polkit rules.d to work with rpm4 constraints
 do_install_append() {
+    # Fix up permissions on polkit rules.d to work with rpm4 constraints
 	chmod 700 ${D}/${datadir}/polkit-1/rules.d
 	chown polkitd:root ${D}/${datadir}/polkit-1/rules.d
+
+    # After rebuilds (not from scracth) it can happen that the executables in
+    # libexec ar missing executable permission flag. Not sure but it came up
+    # during transition to meson. Looked into build files and logs but could
+    # not find suspicious
+    for exe in `find ${D}/${libexec}`; do
+       chmod +x $exe
+    done
 }
diff --git a/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut/0001-dracut.sh-improve-udevdir.patch b/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut/0001-dracut.sh-improve-udevdir.patch
new file mode 100644
index 0000000..06e0a09
--- /dev/null
+++ b/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut/0001-dracut.sh-improve-udevdir.patch
@@ -0,0 +1,39 @@
+From 974f728410052bc8fa18d93dc0c1a991bcdb96e6 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 3 Apr 2019 15:24:47 +0800
+Subject: [PATCH] dracut.sh: improve udevdir
+
+In commit [9d1b81c dracut.sh: improve udevdir and systemdutildir
+fallback logic], it checked a common binary `collect' to localte
+udevdir.
+
+But upstream systemd drop binary `collect'.
+[https://github.com/systemd/systemd/commit/a168792c2d95695fd30c0371d4b3890a9df1eafb]
+
+So check binary `ata_id' to instead.
+
+Upstream-Status: Submitted [https://github.com/dracutdevs/dracut/pull/558]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ dracut.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/dracut.sh b/dracut.sh
+index 3dc2adc..cc8b01a 100755
+--- a/dracut.sh
++++ b/dracut.sh
+@@ -1311,8 +1311,8 @@ done
+ [[ -d $udevdir ]] \
+     || udevdir="$(pkg-config udev --variable=udevdir 2>/dev/null)"
+ if ! [[ -d "$udevdir" ]]; then
+-    [[ -e /lib/udev/collect ]] && udevdir=/lib/udev
+-    [[ -e /usr/lib/udev/collect ]] && udevdir=/usr/lib/udev
++    [[ -e /lib/udev/ata_id ]] && udevdir=/lib/udev
++    [[ -e /usr/lib/udev/ata_id ]] && udevdir=/usr/lib/udev
+ fi
+ 
+ [[ -d $systemdutildir ]] \
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb b/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb
index dd2e8bb..344dfec 100644
--- a/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb
+++ b/meta-openembedded/meta-initramfs/recipes-devtools/dracut/dracut_git.bb
@@ -12,6 +12,7 @@
 SRCREV = "225e4b94cbdb702cf512490dcd2ad9ca5f5b22c1"
 SRC_URI = "git://git.kernel.org/pub/scm/boot/dracut/dracut.git;protocol=http \
            file://0001-util.h-include-sys-reg.h-when-libc-glibc.patch \
+           file://0001-dracut.sh-improve-udevdir.patch \
            "
 
 DEPENDS += "kmod"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.33.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.33.bb
index 8468d12..d4ebe17 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.33.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.33.bb
@@ -11,7 +11,7 @@
     libmpdclient \
 "
 
-PACKAGECONFIG ??= "colors locale mouse nls regex help_screen artist_screen search_screen song_screen key_screen lyrics_screen outputs_screen"
+PACKAGECONFIG ??= "colors locale mouse nls regex help_screen library_screen search_screen song_screen key_screen lyrics_screen outputs_screen"
 
 PACKAGECONFIG[colors] = "-Dcolors=true,-Dcolors=false"
 PACKAGECONFIG[lirc] = "-Dlirc=enabled,-Dlirc=disabled,lirc"
@@ -22,7 +22,7 @@
 PACKAGECONFIG[regex] = "-Dregex=enabled,-Dregex=disabled,pcre"
 
 PACKAGECONFIG[help_screen] = "-Dhelp_screen=true,-Dhelp_screen=false"
-PACKAGECONFIG[artist_screen] = "-Dartist_screen=true,-Dartist_screen=false"
+PACKAGECONFIG[library_screen] = "-Dlibrary_screen=true,-Dlibrary_screen=false"
 PACKAGECONFIG[search_screen] = "-Dsearch_screen=true,-Dsearch_screen=false"
 PACKAGECONFIG[song_screen] = "-Dsong_screen=true,-Dsong_screen=false"
 PACKAGECONFIG[key_screen] = "-Dkey_screen=true,-Dkey_screen=false"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0001-Remove-python-venv.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0001-Remove-python-venv.patch
new file mode 100644
index 0000000..c03bccd
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0001-Remove-python-venv.patch
@@ -0,0 +1,192 @@
+From 6272f36080bd440a5825b526f4c06223c5bb9fbb Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Mon, 18 Mar 2019 16:30:45 -0700
+Subject: [PATCH 1/5] Remove python venv
+
+Remove the python venv requirements and instead just use the native
+python and pip pacakges.
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Inappropriate [embedded specific]
+---
+ dev_setup.sh     | 36 ------------------------------------
+ start-mycroft.sh | 13 -------------
+ venv-activate.sh | 44 +-------------------------------------------
+ 3 files changed, 1 insertion(+), 92 deletions(-)
+
+diff --git a/dev_setup.sh b/dev_setup.sh
+index e0b07bf25cf..aed54b2167a 100755
+--- a/dev_setup.sh
++++ b/dev_setup.sh
+@@ -310,18 +310,6 @@ function install_deps() {
+     fi
+ }
+ 
+-VIRTUALENV_ROOT=${VIRTUALENV_ROOT:-"${TOP}/.venv"}
+-
+-function install_venv() {
+-    ${opt_python} -m venv "${VIRTUALENV_ROOT}/" --without-pip
+-    # Force version of pip for reproducability, but there is nothing special
+-    # about this version.  Update whenever a new version is released and
+-    # verified functional.
+-    curl https://bootstrap.pypa.io/3.3/get-pip.py | "${VIRTUALENV_ROOT}/bin/python" - 'pip==18.0.0'
+-    # Function status depending on if pip exists
+-    [ -x "${VIRTUALENV_ROOT}/bin/pip" ]
+-}
+-
+ install_deps
+ 
+ # Configure to use the standard commit template for
+@@ -355,15 +343,7 @@ else
+     fi
+ fi
+ 
+-if [ ! -x "${VIRTUALENV_ROOT}/bin/activate" ] ; then
+-    if ! install_venv ; then
+-        echo "Failed to set up virtualenv for mycroft, exiting setup."
+-        exit 1
+-    fi
+-fi
+-
+ # Start the virtual environment
+-source "${VIRTUALENV_ROOT}/bin/activate"
+ cd "${TOP}"
+ 
+ # Install pep8 pre-commit hook
+@@ -380,22 +360,6 @@ fi
+ 
+ PYTHON=$( python -c "import sys;print('python{}.{}'.format(sys.version_info[0], sys.version_info[1]))" )
+ 
+-# Add mycroft-core to the virtualenv path
+-# (This is equivalent to typing 'add2virtualenv $TOP', except
+-# you can't invoke that shell function from inside a script)
+-VENV_PATH_FILE="${VIRTUALENV_ROOT}/lib/$PYTHON/site-packages/_virtualenv_path_extensions.pth"
+-if [ ! -f "$VENV_PATH_FILE" ] ; then
+-    echo "import sys; sys.__plen = len(sys.path)" > "$VENV_PATH_FILE" || return 1
+-    echo "import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)" >> "$VENV_PATH_FILE" || return 1
+-fi
+-
+-if ! grep -q "$TOP" $VENV_PATH_FILE ; then
+-    echo "Adding mycroft-core to virtualenv path"
+-    sed -i.tmp '1 a\
+-'"$TOP"'
+-' "${VENV_PATH_FILE}"
+-fi
+-
+ # install required python modules
+ if ! pip install -r requirements.txt ; then
+     echo "Warning: Failed to install all requirements. Continue? y/N"
+diff --git a/start-mycroft.sh b/start-mycroft.sh
+index b9514a61ba5..64e0216a62f 100755
+--- a/start-mycroft.sh
++++ b/start-mycroft.sh
+@@ -20,7 +20,6 @@ script=${0}
+ script=${script##*/}
+ cd -P "$( dirname "$SOURCE" )"
+ DIR="$( pwd )"
+-VIRTUALENV_ROOT=${VIRTUALENV_ROOT:-"${DIR}/.venv"}
+ 
+ function help() {
+     echo "${script}:  Mycroft command/service launcher"
+@@ -76,19 +75,11 @@ function name-to-script-path() {
+     esac
+ }
+ 
+-function source-venv() {
+-    # Enter Python virtual environment, unless under Docker
+-    if [ ! -f "/.dockerenv" ] ; then
+-        source ${VIRTUALENV_ROOT}/bin/activate
+-    fi
+-}
+-
+ first_time=true
+ function init-once() {
+     if ($first_time) ; then
+         echo "Initializing..."
+         "${DIR}/scripts/prepare-msm.sh"
+-        source-venv
+         first_time=false
+     fi
+ }
+@@ -225,15 +216,12 @@ case ${_opt} in
+     #    launch-background ${_opt}
+     #    ;;
+     "unittest")
+-        source-venv
+         pytest test/unittests/ --cov=mycroft "$@"
+         ;;
+     "singleunittest")
+-        source-venv
+         pytest "$@"
+         ;;
+     "skillstest")
+-        source-venv
+         pytest test/integrationtests/skills/discover_tests.py "$@"
+         ;;
+     "audiotest")
+@@ -243,7 +231,6 @@ case ${_opt} in
+         launch-process ${_opt}
+         ;;
+     "sdkdoc")
+-        source-venv
+         cd doc
+         make ${opt}
+         cd ..
+diff --git a/venv-activate.sh b/venv-activate.sh
+index d1e7bcb44e7..10b46d4de3b 100644
+--- a/venv-activate.sh
++++ b/venv-activate.sh
+@@ -22,49 +22,7 @@
+ 
+ # wrap in function to allow local variables, since this file will be source'd
+ function main() { 
+-    local quiet=0
+-
+-    for arg in "$@"
+-    do
+-        case $arg in
+-            "-q"|"--quiet" )
+-               quiet=1
+-               ;;
+-
+-            "-h"|"--help" )
+-               echo "venv-activate.sh:  Enter the Mycroft virtual environment"
+-               echo "Usage:"
+-               echo "   source venv-activate.sh"
+-               echo "or"
+-               echo "   . venv-activate.sh"
+-               echo ""
+-               echo "Options:"
+-               echo "   -q | --quiet    Don't show instructions."
+-               echo "   -h | --help    Show help."
+-               return 0
+-               ;;
+-
+-            *)
+-               echo "ERROR:  Unrecognized option: $@"
+-               return 1
+-               ;;
+-       esac
+-    done
+-
+-    if [ "$0" == "$BASH_SOURCE" ] ; then
+-        # Prevent running in script then exiting immediately
+-        echo "ERROR: Invoke with 'source venv-activate.sh' or '. venv-activate.sh'"
+-    else
+-        local SRC_DIR="$( builtin cd "$( dirname "${BASH_SOURCE}" )" ; pwd -P )"
+-        source ${SRC_DIR}/.venv/bin/activate
+-        
+-        # Provide an easier to find "mycroft-" prefixed command.
+-        unalias mycroft-venv-activate 2>/dev/null
+-        alias mycroft-venv-deactivate="deactivate && unalias mycroft-venv-deactivate 2>/dev/null && alias mycroft-venv-activate=\"source '${SRC_DIR}/venv-activate.sh'\""
+-        if [ $quiet -eq 0 ] ; then
+-            echo "Entering Mycroft virtual environment.  Run 'mycroft-venv-deactivate' to exit"
+-        fi
+-    fi
++   echo "Not entering Python VENV"
+ }
+ 
+ main $@
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0002-pip-requirements-Remove-ones-installed-by-OE.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0002-pip-requirements-Remove-ones-installed-by-OE.patch
new file mode 100644
index 0000000..ca79d00
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0002-pip-requirements-Remove-ones-installed-by-OE.patch
@@ -0,0 +1,62 @@
+From 142bc3912ea9e1a4ecf4db0e2bec3049aa416464 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Tue, 19 Mar 2019 13:32:54 -0700
+Subject: [PATCH 2/5] pip requirements: Remove ones installed by OE
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Inappropriate [embedded specific]
+---
+ requirements.txt      | 14 --------------
+ test-requirements.txt |  1 -
+ 2 files changed, 15 deletions(-)
+
+diff --git a/requirements.txt b/requirements.txt
+index 7e4faf48182..29536e990ac 100644
+--- a/requirements.txt
++++ b/requirements.txt
+@@ -1,20 +1,10 @@
+-six==1.10.0
+-requests==2.20.0
+ gTTS==2.0.3
+ gTTS-token==1.1.3
+-PyAudio==0.2.11
+ pyee==5.0.0
+ SpeechRecognition==3.8.1
+-tornado==4.5.3
+ websocket-client==0.54.0
+ requests-futures==0.9.5
+-pyalsaaudio==0.8.2
+ xmlrunner==1.7.7
+-pyserial==3.0
+-psutil==5.2.1
+-pocketsphinx==0.1.0
+-inflection==0.3.1
+-pillow==4.1.1
+ python-dateutil==2.6.0
+ pychromecast==0.7.7
+ python-vlc==1.1.2
+@@ -26,10 +16,6 @@ msm==0.7.3
+ msk==0.3.12
+ adapt-parser==0.3.2
+ padatious==0.4.6
+-fann2==1.0.7
+ padaos==0.1.9
+ precise-runner==0.2.1
+ petact==0.1.2
+-
+-# dev setup tools
+-pep8==1.7.0
+diff --git a/test-requirements.txt b/test-requirements.txt
+index 8ada8157c95..eb4e364a9b4 100644
+--- a/test-requirements.txt
++++ b/test-requirements.txt
+@@ -1,6 +1,5 @@
+ pep8==1.7.0
+ coveralls==1.5.0
+-pytest==3.5.0
+ pytest-cov==2.5.1
+ cov-core==1.15.0
+ mock==2.0.0
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0003-Use-python3-and-pip3-instead-of-python-and-pip.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0003-Use-python3-and-pip3-instead-of-python-and-pip.patch
new file mode 100644
index 0000000..a1f04b4
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0003-Use-python3-and-pip3-instead-of-python-and-pip.patch
@@ -0,0 +1,135 @@
+From 87b94e54fefa1f83b41030444fc87b421c97b2c5 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Tue, 19 Mar 2019 13:38:44 -0700
+Subject: [PATCH 3/5] Use python3 and pip3 instead of python and pip
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Inappropriate [embedded specific]
+---
+ bin/mycroft-cli-client          |  2 +-
+ bin/mycroft-pip                 |  2 +-
+ bin/mycroft-say-to              |  2 +-
+ bin/mycroft-skill-testrunner    |  4 ++--
+ bin/mycroft-speak               |  2 +-
+ dev_setup.sh                    | 10 +++++-----
+ scripts/install-pocketsphinx.sh |  2 +-
+ 7 files changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/bin/mycroft-cli-client b/bin/mycroft-cli-client
+index f40a316e3f6..de2040d9e67 100755
+--- a/bin/mycroft-cli-client
++++ b/bin/mycroft-cli-client
+@@ -21,4 +21,4 @@ DIR="$( dirname "$SOURCE" )"
+ source "$DIR/../venv-activate.sh" -q
+ 
+ # Invoke the Command Line Interface
+-python -m mycroft.client.text $@
++python3 -m mycroft.client.text $@
+diff --git a/bin/mycroft-pip b/bin/mycroft-pip
+index a42b16b847a..81bd5bfb3cf 100755
+--- a/bin/mycroft-pip
++++ b/bin/mycroft-pip
+@@ -21,4 +21,4 @@ DIR="$( dirname "$SOURCE" )"
+ source "$DIR/../venv-activate.sh" -q
+ 
+ # Install pip packages within the Mycroft venv
+-pip $@
+\ No newline at end of file
++pip3 $@
+\ No newline at end of file
+diff --git a/bin/mycroft-say-to b/bin/mycroft-say-to
+index 964e16eb0c5..5575969715c 100755
+--- a/bin/mycroft-say-to
++++ b/bin/mycroft-say-to
+@@ -22,4 +22,4 @@ DIR="$( pwd )"
+ source "$DIR/../venv-activate.sh" -q
+ 
+ # Send a message to be spoken
+-output=$(python -m mycroft.messagebus.send "recognizer_loop:utterance"  "{\"utterances\": [\"$@\"], \"lang\": \"en-us\"}")
++output=$(python3 -m mycroft.messagebus.send "recognizer_loop:utterance"  "{\"utterances\": [\"$@\"], \"lang\": \"en-us\"}")
+diff --git a/bin/mycroft-skill-testrunner b/bin/mycroft-skill-testrunner
+index 9699a4d138f..282f5ca65b0 100755
+--- a/bin/mycroft-skill-testrunner
++++ b/bin/mycroft-skill-testrunner
+@@ -22,7 +22,7 @@ source "$DIR/../venv-activate.sh" -q
+ 
+ # Invoke the individual skill tester
+ if [ "$#" -eq 0 ] ; then
+-    python -m test.integrationtests.skills.runner .
++    python3 -m test.integrationtests.skills.runner .
+ else
+-    python -m test.integrationtests.skills.runner $@
++    python3 -m test.integrationtests.skills.runner $@
+ fi
+\ No newline at end of file
+diff --git a/bin/mycroft-speak b/bin/mycroft-speak
+index 51facf29189..c65556f1173 100755
+--- a/bin/mycroft-speak
++++ b/bin/mycroft-speak
+@@ -22,4 +22,4 @@ DIR="$( pwd )"
+ source "$DIR/../venv-activate.sh" -q
+ 
+ # Send a message to be spoken
+-output=$(python -m mycroft.messagebus.send "speak"  "{\"utterance\": \"$@\"}")
+\ No newline at end of file
++output=$(python3 -m mycroft.messagebus.send "speak"  "{\"utterance\": \"$@\"}")
+\ No newline at end of file
+diff --git a/dev_setup.sh b/dev_setup.sh
+index aed54b2167a..dd391181f19 100755
+--- a/dev_setup.sh
++++ b/dev_setup.sh
+@@ -48,7 +48,7 @@ param=""
+ 
+ for var in "$@" ; do
+     # Check if parameter should be read
+-    if [[ ${param} == "python" ]] ; then
++    if [[ ${param} == "python3" ]] ; then
+         opt_python=${var}
+         param=""
+         continue
+@@ -351,17 +351,17 @@ if [ -z ${INSTALL_PRECOMMIT_HOOK} ] ; then
+     HOOK_FILE="./.git/hooks/pre-commit"
+     if [ ! -f ${HOOK_FILE} ] || grep -q "MYCROFT DEV SETUP" ${HOOK_FILE} ; then
+         echo "Installing PEP8 check as precommit-hook"
+-        echo "#! $( which python )" > ${HOOK_FILE}
++        echo "#! $( which python3 )" > ${HOOK_FILE}
+         echo "# MYCROFT DEV SETUP" >> ${HOOK_FILE}
+         cat ./scripts/pre-commit >> ${HOOK_FILE}
+         chmod +x ${HOOK_FILE}
+     fi
+ fi
+ 
+-PYTHON=$( python -c "import sys;print('python{}.{}'.format(sys.version_info[0], sys.version_info[1]))" )
++PYTHON=$( python3 -c "import sys;print('python{}.{}'.format(sys.version_info[0], sys.version_info[1]))" )
+ 
+ # install required python modules
+-if ! pip install -r requirements.txt ; then
++if ! pip3 install -r requirements.txt ; then
+     echo "Warning: Failed to install all requirements. Continue? y/N"
+     read -n1 continue
+     if [[ "$continue" != "y" ]] ; then
+@@ -369,7 +369,7 @@ if ! pip install -r requirements.txt ; then
+     fi
+ fi
+ 
+-if ! pip install -r test-requirements.txt ; then
++if ! pip3 install -r test-requirements.txt ; then
+     echo "Warning test requirements wasn't installed, Note: normal operation should still work fine..."
+ fi
+ 
+diff --git a/scripts/install-pocketsphinx.sh b/scripts/install-pocketsphinx.sh
+index 44d329b7985..d45f5c22747 100755
+--- a/scripts/install-pocketsphinx.sh
++++ b/scripts/install-pocketsphinx.sh
+@@ -47,7 +47,7 @@ function install_pocketsphinx() {
+ 
+     # build and install pocketsphinx python bindings
+     cd ${TOP}/pocketsphinx-python
+-    python setup.py install
++    python3 setup.py install
+ }
+ 
+ if [ "$1" = "-q" ] ; then
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0004-dev_setup.sh-Remove-the-git-dependency.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0004-dev_setup.sh-Remove-the-git-dependency.patch
new file mode 100644
index 0000000..b7ca160
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0004-dev_setup.sh-Remove-the-git-dependency.patch
@@ -0,0 +1,48 @@
+From a480dde949f820fda6e46c13261883e851f5a430 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Fri, 29 Mar 2019 16:09:57 -0700
+Subject: [PATCH 4/5] dev_setup.sh: Remove the git dependency
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Inappropriate [embedded specific]
+---
+ dev_setup.sh | 16 ----------------
+ 1 file changed, 16 deletions(-)
+
+diff --git a/dev_setup.sh b/dev_setup.sh
+index dd391181f19..c6aa783e1ef 100755
+--- a/dev_setup.sh
++++ b/dev_setup.sh
+@@ -312,10 +312,6 @@ function install_deps() {
+ 
+ install_deps
+ 
+-# Configure to use the standard commit template for
+-# this repo only.
+-git config commit.template .gitmessage
+-
+ # Check whether to build mimic (it takes a really long time!)
+ build_mimic="n"
+ if [[ ${opt_forcemimicbuild} == true ]] ; then
+@@ -346,18 +342,6 @@ fi
+ # Start the virtual environment
+ cd "${TOP}"
+ 
+-# Install pep8 pre-commit hook
+-if [ -z ${INSTALL_PRECOMMIT_HOOK} ] ; then
+-    HOOK_FILE="./.git/hooks/pre-commit"
+-    if [ ! -f ${HOOK_FILE} ] || grep -q "MYCROFT DEV SETUP" ${HOOK_FILE} ; then
+-        echo "Installing PEP8 check as precommit-hook"
+-        echo "#! $( which python3 )" > ${HOOK_FILE}
+-        echo "# MYCROFT DEV SETUP" >> ${HOOK_FILE}
+-        cat ./scripts/pre-commit >> ${HOOK_FILE}
+-        chmod +x ${HOOK_FILE}
+-    fi
+-fi
+-
+ PYTHON=$( python3 -c "import sys;print('python{}.{}'.format(sys.version_info[0], sys.version_info[1]))" )
+ 
+ # install required python modules
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0005-dev_setup.sh-Remove-the-test-setup-dependency.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0005-dev_setup.sh-Remove-the-test-setup-dependency.patch
new file mode 100644
index 0000000..5ae8683
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/0005-dev_setup.sh-Remove-the-test-setup-dependency.patch
@@ -0,0 +1,31 @@
+From 7fc38ae0dec30789fa0d365f1764f4950b700a98 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Tue, 2 Apr 2019 16:52:44 -0700
+Subject: [PATCH 5/5] dev_setup.sh: Remove the test setup dependency
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+---
+ dev_setup.sh | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/dev_setup.sh b/dev_setup.sh
+index c6aa783e1ef..bcfaa0c16c2 100755
+--- a/dev_setup.sh
++++ b/dev_setup.sh
+@@ -353,10 +353,6 @@ if ! pip3 install -r requirements.txt ; then
+     fi
+ fi
+ 
+-if ! pip3 install -r test-requirements.txt ; then
+-    echo "Warning test requirements wasn't installed, Note: normal operation should still work fine..."
+-fi
+-
+ SYSMEM=$( free | awk '/^Mem:/ { print $2 }' )
+ MAXCORES=$(($SYSMEM / 512000))
+ MINCORES=1
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/dev_opts.json b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/dev_opts.json
new file mode 100644
index 0000000..5ed85fa
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/dev_opts.json
@@ -0,0 +1 @@
+{"use_branch": "dev", "auto_update": false}
\ No newline at end of file
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/mycroft-setup.service b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/mycroft-setup.service
new file mode 100644
index 0000000..0759823
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/mycroft-setup.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Mycroft Setup
+DefaultDependencies=no
+After=systemd-user-sessions.service
+
+[Service]
+Type=oneshot
+ExecStart=@LIBDIR@/mycroft/dev_setup.sh --allow-root
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/mycroft.service b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/mycroft.service
new file mode 100644
index 0000000..04cf436
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/files/mycroft.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Mycroft
+DefaultDependencies=no
+After=mycroft-setup
+
+[Service]
+Type=forking
+ExecStartPre=mkdir -p /var/log/mycroft
+ExecStart=@LIBDIR@/mycroft/start-mycroft.sh all
+ExecStop=@LIBDIR@/mycroft/stop-mycroft.sh all
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/mycroft_19.2.2.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/mycroft_19.2.2.bb
new file mode 100644
index 0000000..c8ae534
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/mycroft/mycroft_19.2.2.bb
@@ -0,0 +1,73 @@
+SUMMARY = "Mycroft is a hackable open source voice assistant."
+DESCRIPTION = "Mycroft is the world’s first open source assistant. "
+HOMEPAGE = "https://mycroft.ai/"
+SECTION = "multimedia"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=79aa497b11564d1d419ee889e7b498f6"
+
+SRCREV = "6706c377820912f83c1838d9eb32950ca9e39ec7"
+SRC_URI = "git://github.com/MycroftAI/mycroft-core.git;branch=master \
+           file://0001-Remove-python-venv.patch \
+           file://0002-pip-requirements-Remove-ones-installed-by-OE.patch \
+           file://0003-Use-python3-and-pip3-instead-of-python-and-pip.patch \
+           file://0004-dev_setup.sh-Remove-the-git-dependency.patch \
+           file://0005-dev_setup.sh-Remove-the-test-setup-dependency.patch \
+           file://dev_opts.json \
+           file://mycroft-setup.service \
+           file://mycroft.service \
+          "
+
+S = "${WORKDIR}/git"
+
+inherit systemd
+
+# Mycroft installs itself on the host
+# Just copy the setup files to the rootfs
+do_install() {
+    install -d ${D}${libdir}/
+    cp -r ${B} ${D}${libdir}/mycroft
+    rm -r ${D}${libdir}/mycroft/.git
+
+    # Install the dev opts so it doesn't ask us on initial setup.
+    install -m 644 ${WORKDIR}/dev_opts.json ${D}${libdir}/mycroft/.dev_opts.json
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 644 ${WORKDIR}/mycroft-setup.service ${D}${systemd_unitdir}/system
+        sed -i -e 's,@LIBDIR@,${libdir},g' ${D}${systemd_unitdir}/system/mycroft-setup.service
+    fi
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 644 ${WORKDIR}/mycroft.service ${D}${systemd_unitdir}/system
+        sed -i -e 's,@LIBDIR@,${libdir},g' ${D}${systemd_unitdir}/system/mycroft.service
+    fi
+}
+
+FILES_${PN} += "${libdir}/mycroft"
+
+RDEPENDS_${PN} = "python3"
+
+# Install as many Python packages as we can.
+# We don't yet have all the packages in meta-python.
+# Install as many as we can and we will install the rest on the target with pip.
+# TODO: Add all the remaining packages and remove pip
+RDEPENDS_${PN} += "python3-pip \
+                   python3-requests python3-pillow \
+                   python3-tornado python3-pyyaml \
+                   python3-pyalsaaudio python3-inflection \
+                   python3-pyserial python3-psutil \
+                   python3-pyaudio python3-fann2 \
+                   python3-pocketsphinx \
+                   python3-xxhash \
+                 "
+
+# Mycroft uses Alsa and PulseAudio
+RDEPENDS_${PN} += "alsa-oss alsa-utils alsa-plugins alsa-tools"
+RDEPENDS_${PN} += "pulseaudio pulseaudio-misc pulseaudio-server"
+
+# Mycroft can do this itself on the target, but it's quicker to do it here
+RDEPENDS_${PN} += "mimic"
+
+SYSTEMD_SERVICE_${PN} = "mycroft-setup.service mycroft.service"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0004-musl-dlopen-configure-ac.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0003-dlopen-failure.patch
similarity index 87%
rename from meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0004-musl-dlopen-configure-ac.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0003-dlopen-failure.patch
index 419e1be..e99c227 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0004-musl-dlopen-configure-ac.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0003-dlopen-failure.patch
@@ -1,4 +1,4 @@
-From 7743ea63fbe572b1f82db7d399fe9c5c99521432 Mon Sep 17 00:00:00 2001
+From 57239fda56b68a8f3e413f7b6af5290ba0d86636 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
 Date: Thu, 22 Mar 2018 18:18:06 +0100
 Subject: [PATCH] musl: dlopen is included so LD_LIBS="" instead of
@@ -14,16 +14,15 @@
 [1] https://github.com/voidlinux/void-packages/tree/master/srcpkgs/NetworkManager/patches
 
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-
 ---
  configure.ac | 1 +
  1 file changed, 1 insertion(+)
 
 diff --git a/configure.ac b/configure.ac
-index b914219..1b2b0ff 100644
+index 487a266..96ae4f7 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -241,6 +241,7 @@ dnl
+@@ -235,6 +235,7 @@ dnl
  dnl Checks for libdl - on certain platforms its part of libc
  dnl
  AC_SEARCH_LIBS([dlopen], [dl dld], [], [ac_cv_search_dlopen=])
@@ -31,3 +30,5 @@
  AC_SUBST([DL_LIBS], "$ac_cv_search_dlopen")
  
  PKG_CHECK_MODULES(GLIB, [gio-unix-2.0 >= 2.37.6 gmodule-2.0],
+-- 
+2.14.3
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-Do-not-include-net-ethernet.h-and-linux-if_ether.h.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-Do-not-include-net-ethernet.h-and-linux-if_ether.h.patch
deleted file mode 100644
index 555e5ff..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-Do-not-include-net-ethernet.h-and-linux-if_ether.h.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From b2cdab746ef64bc25ba0b9cff596ebdddd6e8dc6 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 7 Nov 2018 11:30:44 -0800
-Subject: [PATCH] Do not include net/ethernet.h and linux/if_ether.h
-
-They conflict when used together especially with musl
-removing them still keeps it working so it seems they are redundant
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- shared/n-acd/src/n-acd.c              | 1 -
- src/platform/wpan/nm-wpan-utils.h     | 2 --
- src/settings/nm-settings-connection.h | 2 --
- 3 files changed, 5 deletions(-)
-
-diff --git a/shared/n-acd/src/n-acd.c b/shared/n-acd/src/n-acd.c
-index def56a2..dd4eb78 100644
---- a/shared/n-acd/src/n-acd.c
-+++ b/shared/n-acd/src/n-acd.c
-@@ -11,7 +11,6 @@
- #include <inttypes.h>
- #include <limits.h>
- #include <linux/if_packet.h>
--#include <netinet/if_ether.h>
- #include <netinet/in.h>
- #include <stdlib.h>
- #include <string.h>
-diff --git a/src/platform/wpan/nm-wpan-utils.h b/src/platform/wpan/nm-wpan-utils.h
-index 1b54ec4..ed39938 100644
---- a/src/platform/wpan/nm-wpan-utils.h
-+++ b/src/platform/wpan/nm-wpan-utils.h
-@@ -20,8 +20,6 @@
- #ifndef __WPAN_UTILS_H__
- #define __WPAN_UTILS_H__
- 
--#include <net/ethernet.h>
--
- #include "nm-dbus-interface.h"
- #include "platform/nm-netlink.h"
- 
-diff --git a/src/settings/nm-settings-connection.h b/src/settings/nm-settings-connection.h
-index e796b71..c01fef6 100644
---- a/src/settings/nm-settings-connection.h
-+++ b/src/settings/nm-settings-connection.h
-@@ -22,8 +22,6 @@
- #ifndef __NETWORKMANAGER_SETTINGS_CONNECTION_H__
- #define __NETWORKMANAGER_SETTINGS_CONNECTION_H__
- 
--#include <net/ethernet.h>
--
- #include "nm-dbus-object.h"
- #include "nm-connection.h"
- 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-Fix-build-with-musl.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-Fix-build-with-musl.patch
new file mode 100644
index 0000000..b3f93ff
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-Fix-build-with-musl.patch
@@ -0,0 +1,351 @@
+From f43c9a5b07832a91383e59d655bc3c8a9f48c451 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Tue, 2 Apr 2019 01:34:35 +0200
+Subject: [PATCH] Fix build with musl
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Pending
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ clients/cli/connections.c                    |  1 -
+ libnm-core/nm-utils.c                        |  2 +-
+ shared/n-acd/src/n-acd.c                     |  1 -
+ shared/systemd/src/basic/in-addr-util.c      |  1 +
+ shared/systemd/src/basic/process-util.c      |  9 ++++++
+ shared/systemd/src/basic/socket-util.h       |  6 ++++
+ shared/systemd/src/basic/stdio-util.h        |  2 ++
+ shared/systemd/src/basic/string-util.h       |  5 ++++
+ shared/systemd/src/basic/util.h              | 29 ++++----------------
+ src/platform/wifi/nm-wifi-utils.h            |  4 +++
+ src/platform/wpan/nm-wpan-utils.h            |  2 --
+ src/settings/nm-settings-connection.h        |  2 --
+ src/systemd/src/libsystemd-network/sd-lldp.c |  1 +
+ src/systemd/src/systemd/sd-dhcp-client.h     |  2 ++
+ src/systemd/src/systemd/sd-dhcp-lease.h      |  2 ++
+ src/systemd/src/systemd/sd-dhcp6-client.h    |  2 ++
+ src/systemd/src/systemd/sd-ipv4ll.h          |  2 ++
+ src/systemd/src/systemd/sd-lldp.h            |  2 +-
+ 19 files changed, 44 insertions(+), 32 deletions(-)
+
+diff --git a/clients/cli/connections.c b/clients/cli/connections.c
+index 6db44f8..36e51cc 100644
+--- a/clients/cli/connections.c
++++ b/clients/cli/connections.c
+@@ -25,7 +25,6 @@
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <signal.h>
+-#include <netinet/ether.h>
+ #include <readline/readline.h>
+ #include <readline/history.h>
+ #include <fcntl.h>
+diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c
+index d276cfe..2aec785 100644
+--- a/libnm-core/nm-utils.c
++++ b/libnm-core/nm-utils.c
+@@ -21,10 +21,10 @@
+ 
+ #include "nm-default.h"
+ 
++#include <netinet/ether.h>
+ #include "nm-utils.h"
+ 
+ #include <stdlib.h>
+-#include <netinet/ether.h>
+ #include <arpa/inet.h>
+ #include <uuid/uuid.h>
+ #include <libintl.h>
+diff --git a/shared/n-acd/src/n-acd.c b/shared/n-acd/src/n-acd.c
+index def56a2..dd4eb78 100644
+--- a/shared/n-acd/src/n-acd.c
++++ b/shared/n-acd/src/n-acd.c
+@@ -11,7 +11,6 @@
+ #include <inttypes.h>
+ #include <limits.h>
+ #include <linux/if_packet.h>
+-#include <netinet/if_ether.h>
+ #include <netinet/in.h>
+ #include <stdlib.h>
+ #include <string.h>
+diff --git a/shared/systemd/src/basic/in-addr-util.c b/shared/systemd/src/basic/in-addr-util.c
+index 5ced350..c6b52b8 100644
+--- a/shared/systemd/src/basic/in-addr-util.c
++++ b/shared/systemd/src/basic/in-addr-util.c
+@@ -13,6 +13,7 @@
+ #include "in-addr-util.h"
+ #include "macro.h"
+ #include "parse-util.h"
++#include "string-util.h"
+ #include "util.h"
+ 
+ bool in4_addr_is_null(const struct in_addr *a) {
+diff --git a/shared/systemd/src/basic/process-util.c b/shared/systemd/src/basic/process-util.c
+index b0afb5c..7adc8bd 100644
+--- a/shared/systemd/src/basic/process-util.c
++++ b/shared/systemd/src/basic/process-util.c
+@@ -21,6 +21,9 @@
+ #include <sys/wait.h>
+ #include <syslog.h>
+ #include <unistd.h>
++#ifndef __GLIBC__
++#include <pthread.h>
++#endif
+ #if 0 /* NM_IGNORED */
+ #if HAVE_VALGRIND_VALGRIND_H
+ #include <valgrind/valgrind.h>
+@@ -1168,11 +1171,13 @@ void reset_cached_pid(void) {
+         cached_pid = CACHED_PID_UNSET;
+ }
+ 
++#ifdef __GLIBC__
+ /* We use glibc __register_atfork() + __dso_handle directly here, as they are not included in the glibc
+  * headers. __register_atfork() is mostly equivalent to pthread_atfork(), but doesn't require us to link against
+  * libpthread, as it is part of glibc anyway. */
+ extern int __register_atfork(void (*prepare) (void), void (*parent) (void), void (*child) (void), void *dso_handle);
+ extern void* __dso_handle _weak_;
++#endif
+ 
+ pid_t getpid_cached(void) {
+         static bool installed = false;
+@@ -1201,7 +1206,11 @@ pid_t getpid_cached(void) {
+                          * only half-documented (glibc doesn't document it but LSB does — though only superficially)
+                          * we'll check for errors only in the most generic fashion possible. */
+ 
++#ifdef __GLIBC__
+                         if (__register_atfork(NULL, NULL, reset_cached_pid, __dso_handle) != 0) {
++#else
++                        if (pthread_atfork(NULL, NULL, reset_cached_pid) != 0) {
++#endif
+                                 /* OOM? Let's try again later */
+                                 cached_pid = CACHED_PID_UNSET;
+                                 return new_pid;
+diff --git a/shared/systemd/src/basic/socket-util.h b/shared/systemd/src/basic/socket-util.h
+index d2246a8..76f257f 100644
+--- a/shared/systemd/src/basic/socket-util.h
++++ b/shared/systemd/src/basic/socket-util.h
+@@ -13,6 +13,12 @@
+ #include <sys/types.h>
+ #include <sys/un.h>
+ 
++#if !defined(__GLIBC__)
++/* SIOCGSTAMPNS from linux/asm-generic.h
++ * for src/systemd/src/libsystemd-network/sd-lldp.c */
++#include <linux/sockios.h>
++#endif
++
+ #include "macro.h"
+ #include "missing_socket.h"
+ #include "sparse-endian.h"
+diff --git a/shared/systemd/src/basic/stdio-util.h b/shared/systemd/src/basic/stdio-util.h
+index dc67b6e..6336243 100644
+--- a/shared/systemd/src/basic/stdio-util.h
++++ b/shared/systemd/src/basic/stdio-util.h
+@@ -1,7 +1,9 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ #pragma once
+ 
++#if defined(__GLIBC__)
+ #include <printf.h>
++#endif
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <sys/types.h>
+diff --git a/shared/systemd/src/basic/string-util.h b/shared/systemd/src/basic/string-util.h
+index 38070ab..6b918e0 100644
+--- a/shared/systemd/src/basic/string-util.h
++++ b/shared/systemd/src/basic/string-util.h
+@@ -27,6 +27,11 @@
+ #define strcaseeq(a,b) (strcasecmp((a),(b)) == 0)
+ #define strncaseeq(a, b, n) (strncasecmp((a), (b), (n)) == 0)
+ 
++/* musl does not know strndupa */
++#if !defined(__GLIBC__)
++#define strndupa(x,s) strncpy(alloca(strlen(x)+1),x,s)
++#endif
++
+ int strcmp_ptr(const char *a, const char *b) _pure_;
+ 
+ static inline bool streq_ptr(const char *a, const char *b) {
+diff --git a/shared/systemd/src/basic/util.h b/shared/systemd/src/basic/util.h
+index dc33d66..cc768e9 100644
+--- a/shared/systemd/src/basic/util.h
++++ b/shared/systemd/src/basic/util.h
+@@ -27,6 +27,11 @@
+ #include "macro.h"
+ #include "time-util.h"
+ 
++#if !defined(__GLIBC__)
++typedef int (*__compar_fn_t) (const void*, const void*);
++typedef __compar_fn_t comparison_fn_t;
++#endif
++
+ size_t page_size(void) _pure_;
+ #define PAGE_ALIGN(l) ALIGN_TO((l), page_size())
+ 
+@@ -66,16 +71,6 @@ int prot_from_flags(int flags) _const_;
+ bool in_initrd(void);
+ void in_initrd_force(bool value);
+ 
+-void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
+-                 __compar_d_fn_t compar, void *arg);
+-
+-#define typesafe_bsearch_r(k, b, n, func, userdata)                     \
+-        ({                                                              \
+-                const typeof(b[0]) *_k = k;                             \
+-                int (*_func_)(const typeof(b[0])*, const typeof(b[0])*, typeof(userdata)) = func; \
+-                xbsearch_r((const void*) _k, (b), (n), sizeof((b)[0]), (__compar_d_fn_t) _func_, userdata); \
+-        })
+-
+ /**
+  * Normal bsearch requires base to be nonnull. Here were require
+  * that only if nmemb > 0.
+@@ -116,20 +111,6 @@ static inline void qsort_safe(void *base, size_t nmemb, size_t size, __compar_fn
+                 qsort_safe((p), (n), sizeof((p)[0]), (__compar_fn_t) _func_); \
+         })
+ 
+-static inline void qsort_r_safe(void *base, size_t nmemb, size_t size, __compar_d_fn_t compar, void *userdata) {
+-        if (nmemb <= 1)
+-                return;
+-
+-        assert(base);
+-        qsort_r(base, nmemb, size, compar, userdata);
+-}
+-
+-#define typesafe_qsort_r(p, n, func, userdata)                          \
+-        ({                                                              \
+-                int (*_func_)(const typeof(p[0])*, const typeof(p[0])*, typeof(userdata)) = func; \
+-                qsort_r_safe((p), (n), sizeof((p)[0]), (__compar_d_fn_t) _func_, userdata); \
+-        })
+-
+ /* Normal memcpy requires src to be nonnull. We do nothing if n is 0. */
+ static inline void memcpy_safe(void *dst, const void *src, size_t n) {
+         if (n == 0)
+diff --git a/src/platform/wifi/nm-wifi-utils.h b/src/platform/wifi/nm-wifi-utils.h
+index 36148b5..d282eb2 100644
+--- a/src/platform/wifi/nm-wifi-utils.h
++++ b/src/platform/wifi/nm-wifi-utils.h
+@@ -22,7 +22,11 @@
+ #ifndef __WIFI_UTILS_H__
+ #define __WIFI_UTILS_H__
+ 
++#if defined(__GLIBC__)
+ #include <net/ethernet.h>
++#else /* musl libc */
++#define ETH_ALEN	6		/* Octets in one ethernet addr	 */
++#endif
+ 
+ #include "nm-dbus-interface.h"
+ #include "nm-setting-wireless.h"
+diff --git a/src/platform/wpan/nm-wpan-utils.h b/src/platform/wpan/nm-wpan-utils.h
+index 1b54ec4..ed39938 100644
+--- a/src/platform/wpan/nm-wpan-utils.h
++++ b/src/platform/wpan/nm-wpan-utils.h
+@@ -20,8 +20,6 @@
+ #ifndef __WPAN_UTILS_H__
+ #define __WPAN_UTILS_H__
+ 
+-#include <net/ethernet.h>
+-
+ #include "nm-dbus-interface.h"
+ #include "platform/nm-netlink.h"
+ 
+diff --git a/src/settings/nm-settings-connection.h b/src/settings/nm-settings-connection.h
+index e796b71..c01fef6 100644
+--- a/src/settings/nm-settings-connection.h
++++ b/src/settings/nm-settings-connection.h
+@@ -22,8 +22,6 @@
+ #ifndef __NETWORKMANAGER_SETTINGS_CONNECTION_H__
+ #define __NETWORKMANAGER_SETTINGS_CONNECTION_H__
+ 
+-#include <net/ethernet.h>
+-
+ #include "nm-dbus-object.h"
+ #include "nm-connection.h"
+ 
+diff --git a/src/systemd/src/libsystemd-network/sd-lldp.c b/src/systemd/src/libsystemd-network/sd-lldp.c
+index 741128e..62914ae 100644
+--- a/src/systemd/src/libsystemd-network/sd-lldp.c
++++ b/src/systemd/src/libsystemd-network/sd-lldp.c
+@@ -3,6 +3,7 @@
+ #include "nm-sd-adapt-core.h"
+ 
+ #include <arpa/inet.h>
++#include <net/ethernet.h>
+ #include <linux/sockios.h>
+ #include <sys/ioctl.h>
+ 
+diff --git a/src/systemd/src/systemd/sd-dhcp-client.h b/src/systemd/src/systemd/sd-dhcp-client.h
+index bd0d429..c935fe1 100644
+--- a/src/systemd/src/systemd/sd-dhcp-client.h
++++ b/src/systemd/src/systemd/sd-dhcp-client.h
+@@ -20,7 +20,9 @@
+ ***/
+ 
+ #include <inttypes.h>
++#if defined(__GLIBC__)
+ #include <net/ethernet.h>
++#endif
+ #include <netinet/in.h>
+ #include <sys/types.h>
+ #include <stdbool.h>
+diff --git a/src/systemd/src/systemd/sd-dhcp-lease.h b/src/systemd/src/systemd/sd-dhcp-lease.h
+index d299c79..991e67e 100644
+--- a/src/systemd/src/systemd/sd-dhcp-lease.h
++++ b/src/systemd/src/systemd/sd-dhcp-lease.h
+@@ -19,7 +19,9 @@
+ ***/
+ 
+ #include <inttypes.h>
++#if defined(__GLIBC__)
+ #include <net/ethernet.h>
++#endif
+ #include <netinet/in.h>
+ #include <sys/types.h>
+ 
+diff --git a/src/systemd/src/systemd/sd-dhcp6-client.h b/src/systemd/src/systemd/sd-dhcp6-client.h
+index 43d38f5..57ab487 100644
+--- a/src/systemd/src/systemd/sd-dhcp6-client.h
++++ b/src/systemd/src/systemd/sd-dhcp6-client.h
+@@ -20,7 +20,9 @@
+ ***/
+ 
+ #include <inttypes.h>
++#if defined(__GLIBC__)
+ #include <net/ethernet.h>
++#endif
+ #include <sys/types.h>
+ 
+ #include "sd-dhcp6-lease.h"
+diff --git a/src/systemd/src/systemd/sd-ipv4ll.h b/src/systemd/src/systemd/sd-ipv4ll.h
+index 71bd4cf..1c667ba 100644
+--- a/src/systemd/src/systemd/sd-ipv4ll.h
++++ b/src/systemd/src/systemd/sd-ipv4ll.h
+@@ -19,7 +19,9 @@
+   along with systemd; If not, see <http://www.gnu.org/licenses/>.
+ ***/
+ 
++#if defined(__GLIBC__)
+ #include <net/ethernet.h>
++#endif
+ #include <netinet/in.h>
+ 
+ #include "sd-event.h"
+diff --git a/src/systemd/src/systemd/sd-lldp.h b/src/systemd/src/systemd/sd-lldp.h
+index bf3afad..4cace87 100644
+--- a/src/systemd/src/systemd/sd-lldp.h
++++ b/src/systemd/src/systemd/sd-lldp.h
+@@ -18,7 +18,7 @@
+ ***/
+ 
+ #include <inttypes.h>
+-#include <net/ethernet.h>
++//#include <net/ethernet.h>
+ #include <sys/types.h>
+ 
+ #include "sd-event.h"
+-- 
+2.20.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-sd-lldp.h-Remove-net-ethernet.h-seems-to-be-over-spe.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-sd-lldp.h-Remove-net-ethernet.h-seems-to-be-over-spe.patch
deleted file mode 100644
index 5c59208..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-sd-lldp.h-Remove-net-ethernet.h-seems-to-be-over-spe.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 32dc6cab58912add5bc6495558538953d9344c36 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 31 Mar 2017 16:48:00 -0700
-Subject: [PATCH] sd-lldp.h: Remove net/ethernet.h seems to be over specified
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- src/systemd/src/libsystemd-network/sd-lldp.c | 1 +
- src/systemd/src/systemd/sd-lldp.h            | 2 +-
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/systemd/src/libsystemd-network/sd-lldp.c b/src/systemd/src/libsystemd-network/sd-lldp.c
-index 741128e..62914ae 100644
---- a/src/systemd/src/libsystemd-network/sd-lldp.c
-+++ b/src/systemd/src/libsystemd-network/sd-lldp.c
-@@ -3,6 +3,7 @@
- #include "nm-sd-adapt-core.h"
- 
- #include <arpa/inet.h>
-+#include <net/ethernet.h>
- #include <linux/sockios.h>
- #include <sys/ioctl.h>
- 
-diff --git a/src/systemd/src/systemd/sd-lldp.h b/src/systemd/src/systemd/sd-lldp.h
-index bf3afad..4cace87 100644
---- a/src/systemd/src/systemd/sd-lldp.h
-+++ b/src/systemd/src/systemd/sd-lldp.h
-@@ -18,7 +18,7 @@
- ***/
- 
- #include <inttypes.h>
--#include <net/ethernet.h>
-+//#include <net/ethernet.h>
- #include <sys/types.h>
- 
- #include "sd-event.h"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0003-musl-basic.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0003-musl-basic.patch
deleted file mode 100644
index 8d90548..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0003-musl-basic.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From ff1a5b849755db67b1778940fff92d6eb8b8b050 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Thu, 22 Mar 2018 17:54:10 +0100
-Subject: [PATCH] Usual fix for musl libc
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Pending
-
-Stolen from [1] and prettyfied slightly
-
-[1] https://github.com/voidlinux/void-packages/tree/master/srcpkgs/NetworkManager/patches
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-
----
- shared/systemd/src/basic/stdio-util.h | 2 ++
- shared/systemd/src/basic/util.h       | 5 +++++
- 2 files changed, 7 insertions(+)
-
-diff --git a/shared/systemd/src/basic/stdio-util.h b/shared/systemd/src/basic/stdio-util.h
-index dc67b6e..6336243 100644
---- a/shared/systemd/src/basic/stdio-util.h
-+++ b/shared/systemd/src/basic/stdio-util.h
-@@ -1,7 +1,9 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
- #pragma once
- 
-+#if defined(__GLIBC__)
- #include <printf.h>
-+#endif
- #include <stdarg.h>
- #include <stdio.h>
- #include <sys/types.h>
-diff --git a/shared/systemd/src/basic/util.h b/shared/systemd/src/basic/util.h
-index dc33d66..8ee2d64 100644
---- a/shared/systemd/src/basic/util.h
-+++ b/shared/systemd/src/basic/util.h
-@@ -27,6 +27,11 @@
- #include "macro.h"
- #include "time-util.h"
- 
-+#if !defined(__GLIBC__)
-+typedef int (*__compar_fn_t) (const void*, const void*);
-+typedef __compar_fn_t comparison_fn_t;
-+#endif
-+
- size_t page_size(void) _pure_;
- #define PAGE_ALIGN(l) ALIGN_TO((l), page_size())
- 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0005-musl-network-support.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0005-musl-network-support.patch
deleted file mode 100644
index 45f607f..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0005-musl-network-support.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 70ecbc01874bf2f8603ccbdfda634cac0bb83d93 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Thu, 22 Mar 2018 18:24:07 +0100
-Subject: [PATCH] musl: network support
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Pending
-
-Stolen from [1] and prettyfied slightly
-
-[1] https://github.com/voidlinux/void-packages/tree/master/srcpkgs/NetworkManager/patches
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-
----
- libnm-core/nm-utils.h                  | 4 ++++
- shared/systemd/src/basic/socket-util.h | 6 ++++++
- src/platform/wifi/nm-wifi-utils.h      | 4 ++++
- 3 files changed, 14 insertions(+)
-
-diff --git a/libnm-core/nm-utils.h b/libnm-core/nm-utils.h
-index 2b5baba..976850c 100644
---- a/libnm-core/nm-utils.h
-+++ b/libnm-core/nm-utils.h
-@@ -30,7 +30,11 @@
- #include <netinet/in.h>
- 
- /* For ETH_ALEN and INFINIBAND_ALEN */
-+#if defined(__GLIBC__)
- #include <linux/if_ether.h>
-+#else
-+#define ETH_ALEN	6		/* Octets in one ethernet addr	 */
-+#endif
- #include <linux/if_infiniband.h>
- 
- #include "nm-core-enum-types.h"
-diff --git a/shared/systemd/src/basic/socket-util.h b/shared/systemd/src/basic/socket-util.h
-index d2246a8..76f257f 100644
---- a/shared/systemd/src/basic/socket-util.h
-+++ b/shared/systemd/src/basic/socket-util.h
-@@ -13,6 +13,12 @@
- #include <sys/types.h>
- #include <sys/un.h>
- 
-+#if !defined(__GLIBC__)
-+/* SIOCGSTAMPNS from linux/asm-generic.h
-+ * for src/systemd/src/libsystemd-network/sd-lldp.c */
-+#include <linux/sockios.h>
-+#endif
-+
- #include "macro.h"
- #include "missing_socket.h"
- #include "sparse-endian.h"
-diff --git a/src/platform/wifi/nm-wifi-utils.h b/src/platform/wifi/nm-wifi-utils.h
-index 36148b5..d282eb2 100644
---- a/src/platform/wifi/nm-wifi-utils.h
-+++ b/src/platform/wifi/nm-wifi-utils.h
-@@ -22,7 +22,11 @@
- #ifndef __WIFI_UTILS_H__
- #define __WIFI_UTILS_H__
- 
-+#if defined(__GLIBC__)
- #include <net/ethernet.h>
-+#else /* musl libc */
-+#define ETH_ALEN	6		/* Octets in one ethernet addr	 */
-+#endif
- 
- #include "nm-dbus-interface.h"
- #include "nm-setting-wireless.h"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0006-musl-process-util.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0006-musl-process-util.patch
deleted file mode 100644
index 525e359..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0006-musl-process-util.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 4f2fb1e1f785bad22df8f3d96cb4792acf21f315 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Thu, 25 Oct 2018 09:57:07 +0200
-Subject: [PATCH] musl: process-util
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Pending
-
-Stolen from [1] and prettyfied slightly
-
-[1] https://github.com/voidlinux/void-packages/tree/master/srcpkgs/NetworkManager/patches
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-
----
- shared/systemd/src/basic/process-util.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/shared/systemd/src/basic/process-util.c b/shared/systemd/src/basic/process-util.c
-index b0afb5c..7adc8bd 100644
---- a/shared/systemd/src/basic/process-util.c
-+++ b/shared/systemd/src/basic/process-util.c
-@@ -21,6 +21,9 @@
- #include <sys/wait.h>
- #include <syslog.h>
- #include <unistd.h>
-+#ifndef __GLIBC__
-+#include <pthread.h>
-+#endif
- #if 0 /* NM_IGNORED */
- #if HAVE_VALGRIND_VALGRIND_H
- #include <valgrind/valgrind.h>
-@@ -1168,11 +1171,13 @@ void reset_cached_pid(void) {
-         cached_pid = CACHED_PID_UNSET;
- }
- 
-+#ifdef __GLIBC__
- /* We use glibc __register_atfork() + __dso_handle directly here, as they are not included in the glibc
-  * headers. __register_atfork() is mostly equivalent to pthread_atfork(), but doesn't require us to link against
-  * libpthread, as it is part of glibc anyway. */
- extern int __register_atfork(void (*prepare) (void), void (*parent) (void), void (*child) (void), void *dso_handle);
- extern void* __dso_handle _weak_;
-+#endif
- 
- pid_t getpid_cached(void) {
-         static bool installed = false;
-@@ -1201,7 +1206,11 @@ pid_t getpid_cached(void) {
-                          * only half-documented (glibc doesn't document it but LSB does — though only superficially)
-                          * we'll check for errors only in the most generic fashion possible. */
- 
-+#ifdef __GLIBC__
-                         if (__register_atfork(NULL, NULL, reset_cached_pid, __dso_handle) != 0) {
-+#else
-+                        if (pthread_atfork(NULL, NULL, reset_cached_pid) != 0) {
-+#endif
-                                 /* OOM? Let's try again later */
-                                 cached_pid = CACHED_PID_UNSET;
-                                 return new_pid;
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0007-musl-avoid-further-conflicts-by-including-net-ethern.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0007-musl-avoid-further-conflicts-by-including-net-ethern.patch
deleted file mode 100644
index 211a2da..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0007-musl-avoid-further-conflicts-by-including-net-ethern.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 4232a34064e33b52f07cca51b902b93699800f72 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Mon, 16 Apr 2018 14:45:44 +0200
-Subject: [PATCH] musl: avoid further conflicts by including net/ethernet.h
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-
----
- src/systemd/src/systemd/sd-dhcp-client.h  | 2 ++
- src/systemd/src/systemd/sd-dhcp-lease.h   | 2 ++
- src/systemd/src/systemd/sd-dhcp6-client.h | 2 ++
- src/systemd/src/systemd/sd-ipv4ll.h       | 2 ++
- 4 files changed, 8 insertions(+)
-
-diff --git a/src/systemd/src/systemd/sd-dhcp-client.h b/src/systemd/src/systemd/sd-dhcp-client.h
-index bd0d429..c935fe1 100644
---- a/src/systemd/src/systemd/sd-dhcp-client.h
-+++ b/src/systemd/src/systemd/sd-dhcp-client.h
-@@ -20,7 +20,9 @@
- ***/
- 
- #include <inttypes.h>
-+#if defined(__GLIBC__)
- #include <net/ethernet.h>
-+#endif
- #include <netinet/in.h>
- #include <sys/types.h>
- #include <stdbool.h>
-diff --git a/src/systemd/src/systemd/sd-dhcp-lease.h b/src/systemd/src/systemd/sd-dhcp-lease.h
-index d299c79..991e67e 100644
---- a/src/systemd/src/systemd/sd-dhcp-lease.h
-+++ b/src/systemd/src/systemd/sd-dhcp-lease.h
-@@ -19,7 +19,9 @@
- ***/
- 
- #include <inttypes.h>
-+#if defined(__GLIBC__)
- #include <net/ethernet.h>
-+#endif
- #include <netinet/in.h>
- #include <sys/types.h>
- 
-diff --git a/src/systemd/src/systemd/sd-dhcp6-client.h b/src/systemd/src/systemd/sd-dhcp6-client.h
-index 43d38f5..57ab487 100644
---- a/src/systemd/src/systemd/sd-dhcp6-client.h
-+++ b/src/systemd/src/systemd/sd-dhcp6-client.h
-@@ -20,7 +20,9 @@
- ***/
- 
- #include <inttypes.h>
-+#if defined(__GLIBC__)
- #include <net/ethernet.h>
-+#endif
- #include <sys/types.h>
- 
- #include "sd-dhcp6-lease.h"
-diff --git a/src/systemd/src/systemd/sd-ipv4ll.h b/src/systemd/src/systemd/sd-ipv4ll.h
-index 71bd4cf..1c667ba 100644
---- a/src/systemd/src/systemd/sd-ipv4ll.h
-+++ b/src/systemd/src/systemd/sd-ipv4ll.h
-@@ -19,7 +19,9 @@
-   along with systemd; If not, see <http://www.gnu.org/licenses/>.
- ***/
- 
-+#if defined(__GLIBC__)
- #include <net/ethernet.h>
-+#endif
- #include <netinet/in.h>
- 
- #include "sd-event.h"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0008-Add-a-strndupa-replacement-for-musl.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0008-Add-a-strndupa-replacement-for-musl.patch
deleted file mode 100644
index 8858101..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0008-Add-a-strndupa-replacement-for-musl.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From cdd69321ec97ed19e66a747a968a1637a251b9e6 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Mon, 16 Apr 2018 15:07:20 +0200
-Subject: [PATCH] Add a strndupa replacement for musl
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-
----
- shared/systemd/src/basic/in-addr-util.c | 1 +
- shared/systemd/src/basic/string-util.h  | 5 +++++
- 2 files changed, 6 insertions(+)
-
-diff --git a/shared/systemd/src/basic/in-addr-util.c b/shared/systemd/src/basic/in-addr-util.c
-index 5ced350..c6b52b8 100644
---- a/shared/systemd/src/basic/in-addr-util.c
-+++ b/shared/systemd/src/basic/in-addr-util.c
-@@ -13,6 +13,7 @@
- #include "in-addr-util.h"
- #include "macro.h"
- #include "parse-util.h"
-+#include "string-util.h"
- #include "util.h"
- 
- bool in4_addr_is_null(const struct in_addr *a) {
-diff --git a/shared/systemd/src/basic/string-util.h b/shared/systemd/src/basic/string-util.h
-index 38070ab..6b918e0 100644
---- a/shared/systemd/src/basic/string-util.h
-+++ b/shared/systemd/src/basic/string-util.h
-@@ -27,6 +27,11 @@
- #define strcaseeq(a,b) (strcasecmp((a),(b)) == 0)
- #define strncaseeq(a, b, n) (strncasecmp((a), (b), (n)) == 0)
- 
-+/* musl does not know strndupa */
-+#if !defined(__GLIBC__)
-+#define strndupa(x,s) strncpy(alloca(strlen(x)+1),x,s)
-+#endif
-+
- int strcmp_ptr(const char *a, const char *b) _pure_;
- 
- static inline bool streq_ptr(const char *a, const char *b) {
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.16.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.16.0.bb
index bdf60ee..9f57908 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.16.0.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.16.0.bb
@@ -26,19 +26,14 @@
     ${GNOME_MIRROR}/NetworkManager/${@gnome_verdir("${PV}")}/NetworkManager-${PV}.tar.xz \
     file://0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch \
     file://0002-Do-not-create-settings-settings-property-documentati.patch \
-    file://musl/0001-Do-not-include-net-ethernet.h-and-linux-if_ether.h.patch \
-    file://musl/0002-sd-lldp.h-Remove-net-ethernet.h-seems-to-be-over-spe.patch \
-    file://musl/0003-musl-basic.patch \
-    file://musl/0004-musl-dlopen-configure-ac.patch \
-    file://musl/0005-musl-network-support.patch \
-    file://musl/0006-musl-process-util.patch \
-    file://musl/0007-musl-avoid-further-conflicts-by-including-net-ethern.patch \
-    file://musl/0008-Add-a-strndupa-replacement-for-musl.patch \
+    file://0003-dlopen-failure.patch \
 "
+SRC_URI_append_libc-musl = " file://musl/0001-Fix-build-with-musl.patch"
+
 SRC_URI[md5sum] = "10abacaafb162a67d2942adf03e7e9e4"
 SRC_URI[sha256sum] = "8e962833b6ca03edda1bc57ed6614a7b8c2339531b44acef098d05f2324c5d2c"
 
-UPSTREAM_CHECK_URI = "${GNOME_MIRROR}/NetworkManager/1.10/"
+UPSTREAM_CHECK_URI = "${GNOME_MIRROR}/NetworkManager/1.16/"
 UPSTREAM_CHECK_REGEX = "NetworkManager\-(?P<pver>1\.10(\.\d+)+).tar.xz"
 
 S = "${WORKDIR}/NetworkManager-${PV}"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.15.7.bb b/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.15.8.bb
similarity index 77%
rename from meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.15.7.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.15.8.bb
index 0a0a607..d4b9691 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.15.7.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.15.8.bb
@@ -12,9 +12,9 @@
 PROVIDES += "cyassl"
 RPROVIDES_${PN} = "cyassl"
 
-SRC_URI = "https://www.wolfssl.com/wolfssl-${PV}.zip"
-SRC_URI[md5sum] = "6ec08c09e3f51cccbb1686b4fd45f92f"
-SRC_URI[sha256sum] = "4cc318c49580d3b9c361fe258fac6106624aa744f1d34e03977b587766a753ee"
+SRC_URI = "git://github.com/wolfSSL/wolfssl.git;protocol=https"
+SRCREV = "e87433e2b6682aa7162fcb4aafefb08e2fbd932b"
+S = "${WORKDIR}/git"
 
 inherit autotools
 
diff --git a/meta-openembedded/meta-networking/recipes-support/fping/fping_3.5.bb b/meta-openembedded/meta-networking/recipes-support/fping/fping_4.2.bb
similarity index 80%
rename from meta-openembedded/meta-networking/recipes-support/fping/fping_3.5.bb
rename to meta-openembedded/meta-networking/recipes-support/fping/fping_4.2.bb
index 82e3bf0..594f5b9 100644
--- a/meta-openembedded/meta-networking/recipes-support/fping/fping_3.5.bb
+++ b/meta-openembedded/meta-networking/recipes-support/fping/fping_4.2.bb
@@ -9,11 +9,11 @@
 HOMEPAGE = "http://www.fping.org/"
 SECTION = "net"
 LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=09d77789fe32be35acde9637a5ee39b1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c6170fbadddfcd74f011515291d96901"
 
 SRC_URI = "http://www.fping.org/dist/fping-${PV}.tar.gz"
-SRC_URI[md5sum] = "2e17cb655aa4eb59b5a4a38a89e746ed"
-SRC_URI[sha256sum] = "09b8960e235341bae6000085d38106357eae656a79e0119bd27e816c9003656a"
+SRC_URI[md5sum] = "218e71764177a8ce25564a7810f8e729"
+SRC_URI[sha256sum] = "7d339674b6a95aae1d8ad487ff5056fd95b474c3650938268f6a905c3771b64a"
 
 S = "${WORKDIR}/fping-${PV}"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/fix-CVE-2015-4047.patch b/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/fix-CVE-2015-4047.patch
index 5286376..7e033af 100644
--- a/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/fix-CVE-2015-4047.patch
+++ b/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/fix-CVE-2015-4047.patch
@@ -2,6 +2,8 @@
 
 Upstream-Status: Backport
 
+CVE: CVE-2015-4047
+
 http://www.openwall.com/lists/oss-security/2015/05/20/1
 
 racoon/gssapi.c in IPsec-Tools 0.8.2 allows remote attackers to cause
diff --git a/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/fix-CVE-2016-10396.patch b/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/fix-CVE-2016-10396.patch
index bd07965..19220c4 100644
--- a/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/fix-CVE-2016-10396.patch
+++ b/meta-openembedded/meta-networking/recipes-support/ipsec-tools/ipsec-tools/fix-CVE-2016-10396.patch
@@ -1,6 +1,6 @@
 Upstream-Status: Backport [https://anonscm.debian.org/cgit/pkg-ipsec-tools/pkg-ipsec-tools.git/plain/debian/patches/CVE-2016-10396.patch?id=62ac12648a4eb7c5ba5dba0f81998d1acf310d8b]
 
-Fix CVE-2016-10396.
+CVE: CVE-2016-10396.
 
 Signed-off-by: Kai Kang <kai.kang@windriver.com>
 ---
diff --git a/meta-openembedded/meta-networking/recipes-support/nuttcp/nuttcp_7.2.1.bb b/meta-openembedded/meta-networking/recipes-support/nuttcp/nuttcp_7.3.3.bb
similarity index 69%
rename from meta-openembedded/meta-networking/recipes-support/nuttcp/nuttcp_7.2.1.bb
rename to meta-openembedded/meta-networking/recipes-support/nuttcp/nuttcp_7.3.3.bb
index 9430add..ec40678 100644
--- a/meta-openembedded/meta-networking/recipes-support/nuttcp/nuttcp_7.2.1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/nuttcp/nuttcp_7.3.3.bb
@@ -1,6 +1,3 @@
-# Copyright (C) 2013 Khem Raj <raj.khem@gmail.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
 SUMMARY = "network performance measurement tool"
 DESCRIPTION = "nuttcp is a network performance measurement tool intended for use by network \
 and system managers. Its most basic usage is to determine the raw TCP (or UDP) \
@@ -11,11 +8,11 @@
 HOMEPAGE = "http://www.nuttcp.net/Welcome%20Page.html"
 LICENSE = "GPL-2.0"
 SECTION = "net"
-LIC_FILES_CHKSUM = "file://${BP}.c;beginline=4;endline=30;md5=ae7045c3c3616092e07d87f04ba0d960"
+LIC_FILES_CHKSUM = "file://${BP}.c;beginline=4;endline=30;md5=c55daba5a5a869a123c3565de07d15a6"
 
 SRC_URI = "http://nuttcp.net/${BPN}/beta/${BP}.c"
-SRC_URI[md5sum] = "1ebf4a08bad2a295a8155f02995e8754"
-SRC_URI[sha256sum] = "c6e33810ccce67260f8d5d627f60e429d44f532365c58ed5673d035e2a59c4db"
+SRC_URI[md5sum] = "dfbff3c38fb0cbdc474ca6d13539d425"
+SRC_URI[sha256sum] = "d68e291a72375d76f301d54aa945727c95e78090aa6783a4844764e632e98a4a"
 
 S = "${WORKDIR}"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_4.2.6.bb b/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_4.3.2.bb
similarity index 75%
rename from meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_4.2.6.bb
rename to meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_4.3.2.bb
index 681ef02..a808c27 100644
--- a/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_4.2.6.bb
+++ b/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_4.3.2.bb
@@ -8,8 +8,8 @@
 
 SRC_URI = "https://github.com/appneta/tcpreplay/releases/download/v${PV}/tcpreplay-${PV}.tar.gz"
 
-SRC_URI[md5sum] = "3e65d5b872e441c6a0038191a3dc7ce9"
-SRC_URI[sha256sum] = "043756c532dab93e2be33a517ef46b1341f7239278a1045ae670041dd8a4531d"
+SRC_URI[md5sum] = "dfa0d1b3dfd2cd316291a7a20563b649"
+SRC_URI[sha256sum] = "4f479bd9196cafde70c58ab072ca4959ecc5278555cf1aa7cf42f7f210daa951"
 
 DEPENDS = "libpcap"
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.12.bb b/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.12.bb
index 2deb42d..e85e7c7 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.12.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.12.bb
@@ -16,6 +16,7 @@
 PACKAGECONFIG_NUMA = "numa"
 # ARM does not currently support NUMA
 PACKAGECONFIG_NUMA_arm = ""
+PACKAGECONFIG_NUMA_armeb = ""
 
 PACKAGECONFIG ??= "${PACKAGECONFIG_NUMA}"
 PACKAGECONFIG[numa] = ",--disable-numa,numactl"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
index 9aff59c..11ea3be 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
@@ -4,8 +4,8 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=db174eaf7b55a34a7c89551197f66e94"
 DEPENDS = "zeromq"
 
-SRCREV = "6aa3ab686e916cb0e62df7fa7d12e0b13ae9fae6"
-PV = "4.2.3+git${SRCPV}"
+SRCREV = "213da0b04ae3b4d846c9abc46bab87f86bfb9cf4"
+PV = "4.3.0"
 
 SRC_URI = "git://github.com/zeromq/cppzmq.git"
 
@@ -13,6 +13,8 @@
 
 inherit cmake
 
+EXTRA_OECMAKE = "-DCPPZMQ_BUILD_TESTS=OFF"
+
 PACKAGES = "${PN}-dev"
 
 RDEPENDS_${PN}-dev = "zeromq-dev"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/czmq_4.1.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/czmq_4.1.1.bb
deleted file mode 100644
index f2db004..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/czmq_4.1.1.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-DESCRIPTION = "C bindings for ZeroMQ"
-HOMEPAGE = "http://www.zeromq.org"
-LICENSE = "MPL-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=9741c346eef56131163e13b9db1241b3"
-DEPENDS = "zeromq"
-
-SRC_URI = "https://github.com/zeromq/czmq/releases/download/v${PV}/czmq-${PV}.tar.gz \
-    file://0001-Problem-out-of-date-with-zproject.patch \
-"
-
-SRC_URI[md5sum] = "6d3a6fdd25c2bb29897c53670dce97bf"
-SRC_URI[sha256sum] = "f00ff419881dc2a05d0686c8467cd89b4882677fc56f31c0e2cc81c134cbb0c0"
-
-inherit cmake
-
-PACKAGES = "lib${BPN} lib${BPN}-dev lib${BPN}-staticdev ${PN} ${PN}-dbg"
-
-FILES_${PN} = "${bindir}/*"
-FILES_lib${BPN} = "${libdir}/*.so.*"
-FILES_lib${BPN}-dev = "${libdir}/*.so ${libdir}/pkgconfig ${includedir}"
-FILES_lib${BPN}-staticdev = "${libdir}/lib*.a"
-
-RDEPENDS_lib${BPN}-dev = "zeromq-dev"
-
-PACKAGECONFIG ??= "lz4 uuid"
-PACKAGECONFIG[lz4] = ",-DCMAKE_DISABLE_FIND_PACKAGE_lz4=TRUE,lz4"
-PACKAGECONFIG[uuid] = ",-DCMAKE_DISABLE_FIND_PACKAGE_uuid=TRUE,util-linux"
-
-BBCLASSEXTEND = "nativesdk"
-
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/czmq_4.2.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/czmq_4.2.0.bb
new file mode 100644
index 0000000..4ec1c04
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/czmq_4.2.0.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "High-level C binding for 0MQ"
+HOMEPAGE = "http://czmq.zeromq.org/"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9741c346eef56131163e13b9db1241b3"
+DEPENDS = "zeromq"
+
+SRC_URI = "https://github.com/zeromq/czmq/releases/download/v${PV}/czmq-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "7e09997db6ac3b25e8ed104053040722"
+SRC_URI[sha256sum] = "cfab29c2b3cc8a845749758a51e1dd5f5160c1ef57e2a41ea96e4c2dcc8feceb"
+
+inherit cmake
+
+PACKAGES = "lib${BPN} lib${BPN}-dev lib${BPN}-staticdev ${PN} ${PN}-dbg"
+
+FILES_${PN} = "${bindir}/*"
+FILES_lib${BPN} = "${libdir}/*.so.*"
+FILES_lib${BPN}-dev = "${libdir}/*.so ${libdir}/pkgconfig ${includedir} ${datadir}/cmake"
+FILES_lib${BPN}-staticdev = "${libdir}/lib*.a"
+
+RDEPENDS_lib${BPN}-dev = "zeromq-dev"
+
+PACKAGECONFIG ??= "lz4 uuid curl ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG[lz4] = ",-DCMAKE_DISABLE_FIND_PACKAGE_lz4=TRUE,lz4"
+PACKAGECONFIG[uuid] = ",-DCMAKE_DISABLE_FIND_PACKAGE_uuid=TRUE,util-linux"
+PACKAGECONFIG[curl] = ",-DCMAKE_DISABLE_FIND_PACKAGE_libcurl=TRUE,curl"
+PACKAGECONFIG[systemd] = ",-DCMAKE_DISABLE_FIND_PACKAGE_systemd=TRUE,systemd"
+
+BBCLASSEXTEND = "nativesdk"
+
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/files/0001-Problem-out-of-date-with-zproject.patch b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/files/0001-Problem-out-of-date-with-zproject.patch
deleted file mode 100644
index 5f5702c..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/files/0001-Problem-out-of-date-with-zproject.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From d155ffd33630f80b23c31b3a6e01da221dd9bd13 Mon Sep 17 00:00:00 2001
-From: Luca Boccassi <luca.boccassi@gmail.com>
-Date: Fri, 30 Mar 2018 16:36:22 +0100
-Subject: [PATCH] Problem: out of date with zproject
-
-Upstream-Status: backport
-Signed-off-by: Adrian Bunk <bunk@stusta.de>
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index a3b81722..4f203461 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -38,7 +38,7 @@ if (NOT CMAKE_BUILD_TYPE)
-             OUTPUT_STRIP_TRAILING_WHITESPACE
-         )
-         message(STATUS "git workspace root [${git_result}]: ${git_root}")
--        if ( "${git_result}" == "0" )
-+        if ( "${git_result}" STREQUAL "0" )
-             set (CMAKE_BUILD_TYPE Debug)
-         else ()
-             set (CMAKE_BUILD_TYPE Release)
-@@ -608,7 +608,7 @@ add_custom_command(
-     TARGET  distclean
- )
- 
--include(ClangFormat)
-+include(ClangFormat OPTIONAL)
- 
- ########################################################################
- # summary
-
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.2.5.bb b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.2.5.bb
deleted file mode 100644
index 356348b..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.2.5.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-DESCRIPTION = "ZeroMQ looks like an embeddable networking library but acts like a concurrency framework"
-HOMEPAGE = "http://www.zeromq.org"
-LICENSE = "LGPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=d5311495d952062e0e4fbba39cbf3de1"
-
-PACKAGECONFIG ??= "libsodium"
-PACKAGECONFIG[libsodium] = "--with-libsodium, --without-libsodium, libsodium"
-
-SRC_URI = "http://github.com/zeromq/libzmq/releases/download/v${PV}/zeromq-${PV}.tar.gz \
-    file://run-ptest \
-"
-SRC_URI[md5sum] = "a1c95b34384257e986842f4d006957b8"
-SRC_URI[sha256sum] = "cc9090ba35713d59bb2f7d7965f877036c49c5558ea0c290b0dcc6f2a17e489f"
-
-S = "${WORKDIR}/zeromq-${PV}"
-
-#Uncomment to choose polling system manually. valid values are kqueue, epoll, devpoll, poll or select
-#EXTRA_OECONF += "--with-poller=kqueue"
-#CFLAGS_append = " -O0"
-#CXXFLAGS_append = " -O0"
-
-inherit autotools ptest pkgconfig
-
-do_compile_ptest () {
-    echo 'buildtest-TESTS: $(check_PROGRAMS)' >> ${B}/Makefile
-    oe_runmake buildtest-TESTS
-}
-
-do_install_ptest () {
-    install -d ${D}${PTEST_PATH}/tests
-    install -m 0755 ${B}/tests/.libs/test_* ${D}${PTEST_PATH}/tests
-}
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.1.bb
new file mode 100644
index 0000000..6e13376
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.1.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "ZeroMQ looks like an embeddable networking library but acts like a concurrency framework"
+HOMEPAGE = "http://www.zeromq.org"
+LICENSE = "LGPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=d5311495d952062e0e4fbba39cbf3de1"
+
+PACKAGECONFIG ??= "libsodium"
+PACKAGECONFIG[libsodium] = "-DWITH_LIBSODIUM=ON,-DWITH_LIBSODIUM=OFF, libsodium"
+
+SRC_URI = "http://github.com/zeromq/libzmq/releases/download/v${PV}/zeromq-${PV}.tar.gz \
+    file://run-ptest \
+"
+SRC_URI[md5sum] = "64cbf3577afdbfda30358bc757a6ac83"
+SRC_URI[sha256sum] = "bcbabe1e2c7d0eec4ed612e10b94b112dd5f06fcefa994a0c79a45d835cd21eb"
+
+inherit cmake ptest pkgconfig
+
+EXTRA_OECMAKE = "${@bb.utils.contains('PTEST_ENABLED', '1', '-DBUILD_TESTS=ON', '-DBUILD_TESTS=OFF', d)} \
+                 -DCMAKE_SKIP_RPATH=ON \
+"
+
+do_install_ptest () {
+    install -d ${D}${PTEST_PATH}/tests
+    install -m 0755 ${B}/bin/test_* ${D}${PTEST_PATH}/tests
+}
+
+FILES_${PN}-doc += "${datadir}/zmq/*.txt"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools-conf/android-gadget-setup b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools-conf/android-gadget-setup
index f7d9973..beca353 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools-conf/android-gadget-setup
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools-conf/android-gadget-setup
@@ -1,5 +1,8 @@
 #!/bin/sh
 
+[ ! -e /dev/pts ] && mkdir -p /dev/pts
+[ ! -e /dev/pts/0 ] && mount devpts /dev/pts -t devpts
+
 # TODO enable the lines below once we have support for getprop
 # retrieve the product info from Android
 # manufacturer=$(getprop ro.product.manufacturer Android)
@@ -17,7 +20,7 @@
 echo $model > /sys/class/android_usb/android0/iProduct
 
 echo "0" > /sys/class/android_usb/android0/enable
-echo "18d1" > /sys/class/android_usbid_usb/android0/idVendor
+echo "18d1" > /sys/class/android_usb/android0/idVendor
 echo "D002" > /sys/class/android_usb/android0/idProduct
 echo "adb" > /sys/class/android_usb/android0/functions
 echo "1" >  /sys/class/android_usb/android0/enable
diff --git a/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.15.bb b/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.15.bb
index 7846846..2435b58 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.15.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.15.bb
@@ -4,8 +4,6 @@
 LICENSE = "GPL-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-inherit cmake python3native
-
 DEPENDS = "flex-native bison-native"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.src.tar.gz \
@@ -13,4 +11,11 @@
 SRC_URI[md5sum] = "2c98c73eba392d334f5bbaf15e09bae3"
 SRC_URI[sha256sum] = "bd9c0ec462b6a9b5b41ede97bede5458e0d7bb40d4cfa27f6f622eb33c59245d"
 
+inherit cmake python3native
+
+# Avoid the following error:
+#   ninja: error: build.ninja:1948: multiple rules generate
+#   generated_src/configvalues.h [-w dupbuild=err]
+EXTRA_OECMAKE_BUILD += "-w dupbuild=warn"
+
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20181209-3.1.bb b/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20190324-3.1.bb
similarity index 81%
rename from meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20181209-3.1.bb
rename to meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20190324-3.1.bb
index c0a3d21..9d333e7 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20181209-3.1.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20190324-3.1.bb
@@ -15,8 +15,8 @@
 SRC_URI = "http://www.thrysoee.dk/editline/${BPN}-${PV}.tar.gz \
            file://stdc-predef.patch \
           "
-SRC_URI[md5sum] = "22e945a0476e388e6f78bfc8d6e1192c"
-SRC_URI[sha256sum] = "2811d70c0b000f2ca91b7cb1a37203134441743c4fcc9c37b0b687f328611064"
+SRC_URI[md5sum] = "bec755c8044ad84b752dfe49a0b371d8"
+SRC_URI[sha256sum] = "ac8f0f51c1cf65492e4d1e3ed2be360bda41e54633444666422fbf393bba1bae"
 
 S = "${WORKDIR}/${BPN}-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0001-Fix-parallel-build-fix-port-internal-make-dependenci.patch b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0001-Fix-parallel-build-fix-port-internal-make-dependenci.patch
new file mode 100644
index 0000000..8505ea3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc/0001-Fix-parallel-build-fix-port-internal-make-dependenci.patch
@@ -0,0 +1,33 @@
+From 67d808b8739817c122bed8ba1a8308d01cb5ad0b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Apr 2019 17:28:28 -0700
+Subject: [PATCH] Fix parallel build (fix port-internal make dependencies) on
+ many cores
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ server/drivers/Makefile.am | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/server/drivers/Makefile.am b/server/drivers/Makefile.am
+index 0c23a9b..6777047 100644
+--- a/server/drivers/Makefile.am
++++ b/server/drivers/Makefile.am
+@@ -47,11 +47,11 @@ CwLnx_LDADD =        libLCD.a libbignum.a
+ futaba_LDADD =       @LIBUSB_LIBS@ @LIBUSB_1_0_LIBS@ libLCD.a
+ g15_LDADD =          @LIBG15@
+ glcd_LDADD =         libLCD.a @GLCD_DRIVERS@ @FT2_LIBS@ @LIBPNG_LIBS@ @LIBSERDISP@ @LIBUSB_LIBS@ @LIBX11_LIBS@
+-glcd_DEPENDENCIES =  @GLCD_DRIVERS@ glcd-glcd-render.o
++glcd_DEPENDENCIES =  @GLCD_DRIVERS@ glcd-glcd-render.o libLCD.a
+ glcdlib_LDADD =      @LIBGLCD@
+ glk_LDADD =          libbignum.a
+ hd44780_LDADD =      libLCD.a @HD44780_DRIVERS@ @HD44780_I2C@ @LIBUSB_LIBS@ @LIBFTDI_LIBS@ @LIBUGPIO@ libbignum.a
+-hd44780_DEPENDENCIES = @HD44780_DRIVERS@ @HD44780_I2C@
++hd44780_DEPENDENCIES = @HD44780_DRIVERS@ @HD44780_I2C@ libLCD.a libbignum.a
+ i2500vfd_LDADD =     @LIBFTDI_LIBS@
+ imon_LDADD =         libLCD.a libbignum.a
+ imonlcd_LDADD =      libLCD.a
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb
index 1354997..7ddc55f 100644
--- a/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb
@@ -11,8 +11,9 @@
 
 BASEPV = "0.5.9"
 PV = "${BASEPV}+git${SRCPV}"
-SRCREV = "a4b5a7e058fdd0d914a61138748b589c0128b45b"
+SRCREV = "e08546c13a4157ed98cd4a8e9086e7acd66f93c0"
 SRC_URI = "git://github.com/lcdproc/lcdproc \
+           file://0001-Fix-parallel-build-fix-port-internal-make-dependenci.patch \
            "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.4.bb b/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.4.bb
index d438a0a..cc45fa7 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.4.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.4.bb
@@ -1,7 +1,4 @@
 require libmodbus.inc
 
-# Use the stable branch by default
-DEFAULT_PREFERENCE = "-1"
-
 SRC_URI[md5sum] = "b1a8fd3a40d2db4de51fb0cbcb201806"
 SRC_URI[sha256sum] = "c8c862b0e9a7ba699a49bc98f62bdffdfafd53a5716c0e162696b4bf108d3637"
diff --git a/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.17.bb b/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.18.bb
similarity index 85%
rename from meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.17.bb
rename to meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.18.bb
index 4354fff..c76e0f6 100644
--- a/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.17.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.18.bb
@@ -9,8 +9,8 @@
 DEPENDS = "liblockfile"
 
 SRC_URI = "http://ftp.de.debian.org/debian/pool/main/l/${BPN}/${BPN}_${PV}.tar.gz"
-SRC_URI[md5sum] = "64424a766fbc8cf6d613fcc14a096e14"
-SRC_URI[sha256sum] = "03fb05d25499532f497775b1747b61fa6beebf12d3bcc951e125349ae166c511"
+SRC_URI[md5sum] = "4eb83bdf88016db836b7cc09591fb0f3"
+SRC_URI[sha256sum] = "a42995a4b97e6188efc90fcc1a761163c4b2cff5c81b936f85c84301ddb05ce6"
 
 do_compile() {
     oe_runmake CFLAGS=' -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fasynchronous-unwind-tables'
diff --git a/meta-openembedded/meta-oe/recipes-extended/redis/redis_4.0.12.bb b/meta-openembedded/meta-oe/recipes-extended/redis/redis_4.0.12.bb
index af99537..f09d226 100644
--- a/meta-openembedded/meta-oe/recipes-extended/redis/redis_4.0.12.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/redis/redis_4.0.12.bb
@@ -31,6 +31,10 @@
 
 REDIS_ON_SYSTEMD = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}"
 
+do_compile_prepend() {
+    (cd deps && oe_runmake hiredis lua jemalloc linenoise)
+}
+
 do_install() {
     export PREFIX=${D}/${prefix}
     oe_runmake install
diff --git a/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.0.bb b/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.0.bb
index ff99574..4a6c446 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.0.bb
@@ -50,6 +50,7 @@
     --disable-tcl \
     --disable-rpath \
     --enable-nls=${USE_NLS} \
+    --disable-docs \
 "
 
 export STAGING_LIBDIR
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.1903.0.bb b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.1903.0.bb
index e06141e..f1a6e85 100644
--- a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.1903.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.1903.0.bb
@@ -68,6 +68,7 @@
 PACKAGECONFIG[gnutls] = "--enable-gnutls,--disable-gnutls,gnutls,"
 PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--without-systemdsystemunitdir,systemd,"
 PACKAGECONFIG[imjournal] = "--enable-imjournal,--disable-imjournal,"
+PACKAGECONFIG[mmjsonparse] = "--enable-mmjsonparse,--disable-mmjsonparse,"
 PACKAGECONFIG[mysql] = "--enable-mysql,--disable-mysql,mysql5,"
 PACKAGECONFIG[postgresql] = "--enable-pgsql,--disable-pgsql,postgresql,"
 PACKAGECONFIG[libdbi] = "--enable-libdbi,--disable-libdbi,libdbi,"
@@ -136,6 +137,10 @@
         install -d 0755 ${D}${sysconfdir}/rsyslog.d
         echo '$ModLoad imjournal' >> ${D}${sysconfdir}/rsyslog.d/imjournal.conf
     fi
+    if ${@bb.utils.contains('PACKAGECONFIG', 'mmjsonparse', 'true', 'false', d)}; then
+        install -d 0755 ${D}${sysconfdir}/rsyslog.d
+        echo '$ModLoad mmjsonparse' >> ${D}${sysconfdir}/rsyslog.d/mmjsonparse.conf
+    fi
 }
 
 FILES_${PN} += "${bindir}"
diff --git a/meta-openembedded/meta-oe/recipes-gnome/libpeas/libpeas_1.22.0.bb b/meta-openembedded/meta-oe/recipes-gnome/libpeas/libpeas_1.22.0.bb
index c1ead06..dd1b53e 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/libpeas/libpeas_1.22.0.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/libpeas/libpeas_1.22.0.bb
@@ -5,7 +5,11 @@
 
 DEPENDS = "gnome-common gtk+3 intltool-native"
 
-inherit gnomebase gobject-introspection gtk-doc gtk-icon-cache
+inherit gnomebase gobject-introspection gtk-doc gtk-icon-cache distro_features_check
+
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+UNKNOWN_CONFIGURE_WHITELIST_append = " --enable-introspection --disable-introspection"
 
 SRC_URI[archive.md5sum] = "a20dc55c3f88ad06da9491cfd7de7558"
 SRC_URI[archive.sha256sum] = "5b2fc0f53962b25bca131a5ec0139e6fef8e254481b6e777975f7a1d2702a962"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_git.bb b/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_git.bb
index 88a859b..6a806ff 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_git.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_git.bb
@@ -25,6 +25,9 @@
 PACKAGECONFIG[sdl] = "-DWITH_SDL=ON,-DWITH_SDL=OFF,libsdl2"
 PACKAGECONFIG[zlib] = "-DWITH_ZLIB=ON,-DWITH_ZLIB=OFF,zlib"
 
+PACKAGE_BEFORE_PN = "libvncclient"
+FILES_libvncclient = "${libdir}/libvncclient.*"
+
 inherit cmake
 
 SRC_URI = "git://github.com/LibVNC/libvncserver"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss/libio.patch b/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss/libio.patch
index 5299945..835b266 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss/libio.patch
+++ b/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss/libio.patch
@@ -1,18 +1,28 @@
-Index: alsa-oss-1.0.28/alsa/stdioemu.c
-===================================================================
---- alsa-oss-1.0.28.orig/alsa/stdioemu.c
-+++ alsa-oss-1.0.28/alsa/stdioemu.c
+From 54b1c2e27bf81f94c727b4923d4ed592110e2796 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sun, 29 May 2011 21:05:15 +0200
+
+---
+ alsa/stdioemu.c | 8 +++++++-
+ configure.ac    | 6 ++++++
+ 2 files changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/alsa/stdioemu.c b/alsa/stdioemu.c
+index f7f9ab5..b673fe3 100644
+--- a/alsa/stdioemu.c
++++ b/alsa/stdioemu.c
 @@ -37,7 +37,9 @@
  #endif
  
  #include <stdio.h>
+-
 +#ifdef HAVE_LIBIO_H
- #include <libio.h>
++#include <libio.h>
 +#endif
- 
  struct fd_cookie {
  	int fd;
-@@ -99,7 +101,11 @@ static FILE *fake_fopen(const char *path
+ };
+@@ -98,7 +100,11 @@ static FILE *fake_fopen(const char *path, const char *mode, int flags)
  
  	if (open_mode && fdc->fd > 0) {
  		result = fopencookie (fdc,"w", fns);
@@ -24,10 +34,10 @@
  	}
  	return result;
  }
-Index: alsa-oss-1.0.28/configure.ac
-===================================================================
---- alsa-oss-1.0.28.orig/configure.ac
-+++ alsa-oss-1.0.28/configure.ac
+diff --git a/configure.ac b/configure.ac
+index 583b95f..60a1025 100644
+--- a/configure.ac
++++ b/configure.ac
 @@ -35,6 +35,12 @@ if test "$with_aoss" = "yes"; then
    LIBS="$OLD_LIBS"
  fi
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.6.bb b/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb
similarity index 90%
rename from meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.6.bb
rename to meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb
index 6c2176f..46ab503 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.6.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb
@@ -30,8 +30,8 @@
 SRC_URI = "ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-${PV}.tar.bz2 \
     file://libio.patch \
 "
-SRC_URI[md5sum] = "fc845cafc4444193510ab1865c7350b8"
-SRC_URI[sha256sum] = "c3d3f743e61f05ff95c5cba3b06bc9c91ff86c37495f1d19dab844e6b90845ea"
+SRC_URI[md5sum] = "9ec4bb783fdce19032aace086d65d874"
+SRC_URI[sha256sum] = "64adcef5927e848d2e024e64c4bf85b6f395964d9974ec61905ae4cb8d35d68e"
 
 inherit autotools
 
diff --git a/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.10.1.bb b/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.10.1.bb
deleted file mode 100644
index 26e191b..0000000
--- a/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.10.1.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require augeas.inc
-
-SRC_URI[md5sum] = "6c0b2ea6eec45e8bc374b283aedf27ce"
-SRC_URI[sha256sum] = "52db256afab261d31cc147eaa1a71795a5fec59e888dfd0b65a84c7aacd6364d"
diff --git a/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.11.0.bb b/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.11.0.bb
new file mode 100644
index 0000000..cdd11be
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.11.0.bb
@@ -0,0 +1,4 @@
+require augeas.inc
+
+SRC_URI[md5sum] = "abf51f4c0cf3901d167f23687f60434a"
+SRC_URI[sha256sum] = "393ce8f4055af89cd4c20bf903eacbbd909cf427891f41b56dc2ba66243ea0b0"
diff --git a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/1094.patch b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/1094.patch
new file mode 100644
index 0000000..3daad97
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/1094.patch
@@ -0,0 +1,307 @@
+From d672de675a16e5ab9efcf783705cbd171f38188e Mon Sep 17 00:00:00 2001
+From: "Billy O'Neal (VC LIBS)" <bion@microsoft.com>
+Date: Thu, 28 Mar 2019 15:17:12 -0700
+Subject: [PATCH] Avoid tripping over 32 bit time_t mistakes.
+
+Resolves https://github.com/Microsoft/cpprestsdk/issues/1090
+---
+ Release/src/utilities/asyncrt_utils.cpp     |  30 ++---
+ Release/tests/functional/utils/datetime.cpp | 140 ++++++++++----------
+ 2 files changed, 84 insertions(+), 86 deletions(-)
+
+diff --git a/Release/src/utilities/asyncrt_utils.cpp b/Release/src/utilities/asyncrt_utils.cpp
+index 4a692e5fa..986b64bb7 100644
+--- a/Release/src/utilities/asyncrt_utils.cpp
++++ b/Release/src/utilities/asyncrt_utils.cpp
+@@ -618,7 +618,7 @@ std::string __cdecl conversions::to_utf8string(const utf16string& value) { retur
+ 
+ utf16string __cdecl conversions::to_utf16string(const std::string& value) { return utf8_to_utf16(value); }
+ 
+-static const uint64_t ntToUnixOffsetSeconds = 11644473600U; // diff between windows and unix epochs (seconds)
++static const int64_t ntToUnixOffsetSeconds = 11644473600; // diff between windows and unix epochs (seconds)
+ 
+ datetime __cdecl datetime::utc_now()
+ {
+@@ -634,10 +634,10 @@ datetime __cdecl datetime::utc_now()
+ #else // LINUX
+     struct timeval time;
+     gettimeofday(&time, nullptr);
+-    uint64_t result = ntToUnixOffsetSeconds + time.tv_sec;
++    int64_t result = ntToUnixOffsetSeconds + time.tv_sec;
+     result *= _secondTicks;      // convert to 10e-7
+     result += time.tv_usec * 10; // convert and add microseconds, 10e-6 to 10e-7
+-    return datetime(result);
++    return datetime(static_cast<interval_type>(result));
+ #endif
+ }
+ 
+@@ -646,7 +646,7 @@ static const char monthNames[] = "Jan\0Feb\0Mar\0Apr\0May\0Jun\0Jul\0Aug\0Sep\0O
+ 
+ utility::string_t datetime::to_string(date_format format) const
+ {
+-    const uint64_t input = m_interval / _secondTicks; // convert to seconds
++    const int64_t input = static_cast<int64_t>(m_interval / _secondTicks); // convert to seconds
+     const int frac_sec = static_cast<int>(m_interval % _secondTicks);
+     const time_t time = static_cast<time_t>(input - ntToUnixOffsetSeconds);
+     struct tm t;
+@@ -797,22 +797,20 @@ static int atoi2(const CharT* str)
+     return (static_cast<unsigned char>(str[0]) - '0') * 10 + (static_cast<unsigned char>(str[1]) - '0');
+ }
+ 
+-static const time_t maxTimeT = sizeof(time_t) == 4 ? (time_t)INT_MAX : (time_t)LLONG_MAX;
+-
+-static time_t timezone_adjust(time_t result, unsigned char chSign, int adjustHours, int adjustMinutes)
++static int64_t timezone_adjust(int64_t result, unsigned char chSign, int adjustHours, int adjustMinutes)
+ {
+     if (adjustHours > 23)
+     {
+-        return (time_t)-1;
++        return -1;
+     }
+ 
+     // adjustMinutes > 59 is impossible due to digit 5 check
+     const int tzAdjust = adjustMinutes * 60 + adjustHours * 60 * 60;
+     if (chSign == '-')
+     {
+-        if (maxTimeT - result < tzAdjust)
++        if (INT64_MAX - result < tzAdjust)
+         {
+-            return (time_t)-1;
++            return -1;
+         }
+ 
+         result += tzAdjust;
+@@ -821,7 +819,7 @@ static time_t timezone_adjust(time_t result, unsigned char chSign, int adjustHou
+     {
+         if (tzAdjust > result)
+         {
+-            return (time_t)-1;
++            return -1;
+         }
+ 
+         result -= tzAdjust;
+@@ -830,10 +828,10 @@ static time_t timezone_adjust(time_t result, unsigned char chSign, int adjustHou
+     return result;
+ }
+ 
+-static time_t make_gm_time(struct tm* t)
++static int64_t make_gm_time(struct tm* t)
+ {
+ #ifdef _MSC_VER
+-    return _mkgmtime(t);
++    return static_cast<int64_t>(_mkgmtime(t));
+ #elif (defined(ANDROID) || defined(__ANDROID__))
+     // HACK: The (nonportable?) POSIX function timegm is not available in
+     //       bionic. As a workaround[1][2], we set the C library timezone to
+@@ -867,9 +865,9 @@ static time_t make_gm_time(struct tm* t)
+             unsetenv("TZ");
+         }
+     }
+-    return time;
++    return static_cast<int64_t>(time);
+ #else  // ^^^ ANDROID // Other POSIX platforms vvv
+-    return timegm(t);
++    return static_cast<int64_t>(timegm(t));
+ #endif // _MSC_VER
+ }
+ 
+@@ -916,7 +914,7 @@ zone        =  "UT"  / "GMT"                ; Universal Time
+ datetime __cdecl datetime::from_string(const utility::string_t& dateString, date_format format)
+ {
+     datetime result;
+-    time_t seconds;
++    int64_t seconds;
+     uint64_t frac_sec = 0;
+     struct tm t{};
+     auto str = dateString.c_str();
+diff --git a/Release/tests/functional/utils/datetime.cpp b/Release/tests/functional/utils/datetime.cpp
+index ae7f7a5e4..acd6fddb0 100644
+--- a/Release/tests/functional/utils/datetime.cpp
++++ b/Release/tests/functional/utils/datetime.cpp
+@@ -133,75 +133,77 @@ SUITE(datetime)
+ 
+     TEST(parsing_time_rfc1123_accepts_each_day)
+     {
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:00:00 GMT"), (time_t) 0);
+-        TestRfc1123IsTimeT(_XPLATSTR("Fri, 02 Jan 1970 00:00:00 GMT"), (time_t) 86400 * 1);
+-        TestRfc1123IsTimeT(_XPLATSTR("Sat, 03 Jan 1970 00:00:00 GMT"), (time_t) 86400 * 2);
+-        TestRfc1123IsTimeT(_XPLATSTR("Sun, 04 Jan 1970 00:00:00 GMT"), (time_t) 86400 * 3);
+-        TestRfc1123IsTimeT(_XPLATSTR("Mon, 05 Jan 1970 00:00:00 GMT"), (time_t) 86400 * 4);
+-        TestRfc1123IsTimeT(_XPLATSTR("Tue, 06 Jan 1970 00:00:00 GMT"), (time_t) 86400 * 5);
+-        TestRfc1123IsTimeT(_XPLATSTR("Wed, 07 Jan 1970 00:00:00 GMT"), (time_t) 86400 * 6);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:00:00 GMT"), (time_t)0);
++        TestRfc1123IsTimeT(_XPLATSTR("Fri, 02 Jan 1970 00:00:00 GMT"), (time_t)86400 * 1);
++        TestRfc1123IsTimeT(_XPLATSTR("Sat, 03 Jan 1970 00:00:00 GMT"), (time_t)86400 * 2);
++        TestRfc1123IsTimeT(_XPLATSTR("Sun, 04 Jan 1970 00:00:00 GMT"), (time_t)86400 * 3);
++        TestRfc1123IsTimeT(_XPLATSTR("Mon, 05 Jan 1970 00:00:00 GMT"), (time_t)86400 * 4);
++        TestRfc1123IsTimeT(_XPLATSTR("Tue, 06 Jan 1970 00:00:00 GMT"), (time_t)86400 * 5);
++        TestRfc1123IsTimeT(_XPLATSTR("Wed, 07 Jan 1970 00:00:00 GMT"), (time_t)86400 * 6);
+     }
+ 
+     TEST(parsing_time_rfc1123_boundary_cases)
+     {
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:00:00 GMT"), (time_t) 0);
+-        TestRfc1123IsTimeT(_XPLATSTR("19 Jan 2038 03:14:06 GMT"), (time_t) INT_MAX - 1);
+-#ifndef _USE_32BIT_TIME_T
+-        TestRfc1123IsTimeT(_XPLATSTR("19 Jan 2038 03:13:07 -0001"), (time_t) INT_MAX);
+-        TestRfc1123IsTimeT(_XPLATSTR("19 Jan 2038 03:14:07 -0000"), (time_t) INT_MAX);
+-#endif // _USE_32BIT_TIME_T
+-        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 +0000"), (time_t) 1547507781);
+-        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 -0001"), (time_t) 1547507841);
+-        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 +0001"), (time_t) 1547507721);
+-        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 -0100"), (time_t) 1547511381);
+-        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 +0100"), (time_t) 1547504181);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:00:00 GMT"), (time_t)0);
++        TestRfc1123IsTimeT(_XPLATSTR("19 Jan 2038 03:14:06 GMT"), (time_t)INT_MAX - 1);
++        if (sizeof(time_t) == 8)
++        {
++            TestRfc1123IsTimeT(_XPLATSTR("19 Jan 2038 03:13:07 -0001"), (time_t)INT_MAX);
++            TestRfc1123IsTimeT(_XPLATSTR("19 Jan 2038 03:14:07 -0000"), (time_t)INT_MAX);
++        }
++        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 +0000"), (time_t)1547507781);
++        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 -0001"), (time_t)1547507841);
++        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 +0001"), (time_t)1547507721);
++        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 -0100"), (time_t)1547511381);
++        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 +0100"), (time_t)1547504181);
+     }
+ 
+     TEST(parsing_time_rfc1123_uses_each_field)
+     {
+-        TestRfc1123IsTimeT(_XPLATSTR("02 Jan 1970 00:00:00 GMT"), (time_t) 86400);
+-        TestRfc1123IsTimeT(_XPLATSTR("12 Jan 1970 00:00:00 GMT"), (time_t) 950400);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Feb 1970 00:00:00 GMT"), (time_t) 2678400);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 2000 00:00:00 GMT"), (time_t) 946684800);
+-#ifndef _USE_32BIT_TIME_T
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 2100 00:00:00 GMT"), (time_t) 4102444800);
+-#endif // _USE_32BIT_TIME_T
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1990 00:00:00 GMT"), (time_t) 631152000);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1971 00:00:00 GMT"), (time_t) 31536000);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 10:00:00 GMT"), (time_t) 36000);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 01:00:00 GMT"), (time_t) 3600);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:10:00 GMT"), (time_t) 600);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:01:00 GMT"), (time_t) 60);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:00:10 GMT"), (time_t) 10);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:00:01 GMT"), (time_t) 1);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 10:00:00 GMT"), (time_t) 36000);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 02:00:00 PST"), (time_t) 36000);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 03:00:00 PDT"), (time_t) 36000);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 03:00:00 MST"), (time_t) 36000);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 04:00:00 MDT"), (time_t) 36000);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 04:00:00 CST"), (time_t) 36000);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 05:00:00 CDT"), (time_t) 36000);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 05:00:00 EST"), (time_t) 36000);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 06:00:00 EDT"), (time_t) 36000);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 06:00:00 -0400"), (time_t) 36000);
+-        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 05:59:00 -0401"), (time_t) 36000);
++        TestRfc1123IsTimeT(_XPLATSTR("02 Jan 1970 00:00:00 GMT"), (time_t)86400);
++        TestRfc1123IsTimeT(_XPLATSTR("12 Jan 1970 00:00:00 GMT"), (time_t)950400);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Feb 1970 00:00:00 GMT"), (time_t)2678400);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 2000 00:00:00 GMT"), (time_t)946684800);
++        if (sizeof(time_t) == 8)
++        {
++            TestRfc1123IsTimeT(_XPLATSTR("01 Jan 2100 00:00:00 GMT"), (time_t)4102444800);
++        }
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1990 00:00:00 GMT"), (time_t)631152000);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1971 00:00:00 GMT"), (time_t)31536000);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 10:00:00 GMT"), (time_t)36000);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 01:00:00 GMT"), (time_t)3600);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:10:00 GMT"), (time_t)600);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:01:00 GMT"), (time_t)60);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:00:10 GMT"), (time_t)10);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:00:01 GMT"), (time_t)1);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 10:00:00 GMT"), (time_t)36000);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 02:00:00 PST"), (time_t)36000);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 03:00:00 PDT"), (time_t)36000);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 03:00:00 MST"), (time_t)36000);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 04:00:00 MDT"), (time_t)36000);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 04:00:00 CST"), (time_t)36000);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 05:00:00 CDT"), (time_t)36000);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 05:00:00 EST"), (time_t)36000);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 06:00:00 EDT"), (time_t)36000);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 06:00:00 -0400"), (time_t)36000);
++        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 05:59:00 -0401"), (time_t)36000);
+     }
+ 
+     TEST(parsing_time_rfc1123_max_days)
+     {
+-        TestRfc1123IsTimeT(_XPLATSTR("31 Jan 1970 00:00:00 GMT"), (time_t) 2592000);
+-        TestRfc1123IsTimeT(_XPLATSTR("28 Feb 2019 00:00:00 GMT"), (time_t) 1551312000); // non leap year allows feb 28
+-        TestRfc1123IsTimeT(_XPLATSTR("29 Feb 2020 00:00:00 GMT"), (time_t) 1582934400); // leap year allows feb 29
+-        TestRfc1123IsTimeT(_XPLATSTR("31 Mar 1970 00:00:00 GMT"), (time_t) 7689600);
+-        TestRfc1123IsTimeT(_XPLATSTR("30 Apr 1970 00:00:00 GMT"), (time_t) 10281600);
+-        TestRfc1123IsTimeT(_XPLATSTR("31 May 1970 00:00:00 GMT"), (time_t) 12960000);
+-        TestRfc1123IsTimeT(_XPLATSTR("30 Jun 1970 00:00:00 GMT"), (time_t) 15552000);
+-        TestRfc1123IsTimeT(_XPLATSTR("31 Jul 1970 00:00:00 GMT"), (time_t) 18230400);
+-        TestRfc1123IsTimeT(_XPLATSTR("31 Aug 1970 00:00:00 GMT"), (time_t) 20908800);
+-        TestRfc1123IsTimeT(_XPLATSTR("30 Sep 1970 00:00:00 GMT"), (time_t) 23500800);
+-        TestRfc1123IsTimeT(_XPLATSTR("31 Oct 1970 00:00:00 GMT"), (time_t) 26179200);
+-        TestRfc1123IsTimeT(_XPLATSTR("30 Nov 1970 00:00:00 GMT"), (time_t) 28771200);
+-        TestRfc1123IsTimeT(_XPLATSTR("31 Dec 1970 00:00:00 GMT"), (time_t) 31449600);
++        TestRfc1123IsTimeT(_XPLATSTR("31 Jan 1970 00:00:00 GMT"), (time_t)2592000);
++        TestRfc1123IsTimeT(_XPLATSTR("28 Feb 2019 00:00:00 GMT"), (time_t)1551312000); // non leap year allows feb 28
++        TestRfc1123IsTimeT(_XPLATSTR("29 Feb 2020 00:00:00 GMT"), (time_t)1582934400); // leap year allows feb 29
++        TestRfc1123IsTimeT(_XPLATSTR("31 Mar 1970 00:00:00 GMT"), (time_t)7689600);
++        TestRfc1123IsTimeT(_XPLATSTR("30 Apr 1970 00:00:00 GMT"), (time_t)10281600);
++        TestRfc1123IsTimeT(_XPLATSTR("31 May 1970 00:00:00 GMT"), (time_t)12960000);
++        TestRfc1123IsTimeT(_XPLATSTR("30 Jun 1970 00:00:00 GMT"), (time_t)15552000);
++        TestRfc1123IsTimeT(_XPLATSTR("31 Jul 1970 00:00:00 GMT"), (time_t)18230400);
++        TestRfc1123IsTimeT(_XPLATSTR("31 Aug 1970 00:00:00 GMT"), (time_t)20908800);
++        TestRfc1123IsTimeT(_XPLATSTR("30 Sep 1970 00:00:00 GMT"), (time_t)23500800);
++        TestRfc1123IsTimeT(_XPLATSTR("31 Oct 1970 00:00:00 GMT"), (time_t)26179200);
++        TestRfc1123IsTimeT(_XPLATSTR("30 Nov 1970 00:00:00 GMT"), (time_t)28771200);
++        TestRfc1123IsTimeT(_XPLATSTR("31 Dec 1970 00:00:00 GMT"), (time_t)31449600);
+     }
+ 
+     TEST(parsing_time_rfc1123_invalid_cases)
+@@ -266,7 +268,7 @@ SUITE(datetime)
+             _XPLATSTR("Thu, 01 Jan 1970 00:00:00 G"),
+             _XPLATSTR("Thu, 01 Jan 1970 00:00:00 GM"),
+             _XPLATSTR("Fri, 01 Jan 1970 00:00:00 GMT"), // wrong day
+-            _XPLATSTR("01 Jan 4970 00:00:00 GMT"), // year too big
++            _XPLATSTR("01 Jan 4970 00:00:00 GMT"),      // year too big
+             _XPLATSTR("01 Jan 3001 00:00:00 GMT"),
+             _XPLATSTR("01 Xxx 1971 00:00:00 GMT"), // month bad
+             _XPLATSTR("00 Jan 1971 00:00:00 GMT"), // day too small
+@@ -288,8 +290,8 @@ SUITE(datetime)
+             _XPLATSTR("01 Jan 1971 00:60:00 GMT"), // minute too big
+             _XPLATSTR("01 Jan 1971 00:00:70 GMT"), // second too big
+             _XPLATSTR("01 Jan 1971 00:00:61 GMT"),
+-            _XPLATSTR("01 Jan 1969 00:00:00 GMT"), // underflow
+-            _XPLATSTR("01 Jan 1969 00:00:00 CEST"), // bad tz
++            _XPLATSTR("01 Jan 1969 00:00:00 GMT"),   // underflow
++            _XPLATSTR("01 Jan 1969 00:00:00 CEST"),  // bad tz
+             _XPLATSTR("01 Jan 1970 00:00:00 +2400"), // bad tzoffsets
+             _XPLATSTR("01 Jan 1970 00:00:00 -3000"),
+             _XPLATSTR("01 Jan 1970 00:00:00 +2160"),
+@@ -309,11 +311,12 @@ SUITE(datetime)
+         // boundary cases:
+         TestDateTimeRoundtrip(_XPLATSTR("1970-01-01T00:00:00Z"));                                         // epoch
+         TestDateTimeRoundtrip(_XPLATSTR("2038-01-19T03:14:06+00:00"), _XPLATSTR("2038-01-19T03:14:06Z")); // INT_MAX - 1
+-#ifndef _USE_32BIT_TIME_T
+-        TestDateTimeRoundtrip(_XPLATSTR("2038-01-19T03:13:07-00:01"),
+-                              _XPLATSTR("2038-01-19T03:14:07Z")); // INT_MAX after subtacting 1
+-        TestDateTimeRoundtrip(_XPLATSTR("2038-01-19T03:14:07-00:00"), _XPLATSTR("2038-01-19T03:14:07Z"));
+-#endif // _USE_32BIT_TIME_T
++        if (sizeof(time_t) == 8)
++        {
++            TestDateTimeRoundtrip(_XPLATSTR("2038-01-19T03:13:07-00:01"),
++                                  _XPLATSTR("2038-01-19T03:14:07Z")); // INT_MAX after subtacting 1
++            TestDateTimeRoundtrip(_XPLATSTR("2038-01-19T03:14:07-00:00"), _XPLATSTR("2038-01-19T03:14:07Z"));
++        }
+     }
+ 
+     TEST(parsing_time_iso8601_uses_each_timezone_digit)
+@@ -456,11 +459,8 @@ SUITE(datetime)
+             _XPLATSTR("1971-01-01T00:60:00Z"), // minute too big
+             _XPLATSTR("1971-01-01T00:00:70Z"), // second too big
+             _XPLATSTR("1971-01-01T00:00:61Z"),
+-            _XPLATSTR("1969-01-01T00:00:00Z"), // underflow
+-#ifdef _USE_32BIT_TIME_T
+-            _XPLATSTR("3000-01-01T00:00:01Z"), // overflow
+-#endif
+-            _XPLATSTR("3001-01-01T00:00:00Z"),
++            _XPLATSTR("1969-01-01T00:00:00Z"),      // underflow
++            _XPLATSTR("3001-01-01T00:00:00Z"),      // overflow
+             _XPLATSTR("1970-01-01T00:00:00+00:01"), // time zone underflow
+             // _XPLATSTR("1970-01-01T00:00:00.Z"), // accepted as invalid timezone above
+             _XPLATSTR("1970-01-01T00:00:00+24:00"), // bad tzoffsets
diff --git a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/revert-9b670e5b33dfdbd501d618cd7e7498148ffbd559.patch b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/revert-9b670e5b33dfdbd501d618cd7e7498148ffbd559.patch
deleted file mode 100644
index 9af2cbf..0000000
--- a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/revert-9b670e5b33dfdbd501d618cd7e7498148ffbd559.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Description: revert upstream bugfix (see:https://github.com/Microsoft/cpprestsdk/issues/1090)
-Last-Update: 2019-03-28
-
---- cpprest-2.10.12.orig/Release/src/utilities/asyncrt_utils.cpp
-+++ cpprest-2.10.12/Release/src/utilities/asyncrt_utils.cpp
-@@ -1393,16 +1393,15 @@ utility::seconds __cdecl timespan::xml_d
-     return utility::seconds(numSecs);
- }
- 
--static const char c_allowed_chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
--static const int chars_count = static_cast<int>(sizeof(c_allowed_chars) - 1);
-+static const utility::char_t c_allowed_chars[] =
-+    _XPLATSTR("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
- 
- utility::string_t nonce_generator::generate()
- {
--    std::uniform_int_distribution<> distr(0, chars_count - 1);
-+    std::uniform_int_distribution<> distr(0, static_cast<int>(sizeof(c_allowed_chars) / sizeof(utility::char_t)) - 1);
-     utility::string_t result;
-     result.reserve(length());
--    std::generate_n(std::back_inserter(result), length(),
--		[&] { return static_cast<utility::char_t>(c_allowed_chars[distr(m_random)]); });
-+    std::generate_n(std::back_inserter(result), length(), [&]() { return c_allowed_chars[distr(m_random)]; });
-     return result;
- }
- 
diff --git a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/revert-f10d9f8e214516d2c19aa6ef831ee874a58c0479.patch b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/revert-f10d9f8e214516d2c19aa6ef831ee874a58c0479.patch
deleted file mode 100644
index 01e4631..0000000
--- a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/revert-f10d9f8e214516d2c19aa6ef831ee874a58c0479.patch
+++ /dev/null
@@ -1,1557 +0,0 @@
-Description: revert upstream bugfix (see:https://github.com/Microsoft/cpprestsdk/issues/1090)
-Last-Update: 2019-03-28
-
---- cpprest-2.10.12.orig/Release/include/cpprest/asyncrt_utils.h
-+++ cpprest-2.10.12/Release/include/cpprest/asyncrt_utils.h
-@@ -630,6 +630,15 @@ private:
-     static const interval_type _hourTicks = 60 * 60 * _secondTicks;
-     static const interval_type _dayTicks = 24 * 60 * 60 * _secondTicks;
- 
-+#ifdef _WIN32
-+    // void* to avoid pulling in windows.h
-+    static _ASYNCRTIMP bool __cdecl system_type_to_datetime(/*SYSTEMTIME*/ void* psysTime,
-+                                                            uint64_t seconds,
-+                                                            datetime* pdt);
-+#else
-+    static datetime timeval_to_datetime(const timeval& time);
-+#endif
-+
-     // Private constructor. Use static methods to create an instance.
-     datetime(interval_type interval) : m_interval(interval) {}
- 
-@@ -690,6 +699,7 @@ public:
-     void set_length(int length) { m_length = length; }
- 
- private:
-+    static const utility::string_t c_allowed_chars;
-     std::mt19937 m_random;
-     int m_length;
- };
---- cpprest-2.10.12.orig/Release/src/pch/stdafx.h
-+++ cpprest-2.10.12/Release/src/pch/stdafx.h
-@@ -61,6 +61,7 @@
- #undef BOOST_NO_CXX11_NULLPTR
- #endif
- #include "boost/bind/bind.hpp"
-+#include "boost/date_time/posix_time/posix_time_types.hpp"
- #include "boost/thread/condition_variable.hpp"
- #include "boost/thread/mutex.hpp"
- #include <fcntl.h>
---- cpprest-2.10.12.orig/Release/src/utilities/asyncrt_utils.cpp
-+++ cpprest-2.10.12/Release/src/utilities/asyncrt_utils.cpp
-@@ -15,9 +15,20 @@
- 
- #include <algorithm>
- #include <cpprest/asyncrt_utils.h>
--#include <stdexcept>
-+#include <sstream>
- #include <string>
--#include <time.h>
-+
-+#ifndef _WIN32
-+#if defined(__clang__)
-+#pragma clang diagnostic push
-+#pragma clang diagnostic ignored "-Wunused-local-typedef"
-+#endif
-+#include <boost/date_time/posix_time/posix_time.hpp>
-+#include <boost/date_time/posix_time/posix_time_io.hpp>
-+#if defined(__clang__)
-+#pragma clang diagnostic pop
-+#endif
-+#endif
- 
- using namespace web;
- using namespace utility;
-@@ -618,7 +629,18 @@ std::string __cdecl conversions::to_utf8
- 
- utf16string __cdecl conversions::to_utf16string(const std::string& value) { return utf8_to_utf16(value); }
- 
--static const uint64_t ntToUnixOffsetSeconds = 11644473600U; // diff between windows and unix epochs (seconds)
-+#ifndef WIN32
-+datetime datetime::timeval_to_datetime(const timeval& time)
-+{
-+    const uint64_t epoch_offset = 11644473600LL; // diff between windows and unix epochs (seconds)
-+    uint64_t result = epoch_offset + time.tv_sec;
-+    result *= _secondTicks;      // convert to 10e-7
-+    result += time.tv_usec * 10; // convert and add microseconds, 10e-6 to 10e-7
-+    return datetime(result);
-+}
-+#endif
-+
-+static bool is_digit(utility::char_t c) { return c >= _XPLATSTR('0') && c <= _XPLATSTR('9'); }
- 
- datetime __cdecl datetime::utc_now()
- {
-@@ -634,649 +656,450 @@ datetime __cdecl datetime::utc_now()
- #else // LINUX
-     struct timeval time;
-     gettimeofday(&time, nullptr);
--    uint64_t result = ntToUnixOffsetSeconds + time.tv_sec;
--    result *= _secondTicks;      // convert to 10e-7
--    result += time.tv_usec * 10; // convert and add microseconds, 10e-6 to 10e-7
--    return datetime(result);
-+    return timeval_to_datetime(time);
- #endif
- }
- 
--static const char dayNames[] = "Sun\0Mon\0Tue\0Wed\0Thu\0Fri\0Sat";
--static const char monthNames[] = "Jan\0Feb\0Mar\0Apr\0May\0Jun\0Jul\0Aug\0Sep\0Oct\0Nov\0Dec";
--
- utility::string_t datetime::to_string(date_format format) const
- {
--    const uint64_t input = m_interval / _secondTicks; // convert to seconds
--    const int frac_sec = static_cast<int>(m_interval % _secondTicks);
--    const time_t time = static_cast<time_t>(input - ntToUnixOffsetSeconds);
--    struct tm t;
--#ifdef _MSC_VER
--    if (gmtime_s(&t, &time) != 0)
--#else  // ^^^ _MSC_VER ^^^ // vvv !_MSC_VER vvv
--    if (gmtime_r(&time, &t) == 0)
--#endif // _MSC_VER
--    {
--        throw std::invalid_argument("gmtime_r/s failed on the time supplied");
--    }
--
--    char outBuffer[38]; // Thu, 01 Jan 1970 00:00:00 GMT\0
--                        // 1970-01-01T00:00:00.1234567Z\0
--    char* outCursor = outBuffer;
--    switch (format)
--    {
--        case RFC_1123:
--#ifdef _MSC_VER
--            sprintf_s(outCursor,
--                      26,
--                      "%s, %02d %s %04d %02d:%02d:%02d",
--                      dayNames + 4 * t.tm_wday,
--                      t.tm_mday,
--                      monthNames + 4 * t.tm_mon,
--                      t.tm_year + 1900,
--                      t.tm_hour,
--                      t.tm_min,
--                      t.tm_sec);
--#else  // ^^^ _MSC_VER // !_MSC_VER vvv
--            sprintf(outCursor,
--                    "%s, %02d %s %04d %02d:%02d:%02d",
--                    dayNames + 4 * t.tm_wday,
--                    t.tm_mday,
--                    monthNames + 4 * t.tm_mon,
--                    t.tm_year + 1900,
--                    t.tm_hour,
--                    t.tm_min,
--                    t.tm_sec);
--#endif // _MSC_VER
--            outCursor += 25;
--            memcpy(outCursor, " GMT", 4);
--            outCursor += 4;
--            return utility::string_t(outBuffer, outCursor);
--        case ISO_8601:
--#ifdef _MSC_VER
--            sprintf_s(outCursor,
--                      20,
--                      "%04d-%02d-%02dT%02d:%02d:%02d",
--                      t.tm_year + 1900,
--                      t.tm_mon + 1,
--                      t.tm_mday,
--                      t.tm_hour,
--                      t.tm_min,
--                      t.tm_sec);
--#else  // ^^^ _MSC_VER // !_MSC_VER vvv
--            sprintf(outCursor,
--                    "%04d-%02d-%02dT%02d:%02d:%02d",
--                    t.tm_year + 1900,
--                    t.tm_mon + 1,
--                    t.tm_mday,
--                    t.tm_hour,
--                    t.tm_min,
--                    t.tm_sec);
--#endif // _MSC_VER
--            outCursor += 19;
--            if (frac_sec != 0)
--            {
--                // Append fractional second, which is a 7-digit value with no trailing zeros
--                // This way, '1200' becomes '00012'
--#ifdef _MSC_VER
--                size_t appended = sprintf_s(outCursor, 9, ".%07d", frac_sec);
--#else  // ^^^ _MSC_VER // !_MSC_VER vvv
--                size_t appended = sprintf(outCursor, ".%07d", frac_sec);
--#endif // _MSC_VER
--                while (outCursor[appended - 1] == '0')
--                {
--                    --appended; // trim trailing zeros
--                }
--
--                outCursor += appended;
--            }
--
--            *outCursor = 'Z';
--            ++outCursor;
--            return utility::string_t(outBuffer, outCursor);
--        default: throw std::invalid_argument("Unrecognized date format.");
--    }
--}
--
--template<class CharT>
--static bool string_starts_with(const CharT* haystack, const char* needle)
--{
--    while (*needle)
--    {
--        if (*haystack != static_cast<CharT>(*needle))
--        {
--            return false;
--        }
--
--        ++haystack;
--        ++needle;
--    }
--
--    return true;
--}
--
--#define ascii_isdigit(c) ((unsigned char)((unsigned char)(c) - '0') <= 9)
--#define ascii_isdigit6(c) ((unsigned char)((unsigned char)(c) - '0') <= 6)
--#define ascii_isdigit5(c) ((unsigned char)((unsigned char)(c) - '0') <= 5)
--#define ascii_isdigit3(c) ((unsigned char)((unsigned char)(c) - '0') <= 3)
--#define ascii_isdigit2(c) ((unsigned char)((unsigned char)(c) - '0') <= 2)
--#define ascii_isdigit1(c) ((unsigned char)((unsigned char)(c) - '0') <= 1)
--
--static const unsigned char max_days_in_month[12] = {
--    31, // Jan
--    00, // Feb, special handling for leap years
--    31, // Mar
--    30, // Apr
--    31, // May
--    30, // Jun
--    31, // Jul
--    31, // Aug
--    30, // Sep
--    31, // Oct
--    30, // Nov
--    31  // Dec
--};
--
--static bool validate_day_month(int day, int month, int year)
--{
--    int maxDaysThisMonth;
--    if (month == 1)
--    { // Feb needs leap year testing
--        maxDaysThisMonth = 28 + (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
--    }
--    else
--    {
--        maxDaysThisMonth = max_days_in_month[month];
--    }
--
--    return day >= 1 && day <= maxDaysThisMonth;
--}
-+#ifdef _WIN32
-+    int status;
- 
--template<class CharT>
--static int atoi2(const CharT* str)
--{
--    return (static_cast<unsigned char>(str[0]) - '0') * 10 + (static_cast<unsigned char>(str[1]) - '0');
--}
-+    ULARGE_INTEGER largeInt;
-+    largeInt.QuadPart = m_interval;
- 
--static const time_t maxTimeT = sizeof(time_t) == 4 ? (time_t)INT_MAX : (time_t)LLONG_MAX;
-+    FILETIME ft;
-+    ft.dwHighDateTime = largeInt.HighPart;
-+    ft.dwLowDateTime = largeInt.LowPart;
- 
--static time_t timezone_adjust(time_t result, unsigned char chSign, int adjustHours, int adjustMinutes)
--{
--    if (adjustHours > 23)
-+    SYSTEMTIME systemTime;
-+    if (!FileTimeToSystemTime((const FILETIME*)&ft, &systemTime))
-     {
--        return (time_t)-1;
-+        throw utility::details::create_system_error(GetLastError());
-     }
- 
--    // adjustMinutes > 59 is impossible due to digit 5 check
--    const int tzAdjust = adjustMinutes * 60 + adjustHours * 60 * 60;
--    if (chSign == '-')
-+    std::wstring result;
-+    if (format == RFC_1123)
-     {
--        if (maxTimeT - result < tzAdjust)
-         {
--            return (time_t)-1;
-+            wchar_t dateStr[18] = {0};
-+#if _WIN32_WINNT < _WIN32_WINNT_VISTA
-+            status = GetDateFormatW(
-+                LOCALE_INVARIANT, 0, &systemTime, L"ddd',' dd MMM yyyy", dateStr, sizeof(dateStr) / sizeof(wchar_t));
-+#else
-+            status = GetDateFormatEx(LOCALE_NAME_INVARIANT,
-+                                     0,
-+                                     &systemTime,
-+                                     L"ddd',' dd MMM yyyy",
-+                                     dateStr,
-+                                     sizeof(dateStr) / sizeof(wchar_t),
-+                                     NULL);
-+#endif // _WIN32_WINNT < _WIN32_WINNT_VISTA
-+            if (status == 0)
-+            {
-+                throw utility::details::create_system_error(GetLastError());
-+            }
-+
-+            result += dateStr;
-+            result += L' ';
-         }
- 
--        result += tzAdjust;
--    }
--    else
--    {
--        if (tzAdjust > result)
-         {
--            return (time_t)-1;
--        }
--
--        result -= tzAdjust;
--    }
--
--    return result;
--}
--
--static time_t make_gm_time(struct tm* t)
--{
--#ifdef _MSC_VER
--    return _mkgmtime(t);
--#elif (defined(ANDROID) || defined(__ANDROID__))
--    // HACK: The (nonportable?) POSIX function timegm is not available in
--    //       bionic. As a workaround[1][2], we set the C library timezone to
--    //       UTC, call mktime, then set the timezone back. However, the C
--    //       environment is fundamentally a shared global resource and thread-
--    //       unsafe. We can protect our usage here, however any other code might
--    //       manipulate the environment at the same time.
--    //
--    // [1] http://linux.die.net/man/3/timegm
--    // [2] http://www.gnu.org/software/libc/manual/html_node/Broken_002ddown-Time.html
--    time_t time;
--    static boost::mutex env_var_lock;
--    {
--        boost::lock_guard<boost::mutex> lock(env_var_lock);
--        std::string prev_env;
--        auto prev_env_cstr = getenv("TZ");
--        if (prev_env_cstr != nullptr)
--        {
--            prev_env = prev_env_cstr;
--        }
--        setenv("TZ", "UTC", 1);
--
--        time = mktime(t);
-+            wchar_t timeStr[10] = {0};
-+#if _WIN32_WINNT < _WIN32_WINNT_VISTA
-+            status = GetTimeFormatW(LOCALE_INVARIANT,
-+                                    TIME_NOTIMEMARKER | TIME_FORCE24HOURFORMAT,
-+                                    &systemTime,
-+                                    L"HH':'mm':'ss",
-+                                    timeStr,
-+                                    sizeof(timeStr) / sizeof(wchar_t));
-+#else
-+            status = GetTimeFormatEx(LOCALE_NAME_INVARIANT,
-+                                     TIME_NOTIMEMARKER | TIME_FORCE24HOURFORMAT,
-+                                     &systemTime,
-+                                     L"HH':'mm':'ss",
-+                                     timeStr,
-+                                     sizeof(timeStr) / sizeof(wchar_t));
-+#endif // _WIN32_WINNT < _WIN32_WINNT_VISTA
-+            if (status == 0)
-+            {
-+                throw utility::details::create_system_error(GetLastError());
-+            }
- 
--        if (prev_env_cstr)
--        {
--            setenv("TZ", prev_env.c_str(), 1);
--        }
--        else
--        {
--            unsetenv("TZ");
-+            result += timeStr;
-+            result += L" GMT";
-         }
-     }
--    return time;
--#else  // ^^^ ANDROID // Other POSIX platforms vvv
--    return timegm(t);
--#endif // _MSC_VER
--}
--
--/*
--https://tools.ietf.org/html/rfc822
--https://tools.ietf.org/html/rfc1123
--
--date-time   =  [ day "," ] date time        ; dd mm yy
--                                            ;  hh:mm:ss zzz
--
--day         =  "Mon"  / "Tue" /  "Wed"  / "Thu"
--            /  "Fri"  / "Sat" /  "Sun"
--
--date        =  1*2DIGIT month 2DIGIT        ; day month year
--                                            ;  e.g. 20 Jun 82
--RFC1123 changes this to:
--date        =  1*2DIGIT month 2*4DIGIT        ; day month year
--                                              ;  e.g. 20 Jun 1982
--This implementation only accepts 4 digit years.
--
--month       =  "Jan"  /  "Feb" /  "Mar"  /  "Apr"
--            /  "May"  /  "Jun" /  "Jul"  /  "Aug"
--            /  "Sep"  /  "Oct" /  "Nov"  /  "Dec"
--
--time        =  hour zone                    ; ANSI and Military
--
--hour        =  2DIGIT ":" 2DIGIT [":" 2DIGIT]
--                                            ; 00:00:00 - 23:59:59
--
--zone        =  "UT"  / "GMT"                ; Universal Time
--                                            ; North American : UT
--            /  "EST" / "EDT"                ;  Eastern:  - 5/ - 4
--            /  "CST" / "CDT"                ;  Central:  - 6/ - 5
--            /  "MST" / "MDT"                ;  Mountain: - 7/ - 6
--            /  "PST" / "PDT"                ;  Pacific:  - 8/ - 7
--
--// military time deleted by RFC 1123
--
--            / ( ("+" / "-") 4DIGIT )        ; Local differential
--                                            ;  hours+min. (HHMM)
--*/
--
--
--datetime __cdecl datetime::from_string(const utility::string_t& dateString, date_format format)
--{
--    datetime result;
--    time_t seconds;
--    uint64_t frac_sec = 0;
--    struct tm t{};
--    auto str = dateString.c_str();
--    if (format == RFC_1123)
-+    else if (format == ISO_8601)
-     {
--        int parsedWeekday = -1;
--        for (int day = 0; day < 7; ++day)
-+        const size_t buffSize = 64;
-         {
--            if (string_starts_with(str, dayNames + day * 4) && str[3] == _XPLATSTR(',') && str[4] == _XPLATSTR(' '))
-+            wchar_t dateStr[buffSize] = {0};
-+#if _WIN32_WINNT < _WIN32_WINNT_VISTA
-+            status = GetDateFormatW(LOCALE_INVARIANT, 0, &systemTime, L"yyyy-MM-dd", dateStr, buffSize);
-+#else
-+            status = GetDateFormatEx(LOCALE_NAME_INVARIANT, 0, &systemTime, L"yyyy-MM-dd", dateStr, buffSize, NULL);
-+#endif // _WIN32_WINNT < _WIN32_WINNT_VISTA
-+            if (status == 0)
-             {
--                parsedWeekday = day;
--                str += 5; // parsed day of week
--                break;
-+                throw utility::details::create_system_error(GetLastError());
-             }
--        }
- 
--        if (ascii_isdigit3(str[0]) && ascii_isdigit(str[1]) && str[2] == _XPLATSTR(' '))
--        {
--            t.tm_mday = atoi2(str); // validity checked later
--            str += 3;               // parsed day
--        }
--        else if (ascii_isdigit(str[0]) && str[1] == _XPLATSTR(' '))
--        {
--            t.tm_mday = str[0] - _XPLATSTR('0');
--            str += 2; // parsed day
--        }
--        else
--        {
--            return result;
-+            result += dateStr;
-+            result += L'T';
-         }
- 
--        t.tm_mon = -1;
--        for (int month = 0; month < 12; ++month)
-         {
--            if (string_starts_with(str, monthNames + month * 4))
-+            wchar_t timeStr[buffSize] = {0};
-+#if _WIN32_WINNT < _WIN32_WINNT_VISTA
-+            status = GetTimeFormatW(LOCALE_INVARIANT,
-+                                    TIME_NOTIMEMARKER | TIME_FORCE24HOURFORMAT,
-+                                    &systemTime,
-+                                    L"HH':'mm':'ss",
-+                                    timeStr,
-+                                    buffSize);
-+#else
-+            status = GetTimeFormatEx(LOCALE_NAME_INVARIANT,
-+                                     TIME_NOTIMEMARKER | TIME_FORCE24HOURFORMAT,
-+                                     &systemTime,
-+                                     L"HH':'mm':'ss",
-+                                     timeStr,
-+                                     buffSize);
-+#endif // _WIN32_WINNT < _WIN32_WINNT_VISTA
-+            if (status == 0)
-             {
--                t.tm_mon = month;
--                break;
-+                throw utility::details::create_system_error(GetLastError());
-             }
--        }
- 
--        if (t.tm_mon == -1 || str[3] != _XPLATSTR(' '))
--        {
--            return result;
-+            result += timeStr;
-         }
- 
--        str += 4; // parsed month
--
--        if (!ascii_isdigit3(str[0]) || !ascii_isdigit(str[1]) || !ascii_isdigit(str[2]) || !ascii_isdigit(str[3]) ||
--            str[4] != ' ')
-+        uint64_t frac_sec = largeInt.QuadPart % _secondTicks;
-+        if (frac_sec > 0)
-         {
--            return result;
-+            // Append fractional second, which is a 7-digit value with no trailing zeros
-+            // This way, '1200' becomes '00012'
-+            wchar_t buf[9] = {0};
-+            size_t appended = swprintf_s(buf, 9, L".%07ld", static_cast<long>(frac_sec));
-+            while (buf[appended - 1] == L'0')
-+                --appended; // trim trailing zeros
-+            result.append(buf, appended);
-         }
- 
--        t.tm_year = (str[0] - _XPLATSTR('0')) * 1000 + (str[1] - _XPLATSTR('0')) * 100 +
--                    (str[2] - _XPLATSTR('0')) * 10 + (str[3] - _XPLATSTR('0'));
--        if (t.tm_year < 1970 || t.tm_year > 3000)
--        {
--            return result;
--        }
-+        result += L'Z';
-+    }
- 
--        // days in month validity check
--        if (!validate_day_month(t.tm_mday, t.tm_mon, t.tm_year))
--        {
--            return result;
--        }
-+    return result;
-+#else // LINUX
-+    uint64_t input = m_interval;
-+    uint64_t frac_sec = input % _secondTicks;
-+    input /= _secondTicks;                               // convert to seconds
-+    time_t time = (time_t)input - (time_t)11644473600LL; // diff between windows and unix epochs (seconds)
-+
-+    struct tm datetime;
-+    gmtime_r(&time, &datetime);
-+
-+    const int max_dt_length = 64;
-+    char output[max_dt_length + 1] = {0};
-+
-+    if (format != RFC_1123 && frac_sec > 0)
-+    {
-+        // Append fractional second, which is a 7-digit value with no trailing zeros
-+        // This way, '1200' becomes '00012'
-+        const int max_frac_length = 8;
-+        char buf[max_frac_length + 1] = {0};
-+        snprintf(buf, sizeof(buf), ".%07ld", (long int)frac_sec);
-+        // trim trailing zeros
-+        for (int i = max_frac_length - 1; buf[i] == '0'; i--)
-+            buf[i] = '\0';
-+        // format the datetime into a separate buffer
-+        char datetime_str[max_dt_length - max_frac_length - 1 + 1] = {0};
-+        strftime(datetime_str, sizeof(datetime_str), "%Y-%m-%dT%H:%M:%S", &datetime);
-+        // now print this buffer into the output buffer
-+        snprintf(output, sizeof(output), "%s%sZ", datetime_str, buf);
-+    }
-+    else
-+    {
-+        strftime(
-+            output, sizeof(output), format == RFC_1123 ? "%a, %d %b %Y %H:%M:%S GMT" : "%Y-%m-%dT%H:%M:%SZ", &datetime);
-+    }
- 
--        t.tm_year -= 1900;
--        str += 5; // parsed year
-+    return std::string(output);
-+#endif
-+}
- 
--        if (!ascii_isdigit2(str[0]) || !ascii_isdigit(str[1]) || str[2] != _XPLATSTR(':') || !ascii_isdigit5(str[3]) ||
--            !ascii_isdigit(str[4]))
--        {
--            return result;
--        }
-+#ifdef _WIN32
-+bool __cdecl datetime::system_type_to_datetime(void* pvsysTime, uint64_t seconds, datetime* pdt)
-+{
-+    SYSTEMTIME* psysTime = (SYSTEMTIME*)pvsysTime;
-+    FILETIME fileTime;
- 
--        t.tm_hour = atoi2(str);
--        if (t.tm_hour > 23)
--        {
--            return result;
--        }
-+    if (SystemTimeToFileTime(psysTime, &fileTime))
-+    {
-+        ULARGE_INTEGER largeInt;
-+        largeInt.LowPart = fileTime.dwLowDateTime;
-+        largeInt.HighPart = fileTime.dwHighDateTime;
- 
--        str += 3; // parsed hour
--        t.tm_min = atoi2(str);
--        str += 2; // parsed mins
-+        // Add hundredths of nanoseconds
-+        largeInt.QuadPart += seconds;
- 
--        if (str[0] == ':')
--        {
--            if (!ascii_isdigit6(str[1]) || !ascii_isdigit(str[2]) || str[3] != _XPLATSTR(' '))
--            {
--                return result;
--            }
-+        *pdt = datetime(largeInt.QuadPart);
-+        return true;
-+    }
-+    return false;
-+}
-+#endif
- 
--            t.tm_sec = atoi2(str + 1);
--            str += 4; // parsed seconds
--        }
--        else if (str[0] == _XPLATSTR(' '))
--        {
--            t.tm_sec = 0;
--            str += 1; // parsed seconds
--        }
--        else
--        {
--            return result;
-+// Take a string that represents a fractional second and return the number of ticks
-+// This is equivalent to doing atof on the string and multiplying by 10000000,
-+// but does not lose precision
-+template<typename StringIterator>
-+uint64_t timeticks_from_second(StringIterator begin, StringIterator end)
-+{
-+    int size = (int)(end - begin);
-+    _ASSERTE(begin[0] == U('.'));
-+    uint64_t ufrac_second = 0;
-+    for (int i = 1; i <= 7; ++i)
-+    {
-+        ufrac_second *= 10;
-+        int add = i < size ? begin[i] - U('0') : 0;
-+        ufrac_second += add;
-+    }
-+    return ufrac_second;
-+}
-+
-+void extract_fractional_second(const utility::string_t& dateString,
-+                               utility::string_t& resultString,
-+                               uint64_t& ufrac_second)
-+{
-+    resultString = dateString;
-+    // First, the string must be strictly longer than 2 characters, and the trailing character must be 'Z'
-+    if (resultString.size() > 2 && resultString[resultString.size() - 1] == U('Z'))
-+    {
-+        // Second, find the last non-digit by scanning the string backwards
-+        auto last_non_digit = std::find_if_not(resultString.rbegin() + 1, resultString.rend(), is_digit);
-+        if (last_non_digit < resultString.rend() - 1)
-+        {
-+            // Finally, make sure the last non-digit is a dot:
-+            auto last_dot = last_non_digit.base() - 1;
-+            if (*last_dot == U('.'))
-+            {
-+                // Got it! Now extract the fractional second
-+                auto last_before_Z = std::end(resultString) - 1;
-+                ufrac_second = timeticks_from_second(last_dot, last_before_Z);
-+                // And erase it from the string
-+                resultString.erase(last_dot, last_before_Z);
-+            }
-         }
-+    }
-+}
- 
--        if (t.tm_sec > 60)
--        { // 60 to allow leap seconds
--            return result;
--        }
-+datetime __cdecl datetime::from_string(const utility::string_t& dateString, date_format format)
-+{
-+    // avoid floating point math to preserve precision
-+    uint64_t ufrac_second = 0;
- 
--        t.tm_isdst = 0;
--        seconds = make_gm_time(&t);
--        if (seconds < 0)
--        {
--            return result;
--        }
-+#ifdef _WIN32
-+    datetime result;
-+    if (format == RFC_1123)
-+    {
-+        SYSTEMTIME sysTime = {0};
- 
--        if (parsedWeekday >= 0 && parsedWeekday != t.tm_wday)
--        {
--            return result;
--        }
-+        std::wstring month(3, L'\0');
-+        std::wstring unused(3, L'\0');
- 
--        if (!string_starts_with(str, "GMT") && !string_starts_with(str, "UT"))
--        {
--            // some timezone adjustment necessary
--            auto tzCh = _XPLATSTR('-');
--            int tzHours;
--            int tzMinutes = 0;
--            if (string_starts_with(str, "EDT"))
--            {
--                tzHours = 4;
--            }
--            else if (string_starts_with(str, "EST") || string_starts_with(str, "CDT"))
--            {
--                tzHours = 5;
--            }
--            else if (string_starts_with(str, "CST") || string_starts_with(str, "MDT"))
--            {
--                tzHours = 6;
--            }
--            else if (string_starts_with(str, "MST") || string_starts_with(str, "PDT"))
--            {
--                tzHours = 7;
--            }
--            else if (string_starts_with(str, "PST"))
--            {
--                tzHours = 8;
--            }
--            else if ((tzCh == _XPLATSTR('+') || tzCh == _XPLATSTR('-')) && ascii_isdigit2(str[1]) &&
--                     ascii_isdigit(str[2]) && ascii_isdigit5(str[3]) && ascii_isdigit(str[4]))
--            {
--                tzCh = str[0];
--                tzHours = atoi2(str + 1);
--                tzMinutes = atoi2(str + 3);
--            }
--            else
--            {
--                return result;
--            }
-+        const wchar_t* formatString = L"%3c, %2d %3c %4d %2d:%2d:%2d %3c";
-+        auto n = swscanf_s(dateString.c_str(),
-+                           formatString,
-+                           unused.data(),
-+                           unused.size(),
-+                           &sysTime.wDay,
-+                           month.data(),
-+                           month.size(),
-+                           &sysTime.wYear,
-+                           &sysTime.wHour,
-+                           &sysTime.wMinute,
-+                           &sysTime.wSecond,
-+                           unused.data(),
-+                           unused.size());
-+
-+        if (n == 8)
-+        {
-+            std::wstring monthnames[12] = {
-+                L"Jan", L"Feb", L"Mar", L"Apr", L"May", L"Jun", L"Jul", L"Aug", L"Sep", L"Oct", L"Nov", L"Dec"};
-+            auto loc =
-+                std::find_if(monthnames, monthnames + 12, [&month](const std::wstring& m) { return m == month; });
- 
--            seconds = timezone_adjust(seconds, static_cast<unsigned char>(tzCh), tzHours, tzMinutes);
--            if (seconds < 0)
-+            if (loc != monthnames + 12)
-             {
--                return result;
-+                sysTime.wMonth = (short)((loc - monthnames) + 1);
-+                if (system_type_to_datetime(&sysTime, ufrac_second, &result))
-+                {
-+                    return result;
-+                }
-             }
-         }
-     }
-     else if (format == ISO_8601)
-     {
--        // parse year
--        if (!ascii_isdigit3(str[0]) || !ascii_isdigit(str[1]) || !ascii_isdigit(str[2]) || !ascii_isdigit(str[3]))
--        {
--            return result;
--        }
-+        // Unlike FILETIME, SYSTEMTIME does not have enough precision to hold seconds in 100 nanosecond
-+        // increments. Therefore, start with seconds and milliseconds set to 0, then add them separately
- 
--        t.tm_year = (str[0] - _XPLATSTR('0')) * 1000 + (str[1] - _XPLATSTR('0')) * 100 +
--                    (str[2] - _XPLATSTR('0')) * 10 + (str[3] - _XPLATSTR('0'));
--        if (t.tm_year < 1970 || t.tm_year > 3000)
--        {
--            return result;
--        }
-+        // Try to extract the fractional second from the timestamp
-+        utility::string_t input;
-+        extract_fractional_second(dateString, input, ufrac_second);
-+        {
-+            SYSTEMTIME sysTime = {0};
-+            const wchar_t* formatString = L"%4d-%2d-%2dT%2d:%2d:%2dZ";
-+            auto n = swscanf_s(input.c_str(),
-+                               formatString,
-+                               &sysTime.wYear,
-+                               &sysTime.wMonth,
-+                               &sysTime.wDay,
-+                               &sysTime.wHour,
-+                               &sysTime.wMinute,
-+                               &sysTime.wSecond);
- 
--        str += 4;
--        if (*str == _XPLATSTR('-'))
--        {
--            ++str;
-+            if (n == 3 || n == 6)
-+            {
-+                if (system_type_to_datetime(&sysTime, ufrac_second, &result))
-+                {
-+                    return result;
-+                }
-+            }
-         }
--
--        // parse month
--        if (!ascii_isdigit1(str[0]) || !ascii_isdigit(str[1]))
-         {
--            return result;
--        }
-+            SYSTEMTIME sysTime = {0};
-+            DWORD date = 0;
- 
--        t.tm_mon = atoi2(str);
--        if (t.tm_mon < 1 || t.tm_mon > 12)
--        {
--            return result;
--        }
--
--        t.tm_mon -= 1;
--        str += 2;
-+            const wchar_t* formatString = L"%8dT%2d:%2d:%2dZ";
-+            auto n = swscanf_s(input.c_str(), formatString, &date, &sysTime.wHour, &sysTime.wMinute, &sysTime.wSecond);
- 
--        if (*str == _XPLATSTR('-'))
--        {
--            ++str;
--        }
-+            if (n == 1 || n == 4)
-+            {
-+                sysTime.wDay = date % 100;
-+                date /= 100;
-+                sysTime.wMonth = date % 100;
-+                date /= 100;
-+                sysTime.wYear = (WORD)date;
- 
--        // parse day
--        if (!ascii_isdigit3(str[0]) || !ascii_isdigit(str[1]))
--        {
--            return result;
-+                if (system_type_to_datetime(&sysTime, ufrac_second, &result))
-+                {
-+                    return result;
-+                }
-+            }
-         }
--
--        t.tm_mday = atoi2(str);
--        if (!validate_day_month(t.tm_mday, t.tm_mon, t.tm_year))
-         {
--            return result;
--        }
-+            SYSTEMTIME sysTime = {0};
-+            GetSystemTime(&sysTime); // Fill date portion with today's information
-+            sysTime.wSecond = 0;
-+            sysTime.wMilliseconds = 0;
- 
--        t.tm_year -= 1900;
--        str += 2;
-+            const wchar_t* formatString = L"%2d:%2d:%2dZ";
-+            auto n = swscanf_s(input.c_str(), formatString, &sysTime.wHour, &sysTime.wMinute, &sysTime.wSecond);
- 
--        if (str[0] != _XPLATSTR('T') && str[0] != _XPLATSTR('t'))
--        {
--            // No time
--            seconds = make_gm_time(&t);
--            if (seconds < 0)
-+            if (n == 3)
-             {
--                return result;
-+                if (system_type_to_datetime(&sysTime, ufrac_second, &result))
-+                {
-+                    return result;
-+                }
-             }
--
--            seconds += ntToUnixOffsetSeconds;
--            result.m_interval = static_cast<interval_type>(seconds) * _secondTicks;
--            return result;
-         }
-+    }
- 
--        ++str; // skip 'T'
-+    return datetime();
-+#else
-+    std::string input(dateString);
- 
--        // parse hour
--        if (!ascii_isdigit2(str[0]) || !ascii_isdigit(str[1]))
--        {
--            return result;
--        }
-+    struct tm output = tm();
- 
--        t.tm_hour = atoi2(str);
--        str += 2;
--        if (t.tm_hour > 23)
--        {
--            return result;
--        }
-+    if (format == RFC_1123)
-+    {
-+        strptime(input.data(), "%a, %d %b %Y %H:%M:%S GMT", &output);
-+    }
-+    else
-+    {
-+        // Try to extract the fractional second from the timestamp
-+        utility::string_t input;
-+        extract_fractional_second(dateString, input, ufrac_second);
- 
--        if (*str == _XPLATSTR(':'))
--        {
--            ++str;
--        }
-+        auto result = strptime(input.data(), "%Y-%m-%dT%H:%M:%SZ", &output);
- 
--        // parse minute
--        if (!ascii_isdigit5(str[0]) || !ascii_isdigit(str[1]))
-+        if (result == nullptr)
-         {
--            return result;
-+            result = strptime(input.data(), "%Y%m%dT%H:%M:%SZ", &output);
-         }
--        t.tm_min = atoi2(str);
--        // t.tm_min > 59 is impossible because we checked that the first digit is <= 5 in the basic format
--        // check above
--
--        str += 2;
--
--        if (*str == _XPLATSTR(':'))
-+        if (result == nullptr)
-         {
--            ++str;
-+            // Fill the date portion with the epoch,
-+            // strptime will do the rest
-+            memset(&output, 0, sizeof(struct tm));
-+            output.tm_year = 70;
-+            output.tm_mon = 1;
-+            output.tm_mday = 1;
-+            result = strptime(input.data(), "%H:%M:%SZ", &output);
-         }
--
--        // parse seconds
--        if (!ascii_isdigit6(str[0]) || !ascii_isdigit(str[1]))
-+        if (result == nullptr)
-         {
--            return result;
-+            result = strptime(input.data(), "%Y-%m-%d", &output);
-         }
--
--        t.tm_sec = atoi2(str);
--        // We allow 60 to account for leap seconds
--        if (t.tm_sec > 60)
-+        if (result == nullptr)
-         {
--            return result;
-+            result = strptime(input.data(), "%Y%m%d", &output);
-         }
--
--        str += 2;
--        if (str[0] == _XPLATSTR('.') && ascii_isdigit(str[1]))
-+        if (result == nullptr)
-         {
--            ++str;
--            int digits = 7;
--            for (;;)
--            {
--                frac_sec *= 10;
--                frac_sec += *str - _XPLATSTR('0');
--                --digits;
--                ++str;
--                if (digits == 0)
--                {
--                    while (ascii_isdigit(*str))
--                    {
--                        // consume remaining fractional second digits we can't use
--                        ++str;
--                    }
--
--                    break;
--                }
--
--                if (!ascii_isdigit(*str))
--                {
--                    // no more digits in the input, do the remaining multiplies we need
--                    for (; digits != 0; --digits)
--                    {
--                        frac_sec *= 10;
--                    }
--
--                    break;
--                }
--            }
-+            return datetime();
-         }
-+    }
- 
--        seconds = make_gm_time(&t);
--        if (seconds < 0)
--        {
--            return result;
--        }
-+#if (defined(ANDROID) || defined(__ANDROID__))
-+    // HACK: The (nonportable?) POSIX function timegm is not available in
-+    //       bionic. As a workaround[1][2], we set the C library timezone to
-+    //       UTC, call mktime, then set the timezone back. However, the C
-+    //       environment is fundamentally a shared global resource and thread-
-+    //       unsafe. We can protect our usage here, however any other code might
-+    //       manipulate the environment at the same time.
-+    //
-+    // [1] http://linux.die.net/man/3/timegm
-+    // [2] http://www.gnu.org/software/libc/manual/html_node/Broken_002ddown-Time.html
-+    time_t time;
- 
--        if (str[0] == _XPLATSTR('Z') || str[0] == _XPLATSTR('z'))
-+    static boost::mutex env_var_lock;
-+    {
-+        boost::lock_guard<boost::mutex> lock(env_var_lock);
-+        std::string prev_env;
-+        auto prev_env_cstr = getenv("TZ");
-+        if (prev_env_cstr != nullptr)
-         {
--            // no adjustment needed for zulu time
-+            prev_env = prev_env_cstr;
-         }
--        else if (str[0] == _XPLATSTR('+') || str[0] == _XPLATSTR('-'))
--        {
--            const unsigned char offsetDirection = static_cast<unsigned char>(str[0]);
--            if (!ascii_isdigit2(str[1]) || !ascii_isdigit(str[2]) || str[3] != _XPLATSTR(':') ||
--                !ascii_isdigit5(str[4]) || !ascii_isdigit(str[5]))
--            {
--                return result;
--            }
-+        setenv("TZ", "UTC", 1);
- 
--            seconds = timezone_adjust(seconds, offsetDirection, atoi2(str + 1), atoi2(str + 4));
--            if (seconds < 0)
--            {
--                return result;
--            }
-+        time = mktime(&output);
-+
-+        if (prev_env_cstr)
-+        {
-+            setenv("TZ", prev_env.c_str(), 1);
-         }
-         else
-         {
--            // the timezone is malformed, but cpprestsdk currently accepts this as no timezone
-+            unsetenv("TZ");
-         }
-     }
--    else
--    {
--        throw std::invalid_argument("unrecognized date format");
--    }
-+#else
-+    time_t time = timegm(&output);
-+#endif
-+
-+    struct timeval tv = timeval();
-+    tv.tv_sec = time;
-+    auto result = timeval_to_datetime(tv);
- 
--    seconds += ntToUnixOffsetSeconds;
--    result.m_interval = static_cast<interval_type>(seconds) * _secondTicks + frac_sec;
-+    // fractional seconds are already in correct format so just add them.
-+    result = result + ufrac_second;
-     return result;
-+#endif
- }
- 
- /// <summary>
-@@ -1358,32 +1181,38 @@ utility::seconds __cdecl timespan::xml_d
-     // The final S could be omitted
- 
-     int64_t numSecs = 0;
--    auto cursor = timespanString.c_str();
--    auto c = *cursor++; // skip 'P'
--    while (c)
-+
-+    utility::istringstream_t is(timespanString);
-+    is.imbue(std::locale::classic());
-+    auto eof = std::char_traits<utility::char_t>::eof();
-+
-+    std::basic_istream<utility::char_t>::int_type c;
-+    c = is.get(); // P
-+
-+    while (c != eof)
-     {
-         int val = 0;
--        c = *cursor++;
-+        c = is.get();
- 
--        while (ascii_isdigit(c))
-+        while (is_digit((utility::char_t)c))
-         {
--            val = val * 10 + (c - _XPLATSTR('0'));
--            c = *cursor++;
-+            val = val * 10 + (c - L'0');
-+            c = is.get();
- 
--            if (c == _XPLATSTR('.'))
-+            if (c == '.')
-             {
-                 // decimal point is not handled
-                 do
-                 {
--                    c = *cursor++;
--                } while (ascii_isdigit(c));
-+                    c = is.get();
-+                } while (is_digit((utility::char_t)c));
-             }
-         }
- 
--        if (c == _XPLATSTR('D')) numSecs += val * 24 * 3600; // days
--        if (c == _XPLATSTR('H')) numSecs += val * 3600;      // Hours
--        if (c == _XPLATSTR('M')) numSecs += val * 60;        // Minutes
--        if (c == _XPLATSTR('S') || c == _XPLATSTR('\0'))
-+        if (c == L'D') numSecs += val * 24 * 3600; // days
-+        if (c == L'H') numSecs += val * 3600;      // Hours
-+        if (c == L'M') numSecs += val * 60;        // Minutes
-+        if (c == L'S' || c == eof)
-         {
-             numSecs += val; // seconds
-             break;
-@@ -1393,12 +1222,12 @@ utility::seconds __cdecl timespan::xml_d
-     return utility::seconds(numSecs);
- }
- 
--static const utility::char_t c_allowed_chars[] =
--    _XPLATSTR("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
-+const utility::string_t nonce_generator::c_allowed_chars(
-+    _XPLATSTR("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"));
- 
- utility::string_t nonce_generator::generate()
- {
--    std::uniform_int_distribution<> distr(0, static_cast<int>(sizeof(c_allowed_chars) / sizeof(utility::char_t)) - 1);
-+    std::uniform_int_distribution<> distr(0, static_cast<int>(c_allowed_chars.length() - 1));
-     utility::string_t result;
-     result.reserve(length());
-     std::generate_n(std::back_inserter(result), length(), [&]() { return c_allowed_chars[distr(m_random)]; });
---- cpprest-2.10.12.orig/Release/tests/functional/utils/datetime.cpp
-+++ cpprest-2.10.12/Release/tests/functional/utils/datetime.cpp
-@@ -74,6 +74,16 @@ SUITE(datetime)
-         }
-     }
- 
-+    TEST(parsing_time_extended)
-+    {
-+        // ISO 8601
-+        {
-+            auto dt = utility::datetime::from_string(_XPLATSTR("14:30:01Z"), utility::datetime::ISO_8601);
-+
-+            VERIFY_ARE_NOT_EQUAL(0u, dt.to_interval());
-+        }
-+    }
-+
-     void TestDateTimeRoundtrip(utility::string_t str, utility::string_t strExpected)
-     {
-         auto dt = utility::datetime::from_string(str, utility::datetime::ISO_8601);
-@@ -91,8 +101,6 @@ SUITE(datetime)
- 
-     TEST(parsing_time_roundtrip_datetime2)
-     {
--        // lose the last '000'
--        TestDateTimeRoundtrip(_XPLATSTR("2013-11-19T14:30:59.1234567000Z"), _XPLATSTR("2013-11-19T14:30:59.1234567Z"));
-         // lose the last '999' without rounding up
-         TestDateTimeRoundtrip(_XPLATSTR("2013-11-19T14:30:59.1234567999Z"), _XPLATSTR("2013-11-19T14:30:59.1234567Z"));
-     }
-@@ -121,260 +129,16 @@ SUITE(datetime)
-         TestDateTimeRoundtrip(_XPLATSTR("2013-11-19T14:30:59.5Z"));
-     }
- 
--    void TestRfc1123IsTimeT(const utility::char_t* str, time_t t)
--    {
--        datetime dt = datetime::from_string(str, utility::datetime::RFC_1123);
--        uint64_t interval = dt.to_interval();
--        VERIFY_ARE_EQUAL(0, interval % 10000000);
--        interval /= 10000000;
--        interval -= 11644473600; // NT epoch adjustment
--        VERIFY_ARE_EQUAL(static_cast<uint64_t>(t), interval);
--    }
--
--    TEST(parsing_time_rfc1123_accepts_each_day)
--    {
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:00:00 GMT"), (time_t) 0);
--        TestRfc1123IsTimeT(_XPLATSTR("Fri, 02 Jan 1970 00:00:00 GMT"), (time_t) 86400 * 1);
--        TestRfc1123IsTimeT(_XPLATSTR("Sat, 03 Jan 1970 00:00:00 GMT"), (time_t) 86400 * 2);
--        TestRfc1123IsTimeT(_XPLATSTR("Sun, 04 Jan 1970 00:00:00 GMT"), (time_t) 86400 * 3);
--        TestRfc1123IsTimeT(_XPLATSTR("Mon, 05 Jan 1970 00:00:00 GMT"), (time_t) 86400 * 4);
--        TestRfc1123IsTimeT(_XPLATSTR("Tue, 06 Jan 1970 00:00:00 GMT"), (time_t) 86400 * 5);
--        TestRfc1123IsTimeT(_XPLATSTR("Wed, 07 Jan 1970 00:00:00 GMT"), (time_t) 86400 * 6);
--    }
--
--    TEST(parsing_time_rfc1123_boundary_cases)
--    {
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:00:00 GMT"), (time_t) 0);
--        TestRfc1123IsTimeT(_XPLATSTR("19 Jan 2038 03:14:06 GMT"), (time_t) INT_MAX - 1);
--#ifndef _USE_32BIT_TIME_T
--        TestRfc1123IsTimeT(_XPLATSTR("19 Jan 2038 03:13:07 -0001"), (time_t) INT_MAX);
--        TestRfc1123IsTimeT(_XPLATSTR("19 Jan 2038 03:14:07 -0000"), (time_t) INT_MAX);
--#endif // _USE_32BIT_TIME_T
--        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 +0000"), (time_t) 1547507781);
--        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 -0001"), (time_t) 1547507841);
--        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 +0001"), (time_t) 1547507721);
--        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 -0100"), (time_t) 1547511381);
--        TestRfc1123IsTimeT(_XPLATSTR("14 Jan 2019 23:16:21 +0100"), (time_t) 1547504181);
--    }
--
--    TEST(parsing_time_rfc1123_uses_each_field)
--    {
--        TestRfc1123IsTimeT(_XPLATSTR("02 Jan 1970 00:00:00 GMT"), (time_t) 86400);
--        TestRfc1123IsTimeT(_XPLATSTR("12 Jan 1970 00:00:00 GMT"), (time_t) 950400);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Feb 1970 00:00:00 GMT"), (time_t) 2678400);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 2000 00:00:00 GMT"), (time_t) 946684800);
--#ifndef _USE_32BIT_TIME_T
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 2100 00:00:00 GMT"), (time_t) 4102444800);
--#endif // _USE_32BIT_TIME_T
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1990 00:00:00 GMT"), (time_t) 631152000);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1971 00:00:00 GMT"), (time_t) 31536000);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 10:00:00 GMT"), (time_t) 36000);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 01:00:00 GMT"), (time_t) 3600);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:10:00 GMT"), (time_t) 600);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:01:00 GMT"), (time_t) 60);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:00:10 GMT"), (time_t) 10);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 00:00:01 GMT"), (time_t) 1);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 10:00:00 GMT"), (time_t) 36000);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 02:00:00 PST"), (time_t) 36000);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 03:00:00 PDT"), (time_t) 36000);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 03:00:00 MST"), (time_t) 36000);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 04:00:00 MDT"), (time_t) 36000);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 04:00:00 CST"), (time_t) 36000);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 05:00:00 CDT"), (time_t) 36000);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 05:00:00 EST"), (time_t) 36000);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 06:00:00 EDT"), (time_t) 36000);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 06:00:00 -0400"), (time_t) 36000);
--        TestRfc1123IsTimeT(_XPLATSTR("01 Jan 1970 05:59:00 -0401"), (time_t) 36000);
--    }
--
--    TEST(parsing_time_rfc1123_max_days)
--    {
--        TestRfc1123IsTimeT(_XPLATSTR("31 Jan 1970 00:00:00 GMT"), (time_t) 2592000);
--        TestRfc1123IsTimeT(_XPLATSTR("28 Feb 2019 00:00:00 GMT"), (time_t) 1551312000); // non leap year allows feb 28
--        TestRfc1123IsTimeT(_XPLATSTR("29 Feb 2020 00:00:00 GMT"), (time_t) 1582934400); // leap year allows feb 29
--        TestRfc1123IsTimeT(_XPLATSTR("31 Mar 1970 00:00:00 GMT"), (time_t) 7689600);
--        TestRfc1123IsTimeT(_XPLATSTR("30 Apr 1970 00:00:00 GMT"), (time_t) 10281600);
--        TestRfc1123IsTimeT(_XPLATSTR("31 May 1970 00:00:00 GMT"), (time_t) 12960000);
--        TestRfc1123IsTimeT(_XPLATSTR("30 Jun 1970 00:00:00 GMT"), (time_t) 15552000);
--        TestRfc1123IsTimeT(_XPLATSTR("31 Jul 1970 00:00:00 GMT"), (time_t) 18230400);
--        TestRfc1123IsTimeT(_XPLATSTR("31 Aug 1970 00:00:00 GMT"), (time_t) 20908800);
--        TestRfc1123IsTimeT(_XPLATSTR("30 Sep 1970 00:00:00 GMT"), (time_t) 23500800);
--        TestRfc1123IsTimeT(_XPLATSTR("31 Oct 1970 00:00:00 GMT"), (time_t) 26179200);
--        TestRfc1123IsTimeT(_XPLATSTR("30 Nov 1970 00:00:00 GMT"), (time_t) 28771200);
--        TestRfc1123IsTimeT(_XPLATSTR("31 Dec 1970 00:00:00 GMT"), (time_t) 31449600);
--    }
--
--    TEST(parsing_time_rfc1123_invalid_cases)
--    {
--        const utility::string_t bad_strings[] = {
--            _XPLATSTR("Ahu, 01 Jan 1970 00:00:00 GMT"), // bad letters in each place
--            _XPLATSTR("TAu, 01 Jan 1970 00:00:00 GMT"),
--            _XPLATSTR("ThA, 01 Jan 1970 00:00:00 GMT"),
--            _XPLATSTR("ThuA 01 Jan 1970 00:00:00 GMT"),
--            _XPLATSTR("Thu,A01 Jan 1970 00:00:00 GMT"),
--            _XPLATSTR("Thu, A1 Jan 1970 00:00:00 GMT"),
--            _XPLATSTR("Thu, 0A Jan 1970 00:00:00 GMT"),
--            _XPLATSTR("Thu, 01AJan 1970 00:00:00 GMT"),
--            _XPLATSTR("Thu, 01 Aan 1970 00:00:00 GMT"),
--            _XPLATSTR("Thu, 01 JAn 1970 00:00:00 GMT"),
--            _XPLATSTR("Thu, 01 JaA 1970 00:00:00 GMT"),
--            _XPLATSTR("Thu, 01 JanA1970 00:00:00 GMT"),
--            _XPLATSTR("Thu, 01 Jan A970 00:00:00 GMT"),
--            _XPLATSTR("Thu, 01 Jan 1A70 00:00:00 GMT"),
--            _XPLATSTR("Thu, 01 Jan 19A0 00:00:00 GMT"),
--            _XPLATSTR("Thu, 01 Jan 197A 00:00:00 GMT"),
--            _XPLATSTR("Thu, 01 Jan 1970A00:00:00 GMT"),
--            _XPLATSTR("Thu, 01 Jan 1970 A0:00:00 GMT"),
--            _XPLATSTR("Thu, 01 Jan 1970 0A:00:00 GMT"),
--            _XPLATSTR("Thu, 01 Jan 1970 00A00:00 GMT"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:A0:00 GMT"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:0A:00 GMT"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:00A00 GMT"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:00:A0 GMT"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:00:0A GMT"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:00:00AGMT"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:00:00 AMT"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:00:00 GAT"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:00:00 GMA"),
--            _XPLATSTR(""), // truncation
--            _XPLATSTR("T"),
--            _XPLATSTR("Th"),
--            _XPLATSTR("Thu"),
--            _XPLATSTR("Thu,"),
--            _XPLATSTR("Thu, "),
--            _XPLATSTR("Thu, 0"),
--            _XPLATSTR("Thu, 01"),
--            _XPLATSTR("Thu, 01 "),
--            _XPLATSTR("Thu, 01 J"),
--            _XPLATSTR("Thu, 01 Ja"),
--            _XPLATSTR("Thu, 01 Jan"),
--            _XPLATSTR("Thu, 01 Jan "),
--            _XPLATSTR("Thu, 01 Jan 1"),
--            _XPLATSTR("Thu, 01 Jan 19"),
--            _XPLATSTR("Thu, 01 Jan 197"),
--            _XPLATSTR("Thu, 01 Jan 1970"),
--            _XPLATSTR("Thu, 01 Jan 1970 "),
--            _XPLATSTR("Thu, 01 Jan 1970 0"),
--            _XPLATSTR("Thu, 01 Jan 1970 00"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:0"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:00"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:00:"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:00:0"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:00:00"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:00:00 "),
--            _XPLATSTR("Thu, 01 Jan 1970 00:00:00 G"),
--            _XPLATSTR("Thu, 01 Jan 1970 00:00:00 GM"),
--            _XPLATSTR("Fri, 01 Jan 1970 00:00:00 GMT"), // wrong day
--            _XPLATSTR("01 Jan 4970 00:00:00 GMT"), // year too big
--            _XPLATSTR("01 Jan 3001 00:00:00 GMT"),
--            _XPLATSTR("01 Xxx 1971 00:00:00 GMT"), // month bad
--            _XPLATSTR("00 Jan 1971 00:00:00 GMT"), // day too small
--            _XPLATSTR("32 Jan 1971 00:00:00 GMT"), // day too big
--            _XPLATSTR("30 Feb 1971 00:00:00 GMT"), // day too big for feb
--            _XPLATSTR("30 Feb 1971 00:00:00 GMT"), // day too big for feb (non-leap year)
--            _XPLATSTR("32 Mar 1971 00:00:00 GMT"), // other months
--            _XPLATSTR("31 Apr 1971 00:00:00 GMT"),
--            _XPLATSTR("32 May 1971 00:00:00 GMT"),
--            _XPLATSTR("31 Jun 1971 00:00:00 GMT"),
--            _XPLATSTR("32 Jul 1971 00:00:00 GMT"),
--            _XPLATSTR("32 Aug 1971 00:00:00 GMT"),
--            _XPLATSTR("31 Sep 1971 00:00:00 GMT"),
--            _XPLATSTR("32 Oct 1971 00:00:00 GMT"),
--            _XPLATSTR("31 Nov 1971 00:00:00 GMT"),
--            _XPLATSTR("32 Dec 1971 00:00:00 GMT"),
--            _XPLATSTR("01 Jan 1971 70:00:00 GMT"), // hour too big
--            _XPLATSTR("01 Jan 1971 24:00:00 GMT"),
--            _XPLATSTR("01 Jan 1971 00:60:00 GMT"), // minute too big
--            _XPLATSTR("01 Jan 1971 00:00:70 GMT"), // second too big
--            _XPLATSTR("01 Jan 1971 00:00:61 GMT"),
--            _XPLATSTR("01 Jan 1969 00:00:00 GMT"), // underflow
--            _XPLATSTR("01 Jan 1969 00:00:00 CEST"), // bad tz
--            _XPLATSTR("01 Jan 1970 00:00:00 +2400"), // bad tzoffsets
--            _XPLATSTR("01 Jan 1970 00:00:00 -3000"),
--            _XPLATSTR("01 Jan 1970 00:00:00 +2160"),
--            _XPLATSTR("01 Jan 1970 00:00:00 -2400"),
--            _XPLATSTR("01 Jan 1970 00:00:00 -2160"),
--        };
--
--        for (const auto& str : bad_strings)
--        {
--            auto dt = utility::datetime::from_string(str, utility::datetime::RFC_1123);
--            VERIFY_ARE_EQUAL(0, dt.to_interval());
--        }
--    }
--
--    TEST(parsing_time_iso8601_boundary_cases)
--    {
--        // boundary cases:
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-01T00:00:00Z"));                                         // epoch
--        TestDateTimeRoundtrip(_XPLATSTR("2038-01-19T03:14:06+00:00"), _XPLATSTR("2038-01-19T03:14:06Z")); // INT_MAX - 1
--#ifndef _USE_32BIT_TIME_T
--        TestDateTimeRoundtrip(_XPLATSTR("2038-01-19T03:13:07-00:01"),
--                              _XPLATSTR("2038-01-19T03:14:07Z")); // INT_MAX after subtacting 1
--        TestDateTimeRoundtrip(_XPLATSTR("2038-01-19T03:14:07-00:00"), _XPLATSTR("2038-01-19T03:14:07Z"));
--#endif // _USE_32BIT_TIME_T
--    }
--
--    TEST(parsing_time_iso8601_uses_each_timezone_digit)
--    {
--        TestDateTimeRoundtrip(_XPLATSTR("2019-01-14T23:16:21+00:00"), _XPLATSTR("2019-01-14T23:16:21Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("2019-01-14T23:16:21-00:01"), _XPLATSTR("2019-01-14T23:17:21Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("2019-01-14T23:16:21+00:01"), _XPLATSTR("2019-01-14T23:15:21Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("2019-01-14T23:16:21-01:00"), _XPLATSTR("2019-01-15T00:16:21Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("2019-01-14T23:16:21+01:00"), _XPLATSTR("2019-01-14T22:16:21Z"));
--    }
--
--    TEST(parsing_time_iso8601_uses_each_digit)
--    {
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-01T00:00:01Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-01T00:01:00Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-01T01:00:00Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-02T00:00:00Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1970-02-01T00:00:00Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1971-01-01T00:00:00Z"));
--
--        TestDateTimeRoundtrip(_XPLATSTR("1999-01-01T00:00:00Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1970-12-01T00:00:00Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1970-09-01T00:00:00Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-30T00:00:00Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-31T00:00:00Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-01T23:00:00Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-01T19:00:00Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-01T00:59:00Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-01T00:00:59Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-01T00:00:60Z"), _XPLATSTR("1970-01-01T00:01:00Z")); // leap seconds
--    }
--
--    TEST(parsing_time_iso8601_accepts_month_max_days)
--    {
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-31T00:00:00Z")); // jan
--        TestDateTimeRoundtrip(_XPLATSTR("2019-02-28T00:00:00Z")); // non leap year allows feb 28
--        TestDateTimeRoundtrip(_XPLATSTR("2020-02-29T00:00:00Z")); // leap year allows feb 29
--        TestDateTimeRoundtrip(_XPLATSTR("1970-03-31T00:00:00Z")); // mar
--        TestDateTimeRoundtrip(_XPLATSTR("1970-04-30T00:00:00Z")); // apr
--        TestDateTimeRoundtrip(_XPLATSTR("1970-05-31T00:00:00Z")); // may
--        TestDateTimeRoundtrip(_XPLATSTR("1970-06-30T00:00:00Z")); // jun
--        TestDateTimeRoundtrip(_XPLATSTR("1970-07-31T00:00:00Z")); // jul
--        TestDateTimeRoundtrip(_XPLATSTR("1970-08-31T00:00:00Z")); // aug
--        TestDateTimeRoundtrip(_XPLATSTR("1970-09-30T00:00:00Z")); // sep
--        TestDateTimeRoundtrip(_XPLATSTR("1970-10-31T00:00:00Z")); // oct
--        TestDateTimeRoundtrip(_XPLATSTR("1970-11-30T00:00:00Z")); // nov
--        TestDateTimeRoundtrip(_XPLATSTR("1970-12-31T00:00:00Z")); // dec
--    }
--
--    TEST(parsing_time_iso8601_accepts_lowercase_t_z)
--    {
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-01t00:00:00Z"), _XPLATSTR("1970-01-01T00:00:00Z"));
--        TestDateTimeRoundtrip(_XPLATSTR("1970-01-01T00:00:00z"), _XPLATSTR("1970-01-01T00:00:00Z"));
--    }
--
--    TEST(parsing_time_roundtrip_datetime_accepts_invalid_no_trailing_timezone)
-+    TEST(parsing_time_roundtrip_datetime_invalid1,
-+         "Ignore:Linux",
-+         "Codeplex issue #115",
-+         "Ignore:Apple",
-+         "Codeplex issue #115")
-     {
-         // No digits after the dot, or non-digits. This is not a valid input, but we should not choke on it,
-         // Simply ignore the bad fraction
-         const utility::string_t bad_strings[] = {_XPLATSTR("2013-11-19T14:30:59.Z"),
--                                                 _XPLATSTR("2013-11-19T14:30:59.a12Z")};
-+                                                 _XPLATSTR("2013-11-19T14:30:59.1a2Z")};
-         utility::string_t str_corrected = _XPLATSTR("2013-11-19T14:30:59Z");
- 
-         for (const auto& str : bad_strings)
-@@ -387,87 +151,12 @@ SUITE(datetime)
- 
-     TEST(parsing_time_roundtrip_datetime_invalid2)
-     {
--        // Various unsupported cases. In all cases, we have produce an empty date time
-+        // Variouls unsupported cases. In all cases, we have produce an empty date time
-         const utility::string_t bad_strings[] = {
--            _XPLATSTR(""),                     // empty
--            _XPLATSTR(".Z"),                   // too short
--            _XPLATSTR(".Zx"),                  // no trailing Z
--            _XPLATSTR("3.14Z")                 // not a valid date
--            _XPLATSTR("a971-01-01T00:00:00Z"), // any non digits or valid separators
--            _XPLATSTR("1a71-01-01T00:00:00Z"),
--            _XPLATSTR("19a1-01-01T00:00:00Z"),
--            _XPLATSTR("197a-01-01T00:00:00Z"),
--            _XPLATSTR("1971a01-01T00:00:00Z"),
--            _XPLATSTR("1971-a1-01T00:00:00Z"),
--            _XPLATSTR("1971-0a-01T00:00:00Z"),
--            _XPLATSTR("1971-01a01T00:00:00Z"),
--            _XPLATSTR("1971-01-a1T00:00:00Z"),
--            _XPLATSTR("1971-01-0aT00:00:00Z"),
--            // _XPLATSTR("1971-01-01a00:00:00Z"), parsed as complete date
--            _XPLATSTR("1971-01-01Ta0:00:00Z"),
--            _XPLATSTR("1971-01-01T0a:00:00Z"),
--            _XPLATSTR("1971-01-01T00a00:00Z"),
--            _XPLATSTR("1971-01-01T00:a0:00Z"),
--            _XPLATSTR("1971-01-01T00:0a:00Z"),
--            _XPLATSTR("1971-01-01T00:00a00Z"),
--            _XPLATSTR("1971-01-01T00:00:a0Z"),
--            _XPLATSTR("1971-01-01T00:00:0aZ"),
--            // "1971-01-01T00:00:00a", accepted as per invalid_no_trailing_timezone above
--            _XPLATSTR("1"), // truncation
--            _XPLATSTR("19"),
--            _XPLATSTR("197"),
--            _XPLATSTR("1970"),
--            _XPLATSTR("1970-"),
--            _XPLATSTR("1970-0"),
--            _XPLATSTR("1970-01"),
--            _XPLATSTR("1970-01-"),
--            _XPLATSTR("1970-01-0"),
--            // _XPLATSTR("1970-01-01"), complete date
--            _XPLATSTR("1970-01-01T"),
--            _XPLATSTR("1970-01-01T0"),
--            _XPLATSTR("1970-01-01T00"),
--            _XPLATSTR("1970-01-01T00:"),
--            _XPLATSTR("1970-01-01T00:0"),
--            _XPLATSTR("1970-01-01T00:00"),
--            _XPLATSTR("1970-01-01T00:00:"),
--            _XPLATSTR("1970-01-01T00:00:0"),
--            // _XPLATSTR("1970-01-01T00:00:00"), // accepted as invalid timezone above
--            _XPLATSTR("4970-01-01T00:00:00Z"), // year too big
--            _XPLATSTR("3001-01-01T00:00:00Z"),
--            _XPLATSTR("1971-00-01T00:00:00Z"), // month too small
--            _XPLATSTR("1971-20-01T00:00:00Z"), // month too big
--            _XPLATSTR("1971-13-01T00:00:00Z"),
--            _XPLATSTR("1971-01-00T00:00:00Z"), // day too small
--            _XPLATSTR("1971-01-32T00:00:00Z"), // day too big
--            _XPLATSTR("1971-02-30T00:00:00Z"), // day too big for feb
--            _XPLATSTR("1971-02-30T00:00:00Z"), // day too big for feb (non-leap year)
--            _XPLATSTR("1971-03-32T00:00:00Z"), // other months
--            _XPLATSTR("1971-04-31T00:00:00Z"),
--            _XPLATSTR("1971-05-32T00:00:00Z"),
--            _XPLATSTR("1971-06-31T00:00:00Z"),
--            _XPLATSTR("1971-07-32T00:00:00Z"),
--            _XPLATSTR("1971-08-32T00:00:00Z"),
--            _XPLATSTR("1971-09-31T00:00:00Z"),
--            _XPLATSTR("1971-10-32T00:00:00Z"),
--            _XPLATSTR("1971-11-31T00:00:00Z"),
--            _XPLATSTR("1971-12-32T00:00:00Z"),
--            _XPLATSTR("1971-01-01T70:00:00Z"), // hour too big
--            _XPLATSTR("1971-01-01T24:00:00Z"),
--            _XPLATSTR("1971-01-01T00:60:00Z"), // minute too big
--            _XPLATSTR("1971-01-01T00:00:70Z"), // second too big
--            _XPLATSTR("1971-01-01T00:00:61Z"),
--            _XPLATSTR("1969-01-01T00:00:00Z"), // underflow
--#ifdef _USE_32BIT_TIME_T
--            _XPLATSTR("3000-01-01T00:00:01Z"), // overflow
--#endif
--            _XPLATSTR("3001-01-01T00:00:00Z"),
--            _XPLATSTR("1970-01-01T00:00:00+00:01"), // time zone underflow
--            // _XPLATSTR("1970-01-01T00:00:00.Z"), // accepted as invalid timezone above
--            _XPLATSTR("1970-01-01T00:00:00+24:00"), // bad tzoffsets
--            _XPLATSTR("1970-01-01T00:00:00-30:00"),
--            _XPLATSTR("1970-01-01T00:00:00+21:60"),
--            _XPLATSTR("1970-01-01T00:00:00-24:00"),
--            _XPLATSTR("1970-01-01T00:00:00-21:60"),
-+            _XPLATSTR(""),     // empty
-+            _XPLATSTR(".Z"),   // too short
-+            _XPLATSTR(".Zx"),  // no trailing Z
-+            _XPLATSTR("3.14Z") // not a valid date
-         };
- 
-         for (const auto& str : bad_strings)
-@@ -477,6 +166,16 @@ SUITE(datetime)
-         }
-     }
- 
-+    TEST(parsing_time_roundtrip_time)
-+    {
-+        // time only without date
-+        utility::string_t str = _XPLATSTR("14:30:59.1234567Z");
-+        auto dt = utility::datetime::from_string(str, utility::datetime::ISO_8601);
-+        utility::string_t str2 = dt.to_string(utility::datetime::ISO_8601);
-+        // Must look for a substring now, since the date part is filled with today's date
-+        VERIFY_IS_TRUE(str2.find(str) != std::string::npos);
-+    }
-+
- } // SUITE(datetime)
- 
- } // namespace utils_tests
diff --git a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.12.bb b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.12.bb
index 92c0453..67edf56 100644
--- a/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.12.bb
+++ b/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.12.bb
@@ -8,9 +8,7 @@
 EXTRA_OECMAKE = "-DCPPREST_EXPORT_DIR=cmake -DCPPREST_EXCLUDE_BROTLI=OFF"
 
 SRC_URI = "git://github.com/Microsoft/cpprestsdk.git;protocol=https;branch=master \
-           file://revert-9b670e5b33dfdbd501d618cd7e7498148ffbd559.patch \
-           file://revert-f10d9f8e214516d2c19aa6ef831ee874a58c0479.patch \
-           "
+           file://1094.patch "
 
 # tag 2.10.12
 SRCREV= "d4fb1cf7f7d22c12e2e442ba5a5e98d09b0a28ab"
diff --git a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.7.bb b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.8.bb
similarity index 94%
rename from meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.7.bb
rename to meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.8.bb
index 37d5a63..52b291d 100644
--- a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.7.bb
+++ b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.8.bb
@@ -4,14 +4,14 @@
 DESCRIPTION = "ImageMagick is a collection of tools for displaying, converting, and \
 editing raster and vector image files. It can read and write over 200 image file formats."
 LICENSE = "ImageMagick"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=dad5a98f173fd3fa6958a1a58c6131c1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=05ff94b3ff59fe6fa7489fa26e3d9142"
 # FIXME: There are many more checked libraries. All should be added or explicitly disabled to get consistent results.
-DEPENDS = "lcms bzip2 jpeg libpng tiff zlib fftw freetype"
+DEPENDS = "lcms bzip2 jpeg libpng tiff zlib fftw freetype libtool"
 
 BASE_PV := "${PV}"
-PV .= "_7"
+PV .= "_35"
 SRC_URI = "git://github.com/ImageMagick/ImageMagick.git "
-SRCREV = "e12602b39b5e778240d286b6f9bbbc0fe3fb26c5"
+SRCREV = "224159dfcc0ae3da9a247921e3c8bfb44d39965e"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb b/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb
new file mode 100644
index 0000000..c986e17
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Fast Artificial Neural Network (FANN) Library"
+DESCRIPTION = "Fast Artificial Neural Network (FANN) Library is a free open source neural network library, which implements multilayer artificial neural networks in C with support for both fully connected and sparsely connected networks."
+HOMEPAGE = "https://github.com/libfann/fann"
+SECTION = "libs/devel"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=f14599a2f089f6ff8c97e2baa4e3d575"
+
+inherit cmake
+
+SRCREV ?= "7ec1fc7e5bd734f1d3c89b095e630e83c86b9be1"
+SRC_URI = "git://github.com/libfann/fann.git;branch=master \
+          "
+
+PV = "2.2.0+git${SRCPV}"
+
+S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_161.bb b/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_162.bb
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_161.bb
rename to meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_162.bb
diff --git a/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-CVE-2015-3276.patch b/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-CVE-2015-3276.patch
index 25e148e..ce8b47a 100644
--- a/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-CVE-2015-3276.patch
+++ b/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-CVE-2015-3276.patch
@@ -12,6 +12,8 @@
 
 Upstream-Status: Pending
 
+CVE: CVE-2015-3276
+
 Signed-off-by: Li Wang <li.wang@windriver.com>
 ---
  libraries/libldap/tls_m.c |   27 ++++++++++++++++-----------
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors.inc
index 04173f0..0d96388 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors.inc
@@ -8,8 +8,8 @@
     ${PYTHON_PN}-cryptography \
 "
 
-SRC_URI[md5sum] = "e7f44b1678e3071e2044a32f7c353d14"
-SRC_URI[sha256sum] = "829d43e8066056de8ea7b8ad311db79e47d8d658e23d5f5fc4b0245a1b3baa74"
+SRC_URI[md5sum] = "f8b166652e7a9d668b851b28e4417057"
+SRC_URI[sha256sum] = "03f38115dccb266dd96538f94067442a877932c2322661bdc5bf2502c76658af"
 
 PYPI_PACKAGE = "cryptography_vectors"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors_2.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors_2.6.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors_2.4.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-cryptography-vectors_2.6.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography.inc
index 2c1ac1c..8a36411 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography.inc
@@ -10,8 +10,8 @@
     ${PYTHON_PN}-six \
 "
 
-SRC_URI[md5sum] = "464f180ff64622760cca7167f97b3ff4"
-SRC_URI[sha256sum] = "e85b410885addaeb31a867eabcefc9ef4a7e904ad45eac9e60a763a54b244626"
+SRC_URI[md5sum] = "401cc8268f89496643da3f7a48eb4e8e"
+SRC_URI[sha256sum] = "26c821cbeb683facb966045e2064303029d572a87ee69ca5a1bf54bf55f93ca6"
 
 RDEPENDS_${PN} += " \
     ${PYTHON_PN}-cffi \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography_2.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-cryptography_2.6.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-cryptography_2.4.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-cryptography_2.6.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-fann2.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-fann2.inc
new file mode 100644
index 0000000..c415b35
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-fann2.inc
@@ -0,0 +1,9 @@
+SUMMARY = "Python bindings for Fast Artificial Neural Networks 2.2.0 (FANN >= 2.2.0)"
+SECTION = "devel/python"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c73b943dc75f6f65e007c56ac6515c8f"
+
+SRC_URI[md5sum] = "0b85b418018746d63ed66b55465697a9"
+SRC_URI[sha256sum] = "cdca0a65ad48e08320672affe38c3dd4ea15e27821e5e1db9fa2b34299bdd41e"
+
+DEPENDS += "swig-native libfann"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pocketsphinx.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pocketsphinx.inc
new file mode 100644
index 0000000..4c848b6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pocketsphinx.inc
@@ -0,0 +1,9 @@
+SUMMARY = "This package provides a python interface to CMU Sphinxbase and Pocketsphinx libraries created with SWIG and Setuptools."
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=826ebda787eb48e78aec2624f9faba72"
+
+SRC_URI[md5sum] = "c0f2bfd54bc4c438c3bb64825f57d575"
+SRC_URI[sha256sum] = "2cc493ed48c1301e0d2e69b137dc646c2f8caca190ef4bce61836eac96d1796f"
+
+DEPENDS += "swig-native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyaudio.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyaudio.inc
new file mode 100644
index 0000000..0d3ddb1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyaudio.inc
@@ -0,0 +1,13 @@
+SUMMARY = "PyAudio provides Python bindings for PortAudio, the cross-platform audio I/O library"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README;md5=288793c2b9b05bd67abbd2a8f5d144f7"
+
+PYPI_PACKAGE = "PyAudio"
+
+SRC_URI[md5sum] = "7e4c88139284033f67b4336c74eda3b8"
+SRC_URI[sha256sum] = "93bfde30e0b64e63a46f2fd77e85c41fd51182a4a3413d9edfaf9ffaa26efb74"
+
+DEPENDS += "portaudio-v19"
+
+RDEPENDS_${PN} += "portaudio-v19"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-requests.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-requests.inc
index 0401ee4..e6337cb 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-requests.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-requests.inc
@@ -5,8 +5,8 @@
 
 FILESEXTRAPATHS_prepend := "${THISDIR}/python-requests:"
 
-SRC_URI[md5sum] = "2918817ea4688f4ea21cb4b11e353448"
-SRC_URI[sha256sum] = "ea881206e59f41dbd0bd445437d792e43906703fff75ca8ff43ccdb11f33f263"
+SRC_URI[md5sum] = "1bcd0e0977c3f8db1848ba0e2b7ab904"
+SRC_URI[sha256sum] = "502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e"
 
 inherit pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-requests_2.20.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-requests_2.21.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-requests_2.20.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-requests_2.21.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-xxhash.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-xxhash.inc
new file mode 100644
index 0000000..9df4520
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-xxhash.inc
@@ -0,0 +1,7 @@
+SUMMARY = "xxhash is a Python binding for the xxHash library by Yann Collet."
+SECTION = "devel/python"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d2c6db5887cc6b2fac8b701d64cb8442"
+
+SRC_URI[md5sum] = "a4289aa01839f3ea1fb98929d9131001"
+SRC_URI[sha256sum] = "fe21f23a9d05428c75461790b670f2bf15f50a632d6c171a7e7b588269c619e6"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_2.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_2.6.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_2.4.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography-vectors_2.6.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_2.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_2.6.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_2.4.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cryptography_2.6.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2/0001-setup.py-Don-t-hardcode-swig-and-fann2-binary-locati.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2/0001-setup.py-Don-t-hardcode-swig-and-fann2-binary-locati.patch
new file mode 100644
index 0000000..cbc838f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2/0001-setup.py-Don-t-hardcode-swig-and-fann2-binary-locati.patch
@@ -0,0 +1,28 @@
+From 85307f592c7cb87af162cca4b121b874108b7754 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Tue, 2 Apr 2019 11:25:15 -0700
+Subject: [PATCH] setup.py: Don't hardcode swig and fann2 binary locations
+
+Upstream-Status: Inappropriate [configuration]
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+---
+ setup.py | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 37af7c7..8e416f2 100755
+--- a/setup.py
++++ b/setup.py
+@@ -81,11 +81,8 @@ def find_swig():
+ 
+ def build_swig():
+     '''Run SWIG with specified parameters'''
+-    print("Looking for FANN libs...")
+-    find_fann()
+-    print("running SWIG...")
+     swig_bin = find_swig()
+-    swig_cmd = [swig_bin, '-c++', '-python', 'fann2/fann2.i']
++    swig_cmd = ['swig', '-c++', '-python', 'fann2/fann2.i']
+     subprocess.Popen(swig_cmd).wait()
+ 
+ if "sdist" not in sys.argv:
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2_1.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2_1.1.2.bb
new file mode 100644
index 0000000..a04c961
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-fann2_1.1.2.bb
@@ -0,0 +1,4 @@
+require python-fann2.inc
+inherit pypi setuptools3
+
+SRC_URI += " file://0001-setup.py-Don-t-hardcode-swig-and-fann2-binary-locati.patch"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pocketsphinx_0.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pocketsphinx_0.1.0.bb
new file mode 100644
index 0000000..2275d1b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pocketsphinx_0.1.0.bb
@@ -0,0 +1,2 @@
+require python-pocketsphinx.inc
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyaudio_0.2.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyaudio_0.2.11.bb
new file mode 100644
index 0000000..abb01bf
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyaudio_0.2.11.bb
@@ -0,0 +1,2 @@
+require python-pyaudio.inc
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.20.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.21.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.20.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-requests_2.21.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_1.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_1.3.0.bb
new file mode 100644
index 0000000..76bc41a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_1.3.0.bb
@@ -0,0 +1,2 @@
+require python-xxhash.inc
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.9.4.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.9.5.bb
similarity index 79%
rename from meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.9.4.bb
rename to meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.9.5.bb
index 7c5848b..9f8f61a 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.9.4.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-screenshooter/xfce4-screenshooter_1.9.5.bb
@@ -7,8 +7,8 @@
 
 inherit xfce-app
 
-SRC_URI[md5sum] = "68321e50939fea3c66f0771d59845dab"
-SRC_URI[sha256sum] = "c4f3225b3f73f1feb1869807b8b27aec4c32a3e9c2954915a5fb39d18d3a60f2"
+SRC_URI[md5sum] = "0354811cd2622d3de92e342c7eaa184d"
+SRC_URI[sha256sum] = "bf35b5432cb920987c6d7ff193600e5dd4d73422b6aa02b4ec5288744053b38c"
 
 do_compile_prepend() {
     mkdir -p lib
