meta-openembedded: subtree update:1e8bc46e55..6a5d6bc9ad

Aaltonen Eero (1):
      Recipe for docopt.cpp option parsing library

Aaron Chan (1):
      python3-pyatspi: Add Dbus ATSPI recipe

Adrian Bunk (11):
      xmlsec1: Import from meta-security
      libgit2: Upgrade 0.27.9 -> 0.28.3
      libenv-perl: Import from meta-security
      libgit2: Don't pass parameters with their default values to cmake
      Replace EXCLUDE_FROM_WORLD_libc-musl = "1" with COMPATIBLE_HOST_libc-musl = 'null'
      libwebsockets: Fix the build with -Os
      mimic: Fix the build with -Os
      Adapt to the lsb -> lsb-release change in OE-core
      meta-oe: Replace EXCLUDE_FROM_WORLD_libc-musl = "1" with COMPATIBLE_HOST_libc-musl = 'null'
      Remove LICENSE = "MIT" from packagegroups and images
      Remove bogus COMMON_LICENSE_DIR usage in LIC_FILES_CHKSUM

Andreas Müller (4):
      cmark: initial add 0.29.0
      libsigc++-2.0: upgrade 2.10.1 -> 2.10.2
      glibmm: upgrade 2.58.1 -> 2.60.0
      evolution-data-server: remove unused gconf dep and pythonnative dep

Anuj Mittal (2):
      pugixml: add recipe
      vlc: don't look at host headers for live555

Bruce Ashfield (1):
      dnsmasq: fix build against 5.2 headers

Callaghan, Dan (1):
      python3-pystemd: add new recipe

Changqing Li (3):
      xfsprogs: support usrmerge
      ntfs-3g-ntfsprogs: support usrmerge
      grubby: support usrmerge

Chris Laplante (1):
      breakpad: fix patch striplevel to avoid 'devtool modify breakpad' error

Christophe PRIOUZEAU (1):
      python-script: update license md5sum

Gianfranco Costamagna (2):
      libmodbus: update version to 3.1.6
      ifmetric: add initial recipe based on Debian packaging and patches

Hongxu Jia (4):
      libdevmapper/lvm2: force recipe libdevmapper to populate sysroot only
      multipath-tools: lvm2 to DEPENDS
      cryptsetup: add libdevmapper to RDEPENDS
      cryptsetup: add libdevmapper to RDEPENDS

Kai Kang (1):
      xfce4-datetime-setter: fix compile error and requires distro feature x11

Khem Raj (14):
      libgpiod: nherit python3native unconditionally
      kernel-selftest: Warn conditionally about clang-native dependency
      docopt.cpp: Drop using gitpkgv
      libnss-nisplus: Fix build with glibc >= 2.30
      bpftool.bb: Disable SECURITY_CFLAGS
      kernel-selftest: Explicitly disable stack protector
      ncmpc: Update to 0.34
      websocketpp_0.8.1.bb: Fix build with asio from boost 1.70+
      can-utils: Fix build with kernel headers >= 5.2
      android-tools: update license md5sum for BSD-2-Clause
      can-isotp: Update to latest tip
      linux-atm: Fix build with kernel headers 5.2+
      drbd: Upgrade to 9.0.19-1
      ssiapi: Upgrade to 1.3.0

Klauer, Daniel (1):
      sjf2410-linux-native: Fix do_deploy sstate caching

Oleksandr Kravchuk (1):
      nftables: update to 0.9.2

Piotr Tworek (18):
      libmxml: Use autotools bbclass and cleanup the recipe a bit.
      evolution-data-server: Update to version 3.32.4
      evolution-data-server: Drop x11 as required distro feature.
      evolution-data-server: Inherit upstream-version-is-even bbclass.
      evolution-data-server: Add dedicated packages for libebook-contacts.
      evolution-data-server: Specify SYSCONF_INSTALL_DIR in EXTRA_OECMAKE.
      evolution-data-server: Drop bits related to autotools
      evolution-data-server: Add PACKAGECONFIGs for oauth2 and kerberos.
      evolution-data-server: Drop ENABLE_UOA from EXTRA_OECMAKE.
      evolution-data-server: Drop glade file references.
      evolution-data-server: Fix package gobject-introspection support.
      evolution-data-server: Add PACKAGECONFIG for vala bindings.
      evolution-data-server: Turn goa support into PACKAGECONFIG feature.
      evolution-data-server: Add weather PACKAGECONFIG feature.
      evolution-data-server: Add PACKAGECONFIG entry for phonenumber.
      evolution-data-server: Use SRC_URI provided by gnomebase.
      evolution-data-server: Remove unused FILES paterns.
      evolution-data-server: Don't use explicit version number for libebook

Qi.Chen@windriver.com (1):
      libblockdev: fix PACKAGECONFIG regarding python

Robert Yang (1):
      netcf: Fix Manifest not found issue

Yi Zhao (1):
      samba: upgrade 4.10.6 -> 4.10.7

Yuan Chao (11):
      python-typing: upgrade 3.7.4 -> 3.7.4.1
      python-twisted: upgrade 19.2.1 -> 19.7.0
      python-jsonschema: upgrade 2.6.0 -> 3.0.2
      kpatch: upgrade 0.7.1 -> 0.8.0
      libtdb: upgrade 1.4.1 -> 1.4.2
      python-paste: upgrade 3.1.0 -> 3.1.1
      python-pip: upgrade 19.2.2 -> 19.2.3
      python-pytest: upgrade 3.4.2 -> 5.1.1
      python3-xxhash: upgrade 1.3.0 -> 1.4.1
      python-pluggy: upgrade 0.6.0 -> 0.12.0
      python-cmd2: upgrade 0.9.2 -> 0.9.16

Zang Ruochen (3):
      python-futures: upgrade 3.2.0 -> 3.3.0
      python-pyyaml: upgrade 3.13 -> 5.1.2
      python-alembic: upgrade 1.0.11 -> 1.1.0

Change-Id: I3b55c2efba09c26e31018ee2cbbc908f06630c7c
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/meta-openembedded/file b/meta-openembedded/file
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/meta-openembedded/file
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/files/0001-Make-build-support-usrmerge.patch b/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/files/0001-Make-build-support-usrmerge.patch
new file mode 100644
index 0000000..fce10b9
--- /dev/null
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/files/0001-Make-build-support-usrmerge.patch
@@ -0,0 +1,43 @@
+From 33f678bf74367aab8ddc2858a9f7797455ea9b9f Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Thu, 29 Aug 2019 10:21:58 +0800
+Subject: [PATCH] Make build support usrmerge
+
+Upstream-Status: Inappropriate[oe-specific]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ ntfsprogs/Makefile.am | 2 --
+ src/Makefile.am       | 3 ---
+ 2 files changed, 5 deletions(-)
+
+diff --git a/ntfsprogs/Makefile.am b/ntfsprogs/Makefile.am
+index f4f9d1b..1f6a673 100644
+--- a/ntfsprogs/Makefile.am
++++ b/ntfsprogs/Makefile.am
+@@ -165,8 +165,6 @@ extras:	libs $(EXTRA_PROGRAMS)
+ 
+ if ENABLE_MOUNT_HELPER
+ install-exec-hook:
+-	$(INSTALL) -d $(DESTDIR)/sbin
+-	$(LN_S) -f $(sbindir)/mkntfs $(DESTDIR)/sbin/mkfs.ntfs
+ 
+ install-data-hook:
+ 	$(INSTALL) -d $(DESTDIR)$(man8dir)
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 8d98408..d0a6a45 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -66,9 +66,6 @@ endif
+ 
+ if ENABLE_MOUNT_HELPER
+ install-exec-local:	install-rootbinPROGRAMS
+-	$(MKDIR_P) "$(DESTDIR)/sbin"
+-	$(LN_S) -f "$(rootbindir)/ntfs-3g" "$(DESTDIR)/sbin/mount.ntfs-3g"
+-	$(LN_S) -f "$(rootbindir)/lowntfs-3g" "$(DESTDIR)/sbin/mount.lowntfs-3g"
+ 
+ install-data-local:	install-man8
+ 	$(LN_S) -f ntfs-3g.8 "$(DESTDIR)$(man8dir)/mount.ntfs-3g.8"
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2017.3.23.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2017.3.23.bb
index addb4d3..1559bfd 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2017.3.23.bb
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/ntfs-3g-ntfsprogs_2017.3.23.bb
@@ -8,6 +8,7 @@
 
 SRC_URI = "http://tuxera.com/opensource/ntfs-3g_ntfsprogs-${PV}.tgz \
            file://0001-libntfs-3g-Makefile.am-fix-install-failed-while-host.patch \
+           ${@bb.utils.contains('DISTRO_FEATURES','usrmerge','file://0001-Make-build-support-usrmerge.patch','',d)} \
 "
 S = "${WORKDIR}/ntfs-3g_ntfsprogs-${PV}"
 SRC_URI[md5sum] = "d97474ae1954f772c6d2fa386a6f462c"
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/0001-support-usrmerge.patch b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/0001-support-usrmerge.patch
new file mode 100644
index 0000000..84f4f88
--- /dev/null
+++ b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/0001-support-usrmerge.patch
@@ -0,0 +1,40 @@
+From e81633a276dd6a9f919e5e5c15481ac50a8e485d Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Fri, 30 Aug 2019 14:59:06 +0800
+Subject: [PATCH] support usrmerge
+
+Upstream-Status: Inappropriate [oe-specific]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ configure.ac | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 4b7e4c8..f1afbd6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -110,8 +110,7 @@ AC_ARG_ENABLE(libicu,
+ # If the user specified a libdir ending in lib64 do not append another
+ # 64 to the library names.
+ #
+-base_libdir=`basename "$libdir"`
+-case $base_libdir in
++case `basename "$libdir"` in
+ lib64)
+   enable_lib64=no
+ esac
+@@ -125,8 +124,8 @@ esac
+ #
+ case $exec_prefix:$prefix in
+ NONE:NONE | NONE:/usr | /usr:*)
+-  root_sbindir='/sbin'
+-  root_libdir="/${base_libdir}"
++  root_sbindir="${base_sbindir}"
++  root_libdir="${base_libdir}"
+   ;;
+ *)
+   root_sbindir="${sbindir}"
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.2.1.bb b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.2.1.bb
index bed80a6..5ab1d02 100644
--- a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.2.1.bb
+++ b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_5.2.1.bb
@@ -11,6 +11,7 @@
            file://0001-build-Check-for-sync_file_range-libc-function.patch \
            file://0001-Check-for-MAP_SYNC-in-sys-mman.h.patch \
            file://0002-include-include-xfs-linux.h-after-sys-mman.h.patch \
+           file://0001-support-usrmerge.patch \
            "
 SRC_URI[md5sum] = "5ca3f79e76e3fb984a03d1b42a2e60ba"
 SRC_URI[sha256sum] = "7b500e148cebd08f99e37cf744c7843817b37e7be2a32c4dc57d6ea16e3019ae"
@@ -68,6 +69,8 @@
         rm ${D}${libdir}/*.la
         rmdir --ignore-fail-on-non-empty ${D}${libdir}
 
-        ln -sf -r ${D}${libdir}/libhandle.a ${D}${base_libdir}/libhandle.a
-        ln -sf -r ${D}${base_libdir}/libhandle.so ${D}${libdir}/libhandle.so
+        if [ ${libdir} != ${base_libdir} ];then
+            ln -sf -r ${D}${libdir}/libhandle.a ${D}${base_libdir}/libhandle.a
+            ln -sf -r ${D}${base_libdir}/libhandle.so ${D}${libdir}/libhandle.so
+        fi
 }
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0001-CMakeLists.txt-Remove-TRY_RUN-for-iconv.patch b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0001-CMakeLists.txt-Remove-TRY_RUN-for-iconv.patch
index a821a14..cc9dca4 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0001-CMakeLists.txt-Remove-TRY_RUN-for-iconv.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0001-CMakeLists.txt-Remove-TRY_RUN-for-iconv.patch
@@ -1,7 +1,7 @@
-From 131b88a81aba3d72d566bc8a9d968941a98e0007 Mon Sep 17 00:00:00 2001
+From e32075119803f9fffbba01a31083e416cb213011 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
 Date: Tue, 19 Dec 2017 16:37:20 +0100
-Subject: [PATCH] CMakeLists.txt: Remove TRY_RUN for iconv
+Subject: [PATCH 1/7] CMakeLists.txt: Remove TRY_RUN for iconv
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
@@ -13,18 +13,20 @@
 
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
 ---
- CMakeLists.txt | 5 -----
- 1 file changed, 5 deletions(-)
+ CMakeLists.txt | 6 ------
+ 1 file changed, 6 deletions(-)
 
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 8d07772..a2396f2 100644
+index f9d72db..ed99904 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -521,13 +521,8 @@ if(NOT HAVE_ICONV)
- endif(NOT HAVE_ICONV)
+@@ -526,15 +526,9 @@ endif(NOT HAVE_ICONV)
  
  set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBS})
--CHECK_C_SOURCE_RUNS("#include \"${CMAKE_SOURCE_DIR}/iconv-detect.c\"" _correct_iconv)
+ file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}/" _binary_dir_with_separator)
+-CHECK_C_SOURCE_RUNS("#define ICONV_DETECT_BUILD_DIR \"${_binary_dir_with_separator}\"
+-		     #include \"${CMAKE_SOURCE_DIR}/iconv-detect.c\"" _correct_iconv)
+ unset(_binary_dir_with_separator)
  unset(CMAKE_REQUIRED_LIBRARIES)
  
 -if(NOT _correct_iconv)
@@ -35,5 +37,5 @@
  # Backtraces for debugging
  # ******************************
 -- 
-2.14.3
+2.21.0
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0002-CMakeLists.txt-remove-CHECK_C_SOURCE_RUNS-check.patch b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0002-CMakeLists.txt-remove-CHECK_C_SOURCE_RUNS-check.patch
index c8dc7e1..23c3a96 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0002-CMakeLists.txt-remove-CHECK_C_SOURCE_RUNS-check.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0002-CMakeLists.txt-remove-CHECK_C_SOURCE_RUNS-check.patch
@@ -1,7 +1,7 @@
-From 210b204d9edd71202454ff04013cc52b23c598e4 Mon Sep 17 00:00:00 2001
+From 20bd8946a5c73290d961df151e82033171639c0d Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
 Date: Tue, 19 Dec 2017 16:55:13 +0100
-Subject: [PATCH] CMakeLists.txt: remove CHECK_C_SOURCE_RUNS check
+Subject: [PATCH 2/7] CMakeLists.txt: remove CHECK_C_SOURCE_RUNS check
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
@@ -15,10 +15,10 @@
  1 file changed, 23 deletions(-)
 
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index a2396f2..f3b271b 100644
+index ed99904..9a2e99f 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -573,29 +573,6 @@ CHECK_C_SOURCE_COMPILES("#include <langinfo.h>
+@@ -579,29 +579,6 @@ CHECK_C_SOURCE_COMPILES("#include <langinfo.h>
  CHECK_C_SOURCE_COMPILES("#include <langinfo.h>
  			int main(void) { char *detail = nl_langinfo (_NL_ADDRESS_COUNTRY_AB2); return 0; }" HAVE__NL_ADDRESS_COUNTRY_AB2)
  
@@ -49,5 +49,5 @@
  # system mail stuff
  # ******************************
 -- 
-2.14.3
+2.21.0
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0003-contact-Replace-the-Novell-sample-contact-with-somet.patch b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0003-contact-Replace-the-Novell-sample-contact-with-somet.patch
index 3cdfa8b..c9e6f96 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0003-contact-Replace-the-Novell-sample-contact-with-somet.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0003-contact-Replace-the-Novell-sample-contact-with-somet.patch
@@ -1,14 +1,14 @@
-From 4df8bd8ae4258289663b27af1207027c7ee06340 Mon Sep 17 00:00:00 2001
+From d616eddf3a214a49900344f4455155879d3b82db Mon Sep 17 00:00:00 2001
 From: Martin Jansa <Martin.Jansa@gmail.com>
 Date: Sun, 4 Aug 2013 09:13:25 +0200
-Subject: [PATCH 1/5] contact: Replace the Novell sample contact with something
+Subject: [PATCH 3/7] contact: Replace the Novell sample contact with something
  more appropriate
 
 Upstream-Status: Inappropriate [configuration]
 Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
 ---
- src/addressbook/libedata-book/ximian-vcard.h | 179 ++++++++++++++++++-------------
- 2 files changed, 103 insertions(+), 77 deletions(-)
+ src/addressbook/libedata-book/ximian-vcard.h | 179 +++++++++++--------
+ 1 file changed, 102 insertions(+), 77 deletions(-)
 
 diff --git a/src/addressbook/libedata-book/ximian-vcard.h b/src/addressbook/libedata-book/ximian-vcard.h
 index 782d37b..5b0b250 100644
@@ -198,5 +198,5 @@
 +" gQIUKE+H+C/wMGX8Ias1s6CQAAAABJRU5ErkJggg==\n" \
  "END:VCARD"
 -- 
-1.8.3.2
+2.21.0
 
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0004-Add-native-suffix-to-exacutables-produced-and-run-du.patch b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0004-Add-native-suffix-to-exacutables-produced-and-run-du.patch
new file mode 100644
index 0000000..67023df
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0004-Add-native-suffix-to-exacutables-produced-and-run-du.patch
@@ -0,0 +1,50 @@
+From 30bd4ae3badb152c9f81c6d34014c586fa0cc825 Mon Sep 17 00:00:00 2001
+From: Piotr Tworek <tworaz@tworaz.net>
+Date: Mon, 12 Aug 2019 14:13:52 +0200
+Subject: [PATCH 4/7] Add native suffix to exacutables produced and run during
+ build process.
+
+CMake can't build tools for the host system when cross compiling. As
+result eds currently fails to build in OE due to some programs being
+cross compiled for the target and run on the host. To work around this
+limitation modify existing targets using build time generated binaries
+to invoke binaries suffixed with -native. We can inject such binaries
+into expected locations prior to invoking ninja in do_compile.
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Piotr Tworek <tworaz@tworaz.net>
+---
+ src/addressbook/libebook-contacts/CMakeLists.txt | 2 +-
+ src/camel/CMakeLists.txt                         | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/addressbook/libebook-contacts/CMakeLists.txt b/src/addressbook/libebook-contacts/CMakeLists.txt
+index e9e3259..2ae72a8 100644
+--- a/src/addressbook/libebook-contacts/CMakeLists.txt
++++ b/src/addressbook/libebook-contacts/CMakeLists.txt
+@@ -25,7 +25,7 @@ target_link_libraries(gen-western-table
+ 
+ add_custom_command(
+ 	OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/e-name-western-tables.h
+-	COMMAND ${CMAKE_CURRENT_BINARY_DIR}/gen-western-table "${CMAKE_CURRENT_SOURCE_DIR}/e-name-western-tables.h.in" >${CMAKE_CURRENT_BINARY_DIR}/e-name-western-tables.h
++	COMMAND ${CMAKE_CURRENT_BINARY_DIR}/gen-western-table-native "${CMAKE_CURRENT_SOURCE_DIR}/e-name-western-tables.h.in" >${CMAKE_CURRENT_BINARY_DIR}/e-name-western-tables.h
+ 	DEPENDS gen-western-table e-name-western-tables.h.in
+ )
+ 
+diff --git a/src/camel/CMakeLists.txt b/src/camel/CMakeLists.txt
+index be626a8..9226b2b 100644
+--- a/src/camel/CMakeLists.txt
++++ b/src/camel/CMakeLists.txt
+@@ -10,7 +10,7 @@ target_include_directories(camel-gen-tables PUBLIC
+ 
+ add_custom_command(
+ 	OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/camel-mime-tables.c
+-	COMMAND ${CMAKE_CURRENT_BINARY_DIR}/camel-gen-tables >${CMAKE_CURRENT_BINARY_DIR}/camel-mime-tables.c
++	COMMAND ${CMAKE_CURRENT_BINARY_DIR}/camel-gen-tables-native >${CMAKE_CURRENT_BINARY_DIR}/camel-mime-tables.c
+ 	DEPENDS camel-gen-tables
+ )
+ 
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0004-Use-recommended-way-to-handle-the-icu-namespace.patch b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0004-Use-recommended-way-to-handle-the-icu-namespace.patch
deleted file mode 100644
index d3b0ac6..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0004-Use-recommended-way-to-handle-the-icu-namespace.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 698a0e104dcbe4b630df848fd4af7c59f76cdc37 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 5 May 2018 17:46:52 -0700
-Subject: [PATCH] Use recommended way to handle the icu namespace
-
-Fixes build with icu >= 61
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/libedataserver/e-alphabet-index-private.cpp | 2 ++
- src/libedataserver/e-transliterator-private.cpp | 2 ++
- 2 files changed, 4 insertions(+)
-
-diff --git a/src/libedataserver/e-alphabet-index-private.cpp b/src/libedataserver/e-alphabet-index-private.cpp
-index d3e44f4..ddffd99 100644
---- a/src/libedataserver/e-alphabet-index-private.cpp
-+++ b/src/libedataserver/e-alphabet-index-private.cpp
-@@ -33,9 +33,11 @@
- 
- /* ICU headers */
- #include <unicode/alphaindex.h>
-+#include <unicode/ustring.h>
- 
- using icu::AlphabeticIndex;
- using icu::Locale;
-+using U_ICU_NAMESPACE::UnicodeString;
- 
- struct _EAlphabetIndex {
- 	AlphabeticIndex *priv;
-diff --git a/src/libedataserver/e-transliterator-private.cpp b/src/libedataserver/e-transliterator-private.cpp
-index bb15593..573446f 100644
---- a/src/libedataserver/e-transliterator-private.cpp
-+++ b/src/libedataserver/e-transliterator-private.cpp
-@@ -33,8 +33,10 @@
- 
- /* ICU headers */
- #include <unicode/translit.h>
-+#include <unicode/ustring.h>
- 
- using icu::Transliterator;
-+using U_ICU_NAMESPACE::UnicodeString;
- 
- struct _ETransliterator {
- 	Transliterator *priv;
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0005-Use-LC_MESSAGES-for-address-localization-when-LC_ADD.patch b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0005-Use-LC_MESSAGES-for-address-localization-when-LC_ADD.patch
new file mode 100644
index 0000000..55ab5a7
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0005-Use-LC_MESSAGES-for-address-localization-when-LC_ADD.patch
@@ -0,0 +1,33 @@
+From 95425206e7317e59b7ca06d7f838ad357cdd200c Mon Sep 17 00:00:00 2001
+From: Piotr Tworek <tworaz@tworaz.net>
+Date: Wed, 14 Aug 2019 00:31:54 +0200
+Subject: [PATCH 5/7] Use LC_MESSAGES for address localization when LC_ADDRESS
+ is not available.
+
+Musl does not define LC_ADDRESS unfortunately.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Piotr Tworek <tworaz@tworaz.net>
+---
+ src/addressbook/libebook-contacts/e-phone-number-private.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/addressbook/libebook-contacts/e-phone-number-private.cpp b/src/addressbook/libebook-contacts/e-phone-number-private.cpp
+index 4c5aebb..9abcebd 100644
+--- a/src/addressbook/libebook-contacts/e-phone-number-private.cpp
++++ b/src/addressbook/libebook-contacts/e-phone-number-private.cpp
+@@ -36,6 +36,10 @@
+ #include <phonenumbers/logger.h>
+ #include <phonenumbers/phonenumberutil.h>
+ 
++#ifndef LC_ADDRESS
++#define LC_ADDRESS LC_MESSAGES
++#endif
++
+ using i18n::phonenumbers::PhoneNumber;
+ using i18n::phonenumbers::PhoneNumberUtil;
+ 
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0006-Dont-add-usr-lib-to-LDFLAGS-when-linking-libphonenum.patch b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0006-Dont-add-usr-lib-to-LDFLAGS-when-linking-libphonenum.patch
new file mode 100644
index 0000000..c0c1427
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0006-Dont-add-usr-lib-to-LDFLAGS-when-linking-libphonenum.patch
@@ -0,0 +1,36 @@
+From fb9164bbca5b425f1cf1bb3cac51d06afe81938a Mon Sep 17 00:00:00 2001
+From: Piotr Tworek <tworaz@tworaz.net>
+Date: Wed, 14 Aug 2019 00:47:59 +0200
+Subject: [PATCH 6/7] Dont add /usr/lib to LDFLAGS when linking libphonenumber.
+
+This will refer to host lib dir which is not what we want.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Piotr Tworek <tworaz@tworaz.net>
+---
+ cmake/modules/FindPhonenumber.cmake | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/cmake/modules/FindPhonenumber.cmake b/cmake/modules/FindPhonenumber.cmake
+index 04d1056..70c0c41 100644
+--- a/cmake/modules/FindPhonenumber.cmake
++++ b/cmake/modules/FindPhonenumber.cmake
+@@ -37,12 +37,10 @@ string(TOUPPER "${WITH_PHONENUMBER}" optupper)
+ if(("${optupper}" STREQUAL "ON") OR ("${substr}" STREQUAL "${CMAKE_BINARY_DIR}"))
+ 	set(WITH_PHONENUMBER "ON")
+ 	set(PHONENUMBER_INCLUDE_DIRS "${INCLUDE_INSTALL_DIR}")
+-	set(PHONENUMBER_LIB_DIRS ${LIB_INSTALL_DIR})
+-	set(PHONENUMBER_LDFLAGS -L${PHONENUMBER_LIB_DIRS} ${PHONENUMBER_LDFLAGS})
++	set(PHONENUMBER_LDFLAGS  ${PHONENUMBER_LDFLAGS})
+ else(("${optupper}" STREQUAL "ON") OR ("${substr}" STREQUAL "${CMAKE_BINARY_DIR}"))
+ 	set(PHONENUMBER_INCLUDE_DIRS "${WITH_PHONENUMBER}/include")
+-	set(PHONENUMBER_LIB_DIRS ${WITH_PHONENUMBER}/lib${LIB_SUFFIX})
+-	set(PHONENUMBER_LDFLAGS -L${PHONENUMBER_LIB_DIRS} ${PHONENUMBER_LDFLAGS})
++	set(PHONENUMBER_LDFLAGS ${PHONENUMBER_LDFLAGS})
+ endif(("${optupper}" STREQUAL "ON") OR ("${substr}" STREQUAL "${CMAKE_BINARY_DIR}"))
+ 
+ unset(bindirlen)
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0007-Modify-gobject-intrispection-support-to-work-with-OE.patch b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0007-Modify-gobject-intrispection-support-to-work-with-OE.patch
new file mode 100644
index 0000000..c00082a
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server/0007-Modify-gobject-intrispection-support-to-work-with-OE.patch
@@ -0,0 +1,75 @@
+From d84f4fd68441e934b37be2a6917abad52c5d1bda Mon Sep 17 00:00:00 2001
+From: Piotr Tworek <tworaz@tworaz.net>
+Date: Fri, 16 Aug 2019 21:22:16 +0200
+Subject: [PATCH 7/7] Modify gobject-intrispection support to work with OE.
+
+1. Use tools provided by the recipe sysroot instread of host ones.
+2. Make sure all the required dirs make it into g-ir-scanner via
+   LDFLAGS.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Piotr Tworek <tworaz@tworaz.net>
+---
+ cmake/modules/GObjectIntrospection.cmake | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/cmake/modules/GObjectIntrospection.cmake b/cmake/modules/GObjectIntrospection.cmake
+index 5be5042..67c035a 100644
+--- a/cmake/modules/GObjectIntrospection.cmake
++++ b/cmake/modules/GObjectIntrospection.cmake
+@@ -20,6 +20,9 @@ if(ENABLE_INTROSPECTION)
+ 	pkg_check_variable(G_IR_SCANNER gobject-introspection-1.0 g_ir_scanner)
+ 	pkg_check_variable(G_IR_COMPILER gobject-introspection-1.0 g_ir_compiler)
+ 
++	string(CONCAT G_IR_SCANNER $ENV{PKG_CONFIG_SYSROOT_DIR} "${G_IR_SCANNER}")
++	string(CONCAT G_IR_COMPILER $ENV{PKG_CONFIG_SYSROOT_DIR} "${G_IR_COMPILER}")
++
+ 	if(NOT G_IR_SCANNER)
+ 		message(FATAL_ERROR "g-ir-scanner not provided by gobject-introspection-1.0, you can disable GObject introspection by -DENABLE_INTROSPECTION=OFF")
+ 	endif(NOT G_IR_SCANNER)
+@@ -116,7 +119,7 @@ macro(gir_add_introspection gir)
+ 		file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${_gir_name}_files "${_gir_files}")
+ 
+ 		add_custom_command(
+-			COMMAND ${CMAKE_COMMAND} -E env "CC='${CMAKE_C_COMPILER}'" LDFLAGS=
++			COMMAND ${CMAKE_COMMAND} -E env "CC='${CMAKE_C_COMPILER}'" LDFLAGS=${INTROSPECTION_SCANNER_LDFLAGS}
+ 				${INTROSPECTION_SCANNER_ENV}
+ 				${G_IR_SCANNER}
+ 				${INTROSPECTION_SCANNER_ARGS}
+@@ -186,6 +189,7 @@ macro(gir_add_introspection_simple gir_library pkg_export_prefix gir_library_ver
+ 	unset(INTROSPECTION_SCANNER_ARGS)
+ 	unset(INTROSPECTION_SCANNER_ENV)
+ 	unset(INTROSPECTION_COMPILER_ARGS)
++	unset(INTROSPECTION_SCANNER_LDFLAGS)
+ 
+ 	set(${gir_vars_prefix} ${gir_library})
+ 	set(${gir_vars_prefix}_SCANNERFLAGS "--warn-all")
+@@ -223,12 +227,12 @@ macro(gir_add_introspection_simple gir_library pkg_export_prefix gir_library_ver
+ 		--add-include-path=${CMAKE_CURRENT_SOURCE_DIR}
+ 		--library-path=${CMAKE_BINARY_DIR}
+ 		--library-path=${CMAKE_BINARY_DIR}/src
++		--library-path=${CMAKE_BINARY_DIR}/src/private
+ 		--library-path=${CMAKE_CURRENT_BINARY_DIR}
+ 		${_gir_extra_libdirs}
+ 		${_gir_identifies_prefixes}
+ 		${_gir_deps}
+ 		--add-include-path=${SHARE_INSTALL_PREFIX}/gir-1.0
+-		--library-path=${LIB_INSTALL_DIR}
+ 		${_extra_library_path}
+ 		--pkg-export ${pkg_export_prefix}-${gir_library_version}
+ 		--c-include=${c_include}
+@@ -279,6 +283,10 @@ macro(gir_add_introspection_simple gir_library pkg_export_prefix gir_library_ver
+ 		)
+ 	endif(UNIX)
+ 
++	_gir_list_prefix(_gir_scanner_ldflags ${gir_extra_libdirs_var} "-Wl,-rpath-link=")
++	string(REPLACE ";" " " _gir_scanner_ldflags "${_gir_scanner_ldflags}")
++	set(INTROSPECTION_SCANNER_LDFLAGS "${_gir_scanner_ldflags}")
++
+ 	set(INTROSPECTION_SCANNER_ENV
+ 		${_loader_library_path_var}="${_extra_loader_library_path_native}"
+ 	)
+-- 
+2.21.0
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server_3.26.6.bb b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server_3.26.6.bb
deleted file mode 100644
index 1949fc7..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server_3.26.6.bb
+++ /dev/null
@@ -1,132 +0,0 @@
-SUMMARY = "Evolution database backend server"
-HOMEPAGE = "http://www.gnome.org/projects/evolution/"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-
-LICENSE = "LGPLv2 & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6a6e689d19255cf0557f3fe7d7068212 \
-                    file://src/camel/camel.h;endline=24;md5=342fc5e9357254bc30c24e43ae47d9a1 \
-                    file://src/libedataserver/e-data-server-util.h;endline=20;md5=8f21a9c80ea82a4fb80b5f959f672543 \
-                    file://src/calendar/libecal/e-cal.h;endline=24;md5=e699ec3866f73f129f7a4ffffdcfc196"
-
-DEPENDS = " \
-    intltool-native gperf-native \
-    glib-2.0 gtk+3 gconf libgnome-keyring libgdata \
-    dbus db virtual/libiconv zlib libsoup-2.4 libical nss libsecret \
-"
-
-inherit distro_features_check gnomebase cmake gtk-doc gettext gobject-introspection perlnative pythonnative
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@gnome_verdir("${PV}")}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive \
-           file://0001-CMakeLists.txt-Remove-TRY_RUN-for-iconv.patch \
-           file://0002-CMakeLists.txt-remove-CHECK_C_SOURCE_RUNS-check.patch \
-           file://0003-contact-Replace-the-Novell-sample-contact-with-somet.patch \
-           file://iconv-detect.h \
-           file://0004-Use-recommended-way-to-handle-the-icu-namespace.patch \
-           "
-SRC_URI[archive.md5sum] = "ae7bbf543b2c3ff79af27e0edea5d472"
-SRC_URI[archive.sha256sum] = "e43aa1847ddc02965f560261ef88d18fb8704eddaa55555bf96b884a33e510ec"
-
-LKSTRFTIME = "HAVE_LKSTRFTIME=ON"
-LKSTRFTIME_libc-musl = "HAVE_LKSTRFTIME=OFF"
-
-EXTRA_OECMAKE = " \
-    -DWITH_KRB5=OFF \
-    -DENABLE_GOA=OFF \
-    -DENABLE_UOA=OFF \
-    -DENABLE_GOOGLE_AUTH=OFF \
-    -DENABLE_WEATHER=OFF \
-    -D${LKSTRFTIME} \
-    -DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
-"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[openldap] = "-DWITH_OPENLDAP=ON,-DWITH_OPENLDAP=OFF,openldap"
-
-EXTRA_OECONF = "--with-libdb=${STAGING_DIR_HOST}${prefix} \
-                --disable-nntp --disable-gtk-doc"
-
-# -ldb needs this on some platforms
-LDFLAGS += "-lpthread -lgmodule-2.0 -lgthread-2.0"
-
-do_configure_append () {
-    cp ${WORKDIR}/iconv-detect.h ${S}/src
-
-    # fix native perl shebang
-    sed -i 's:${STAGING_BINDIR_NATIVE}/perl-native:${bindir}:' ${B}/src/tools/addressbook-export/csv2vcard
-}
-
-do_compile_prepend() {
-    export GIR_EXTRA_LIBS_PATH="${B}/camel/.libs:${B}/libedataserver/.libs"
-}
-
-
-PACKAGES =+ "libcamel libcamel-dev libebook libebook-dev libecal libecal-dev \
-             libedata-book libedata-book-dev libedata-cal libedata-cal-dev \
-             libedataserver libedataserver-dev \
-             libedataserverui libedataserverui-dev"
-
-FILES_${PN} =+ "${systemd_user_unitdir} \
-                ${datadir}/dbus-1 \
-                ${datadir}/evolution-data-server-*/ui/"
-RDEPENDS_${PN} += "perl"
-
-FILES_${PN}-dev =+ "${libdir}/pkgconfig/evolution-data-server-*.pc"
-FILES_${PN}-dbg =+ "${libdir}/evolution-data-server*/camel-providers/.debug \
-                    ${libdir}/evolution-data-server*/calendar-backends/.debug \
-                    ${libdir}/evolution-data-server*/addressbook-backends/.debug \
-                    ${libdir}/evolution-data-server*/extensions/.debug/"
-
-RRECOMMENDS_${PN}-dev += "libecal-dev libebook-dev"
-
-FILES_libcamel = "${libdir}/libcamel-*.so.* \
-                  ${libdir}/libcamel-provider-*.so.* \
-                  ${libdir}/evolution-data-server*/camel-providers/*.so \
-                  ${libdir}/evolution-data-server*/camel-providers/*.urls"
-FILES_libcamel-dev = "${libdir}/libcamel-*.so ${libdir}/libcamel-provider-*.so \
-                      ${libdir}/pkgconfig/camel*pc \
-                      ${libdir}/evolution-data-server*/camel-providers/*.la \
-                      ${includedir}/evolution-data-server*/camel"
-
-FILES_libebook = "${libdir}/libebook-*.so.*"
-FILES_libebook-dev = "${libdir}/libebook-1.2.so \
-                      ${libdir}/pkgconfig/libebook-*.pc \
-                      ${includedir}/evolution-data-server*/libebook/*.h"
-RRECOMMENDS_libebook = "libedata-book"
-
-FILES_libecal = "${libdir}/libecal-*.so.* \
-                 ${datadir}/evolution-data-server-1.4/zoneinfo"
-FILES_libecal-dev = "${libdir}/libecal-*.so ${libdir}/pkgconfig/libecal-*.pc \
-                     ${includedir}/evolution-data-server*/libecal/*.h \
-                     ${includedir}/evolution-data-server*/libical/*.h"
-RRECOMMENDS_libecal = "libedata-cal tzdata"
-
-FILES_libedata-book = "${libexecdir}/e-addressbook-factory \
-                       ${datadir}/dbus-1/services/*.AddressBook.service \
-                       ${libdir}/libedata-book-*.so.* \
-                       ${libdir}/evolution-data-server-*/extensions/libebook*.so \
-                       ${datadir}/evolution-data-server-1.4/weather/Locations.xml"
-FILES_libedata-book-dev = "${libdir}/libedata-book-*.so \
-                           ${libdir}/pkgconfig/libedata-book-*.pc \
-                           ${libdir}/evolution-data-server-*/extensions/libebook*.la \
-                           ${includedir}/evolution-data-server-*/libedata-book"
-
-FILES_libedata-cal = "${libexecdir}/e-calendar-factory \
-                      ${datadir}/dbus-1/services/*.Calendar.service \
-                      ${libdir}/libedata-cal-*.so.* \
-                      ${libdir}/evolution-data-server-*/extensions/libecal*.so"
-FILES_libedata-cal-dev = "${libdir}/libedata-cal-*.so \
-                          ${libdir}/pkgconfig/libedata-cal-*.pc \
-                          ${includedir}/evolution-data-server-*/libedata-cal \
-                          ${libdir}/evolution-data-server-*/extensions/libecal*.la"
-
-FILES_libedataserver = "${libdir}/libedataserver-*.so.*"
-FILES_libedataserver-dev = "${libdir}/libedataserver-*.so \
-                            ${libdir}/pkgconfig/libedataserver-*.pc \
-                            ${includedir}/evolution-data-server-*/libedataserver/*.h"
-
-FILES_libedataserverui = "${libdir}/libedataserverui-*.so.* ${datadir}/evolution-data-server-1.4/glade/*.glade"
-FILES_libedataserverui-dev = "${libdir}/libedataserverui-*.so \
-                              ${libdir}/pkgconfig/libedataserverui-*.pc \
-                              ${includedir}/evolution-data-server-*/libedataserverui/*.h"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server_3.32.4.bb b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server_3.32.4.bb
new file mode 100644
index 0000000..429dd53
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/eds/evolution-data-server_3.32.4.bb
@@ -0,0 +1,155 @@
+SUMMARY = "Evolution database backend server"
+HOMEPAGE = "http://www.gnome.org/projects/evolution/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "LGPLv2 & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6a6e689d19255cf0557f3fe7d7068212 \
+                    file://src/camel/camel.h;endline=24;md5=342fc5e9357254bc30c24e43ae47d9a1 \
+                    file://src/libedataserver/e-data-server-util.h;endline=20;md5=8f21a9c80ea82a4fb80b5f959f672543 \
+                    file://src/calendar/libecal/e-cal.h;endline=24;md5=e699ec3866f73f129f7a4ffffdcfc196"
+
+DEPENDS = " \
+    intltool-native gperf-native glib-2.0-native \
+    glib-2.0 gtk+3 libgnome-keyring libgdata libcanberra icu \
+    dbus db virtual/libiconv zlib libsoup-2.4 libical nss libsecret \
+"
+
+inherit gnomebase cmake gtk-doc gettext gobject-introspection perlnative upstream-version-is-even vala
+
+SRC_URI += "file://0001-CMakeLists.txt-Remove-TRY_RUN-for-iconv.patch \
+            file://0002-CMakeLists.txt-remove-CHECK_C_SOURCE_RUNS-check.patch \
+            file://0003-contact-Replace-the-Novell-sample-contact-with-somet.patch \
+            file://0004-Add-native-suffix-to-exacutables-produced-and-run-du.patch \
+            file://0005-Use-LC_MESSAGES-for-address-localization-when-LC_ADD.patch \
+            file://0006-Dont-add-usr-lib-to-LDFLAGS-when-linking-libphonenum.patch \
+            file://0007-Modify-gobject-intrispection-support-to-work-with-OE.patch \
+            file://iconv-detect.h \
+           "
+SRC_URI[archive.md5sum] = "57820f3f88fc554e1a58665a52e12c05"
+SRC_URI[archive.sha256sum] = "83f67cb4b680e892b22b51bcde64c788b7ac63e92a99de401fb347e3794f4c7f"
+
+LKSTRFTIME = "HAVE_LKSTRFTIME=ON"
+LKSTRFTIME_libc-musl = "HAVE_LKSTRFTIME=OFF"
+
+EXTRA_OECMAKE = " \
+    -D${LKSTRFTIME} \
+    -DSYSCONF_INSTALL_DIR=${sysconfdir} \
+    -DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
+"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'introspection', '', d)}"
+PACKAGECONFIG[openldap] = "-DWITH_OPENLDAP=ON,-DWITH_OPENLDAP=OFF,openldap"
+PACKAGECONFIG[oauth2] = "-DENABLE_OAUTH2=ON,-DENABLE_OAUTH2=OFF,json-glib webkitgtk"
+PACKAGECONFIG[mitkrb5] = "-DWITH_KRB5=ON,-DWITH_KRB5=OFF,krb5"
+PACKAGECONFIG[goa] = "-DENABLE_GOA=ON,-DENABLE_GOA=OFF,gnome-online-accounts"
+PACKAGECONFIG[weather] = "-DENABLE_WEATHER=ON,-DENABLE_WEATHER=OFF,libgweather"
+PACKAGECONFIG[phonenumber] = "-DWITH_PHONENUMBER=ON,-DWITH_PHONENUMBER=OFF,libphonenumber"
+PACKAGECONFIG[introspection] = "-DENABLE_INTROSPECTION=ON,-DENABLE_INTROSPECTION=OFF"
+PACKAGECONFIG[vala] = "-DENABLE_VALA_BINDINGS=ON -DVAPIGEN=${STAGING_BINDIR_NATIVE}/vapigen,-DENABLE_VALA_BINDINGS=OFF"
+
+# -ldb needs this on some platforms
+LDFLAGS += "-lpthread -lgmodule-2.0 -lgthread-2.0"
+
+do_configure_append () {
+    cp ${WORKDIR}/iconv-detect.h ${S}/src
+
+    # fix native perl shebang
+    sed -i 's:${STAGING_BINDIR_NATIVE}/perl-native:${bindir}:' ${B}/src/tools/addressbook-export/csv2vcard
+}
+
+do_compile_prepend() {
+    # CMake does not support building native binaries when cross compiling. As result
+    # it always cross compiles them for the target and then aborts when they fail to run.
+    # To work around this manually build required tools and patch cmake targets to use
+    # those native binaries we built here.
+    ${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS} -I${B} ${S}/src/camel/camel-gen-tables.c \
+        -o ${B}/src/camel/camel-gen-tables-native
+    ${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS} -I${B} $(pkg-config-native --cflags glib-2.0) \
+        ${S}/src/addressbook/libebook-contacts/gen-western-table.c \
+        -o ${B}/src/addressbook/libebook-contacts/gen-western-table-native \
+        $(pkg-config-native --libs glib-2.0)
+}
+
+
+PACKAGES =+ "libebook-contacts libebook-contacts-dev \
+             libcamel libcamel-dev libebook libebook-dev libecal libecal-dev \
+             libedata-book libedata-book-dev libedata-cal libedata-cal-dev \
+             libedataserver libedataserver-dev \
+             libedataserverui libedataserverui-dev"
+
+FILES_${PN} =+ "${systemd_user_unitdir} \
+                ${datadir}/dbus-1 \
+                ${datadir}/evolution-data-server-*/ui/"
+RDEPENDS_${PN} += "perl"
+
+FILES_${PN}-dev =+ "${libdir}/pkgconfig/evolution-data-server-*.pc"
+FILES_${PN}-dbg =+ "${libdir}/evolution-data-server*/camel-providers/.debug \
+                    ${libdir}/evolution-data-server*/calendar-backends/.debug \
+                    ${libdir}/evolution-data-server*/addressbook-backends/.debug \
+                    ${libdir}/evolution-data-server*/extensions/.debug/"
+
+RRECOMMENDS_${PN}-dev += "libecal-dev libebook-dev"
+
+FILES_libcamel = "${libdir}/libcamel-*.so.* \
+                  ${libdir}/libcamel-provider-*.so.* \
+                  ${libdir}/girepository-*/Camel-*.typelib \
+                  ${libdir}/evolution-data-server*/camel-providers/*.so \
+                  ${libdir}/evolution-data-server*/camel-providers/*.urls"
+FILES_libcamel-dev = "${libdir}/libcamel-*.so ${libdir}/libcamel-provider-*.so \
+                      ${libdir}/pkgconfig/camel*pc \
+                      ${includedir}/evolution-data-server*/camel \
+                      ${datadir}/vala/vapi/camel-* \
+                      ${datadir}/gir-*/Camel-*.gir"
+
+FILES_libebook = "${libdir}/libebook-*.so.* \
+                  ${libdir}/girepository-*/EBook-*.typelib"
+FILES_libebook-dev = "${libdir}/libebook-*.so \
+                      ${libdir}/pkgconfig/libebook-*.pc \
+                      ${datadir}/gir-*/EBook-*.gir \
+                      ${datadir}/vala/vapi/libebook-*.* \
+                      ${includedir}/evolution-data-server*/libebook/*.h"
+RRECOMMENDS_libebook = "libedata-book"
+
+FILES_libebook-contacts = "${libdir}/libebook-contacts-*.so.* \
+                           ${libdir}/girepository-*/EBookContacts-*.typelib"
+FILES_libebook-contacts-dev = "${libdir}/libebook-contacts-*.so \
+                               ${libdir}/pkgconfig/libebook-contacts-*.pc \
+                               ${datadir}/gir-*/EBookContacts-*.gir \
+                               ${datadir}/vala/vapi/libebook-contacts-* \
+                               ${includedir}/evolution-data-server*/libebook-contacts/*.h"
+
+FILES_libecal = "${libdir}/libecal-*.so.*"
+FILES_libecal-dev = "${libdir}/libecal-*.so ${libdir}/pkgconfig/libecal-*.pc \
+                     ${includedir}/evolution-data-server*/libecal/*.h \
+                     ${includedir}/evolution-data-server*/libical/*.h"
+RRECOMMENDS_libecal = "libedata-cal tzdata"
+
+FILES_libedata-book = "${libexecdir}/e-addressbook-factory \
+                       ${datadir}/dbus-1/services/*.AddressBook.service \
+                       ${libdir}/libedata-book-*.so.* \
+                       ${libdir}/evolution-data-server-*/extensions/libebook*.so"
+FILES_libedata-book-dev = "${libdir}/libedata-book-*.so \
+                           ${libdir}/pkgconfig/libedata-book-*.pc \
+                           ${includedir}/evolution-data-server-*/libedata-book"
+
+FILES_libedata-cal = "${libexecdir}/e-calendar-factory \
+                      ${datadir}/dbus-1/services/*.Calendar.service \
+                      ${libdir}/libedata-cal-*.so.* \
+                      ${libdir}/evolution-data-server-*/extensions/libecal*.so"
+FILES_libedata-cal-dev = "${libdir}/libedata-cal-*.so \
+                          ${libdir}/pkgconfig/libedata-cal-*.pc \
+                          ${includedir}/evolution-data-server-*/libedata-cal"
+
+FILES_libedataserver = "${libdir}/libedataserver-*.so.* \
+                        ${libdir}/girepository-*/EDataServer-*.typelib"
+FILES_libedataserver-dev = "${libdir}/libedataserver-*.so \
+                            ${libdir}/pkgconfig/libedataserver-*.pc \
+                            ${datadir}/vala/vapi/libedataserver-* \
+                            ${includedir}/evolution-data-server-*/libedataserver/*.h"
+
+FILES_libedataserverui = "${libdir}/libedataserverui-*.so.*"
+FILES_libedataserverui-dev = "${libdir}/libedataserverui-*.so \
+                              ${libdir}/pkgconfig/libedataserverui-*.pc \
+                              ${datadir}/gir-*/EDataServerUI-*.gir \
+                              ${datadir}/vala/vapi/libedataserverui-* \
+                              ${includedir}/evolution-data-server-*/libedataserverui/*.h"
diff --git a/meta-openembedded/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb b/meta-openembedded/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb
index 2573eb4..9a686f3 100644
--- a/meta-openembedded/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb
+++ b/meta-openembedded/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb
@@ -1,7 +1,5 @@
 SUMMARY = "Initramfs image for kexecboot kernel"
 DESCRIPTION = "This image provides kexecboot (linux as bootloader) and helpers."
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
 
 inherit image
 
diff --git a/meta-openembedded/meta-initramfs/recipes-devtools/grubby/grubby_git.bb b/meta-openembedded/meta-initramfs/recipes-devtools/grubby/grubby_git.bb
index 6d53f48..7248147 100644
--- a/meta-openembedded/meta-initramfs/recipes-devtools/grubby/grubby_git.bb
+++ b/meta-openembedded/meta-initramfs/recipes-devtools/grubby/grubby_git.bb
@@ -25,7 +25,7 @@
 
 inherit autotools-brokensep ptest
 
-EXTRA_OEMAKE = "-e 'CC=${CC}' 'LDFLAGS=${LDFLAGS}' LIBS='${LIBS}'"
+EXTRA_OEMAKE = "-e 'CC=${CC}' 'LDFLAGS=${LDFLAGS}' LIBS='${LIBS}' 'PREFIX'=${@bb.utils.contains('DISTRO_FEATURES','usrmerge','/usr','',d)}"
 
 LIBS_libc-musl = "-lexecinfo"
 LIBS ?= ""
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/mimic/mimic_1.2.0.2.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/mimic/mimic_1.2.0.2.bb
index cb4b1b3..b313b11 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/mimic/mimic_1.2.0.2.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/mimic/mimic_1.2.0.2.bb
@@ -25,3 +25,5 @@
 inherit autotools
 
 S = "${WORKDIR}/git"
+
+CPPFLAGS_append = " -Wno-error"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.33.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.34.bb
similarity index 96%
rename from meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.33.bb
rename to meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.34.bb
index d4ebe17..0c99c7c 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.33.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicpd/ncmpc_0.34.bb
@@ -33,5 +33,5 @@
 SRC_URI = " \
     git://github.com/MusicPlayerDaemon/ncmpc \
 "
-SRCREV = "8e98f89ff07b140e6357dab2a9a9f6432ae0e521"
+SRCREV = "79cf9905355f25bc5cc6d5a05d2846d75342f554"
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc.inc b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc.inc
index 5c38be3..7308465 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc.inc
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc.inc
@@ -51,7 +51,7 @@
 PACKAGECONFIG[mad] = "--enable-mad,--disable-mad,libmad"
 PACKAGECONFIG[a52] = "--enable-a52,--disable-a52,liba52"
 PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
-PACKAGECONFIG[live555] = "--enable-live555,--disable-live555,live555"
+PACKAGECONFIG[live555] = "--enable-live555 LIVE555_PREFIX=${STAGING_DIR_HOST}${prefix},--disable-live555,live555"
 PACKAGECONFIG[libass] = "--enable-libass,--disable-libass,libass"
 PACKAGECONFIG[postproc] = "--enable-postproc,--disable-postproc,libpostproc"
 PACKAGECONFIG[libva] = "--enable-libva,--disable-libva,libva"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/rdist/rdist_6.1.5.bb b/meta-openembedded/meta-networking/recipes-connectivity/rdist/rdist_6.1.5.bb
index 4fe6893..3a27c2c 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/rdist/rdist_6.1.5.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/rdist/rdist_6.1.5.bb
@@ -40,4 +40,4 @@
 EXTRA_OEMAKE = "BIN_GROUP=root MAN_GROUP=root RDIST_MODE=755 RDISTD_MODE=755 MAN_MODE=644"
 
 # http://errors.yoctoproject.org/Errors/Details/186972/
-EXCLUDE_FROM_WORLD_libc-musl = "1"
+COMPATIBLE_HOST_libc-musl = 'null'
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.6.bb b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.7.bb
similarity index 98%
rename from meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.6.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.7.bb
index 7c77a16..d13a6b4 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.6.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.10.7.bb
@@ -32,8 +32,8 @@
            file://0001-samba-fix-musl-lib-without-innetgr.patch \
           "
 
-SRC_URI[md5sum] = "9782cac8ef06049942be5f5c93b954be"
-SRC_URI[sha256sum] = "9efbeb52db1203dc779b118f1c48c161e569f7a6af5101e745497ee6296eef42"
+SRC_URI[md5sum] = "05472d0dd943b3ccbc3be5032a9eb563"
+SRC_URI[sha256sum] = "34f30494b6b63700f54be22be636e8a6e0430577166a76a017075e11c02a1ebb"
 
 UPSTREAM_CHECK_REGEX = "samba\-(?P<pver>4\.10(\.\d+)+).tar.gz"
 
diff --git a/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.19.07.bb b/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.19.07.bb
index e466cc2..3df6824 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.19.07.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/opensaf/opensaf_5.19.07.bb
@@ -69,4 +69,4 @@
 RDEPENDS_${PN} += "bash python"
 
 # http://errors.yoctoproject.org/Errors/Details/186970/
-EXCLUDE_FROM_WORLD_libc-musl = "1"
+COMPATIBLE_HOST_libc-musl = 'null'
diff --git a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.1.bb b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.2.bb
similarity index 85%
rename from meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.1.bb
rename to meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.2.bb
index 9d0da33..98e8050 100644
--- a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.1.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_0.9.2.bb
@@ -8,8 +8,8 @@
 UPSTREAM_CHECK_URI = "https://www.netfilter.org/projects/nftables/files/"
 
 SRC_URI = "http://www.netfilter.org/projects/nftables/files/${BP}.tar.bz2"
-SRC_URI[md5sum] = "e2facbcad6c5d9bd87a0bf5081a31522"
-SRC_URI[sha256sum] = "ead3bb68ed540bfbb87a96f2b69c3d65ab0c2a0c3f6e739a395c09377d1b4fce"
+SRC_URI[md5sum] = "dfe130724d7c998eb26b56447e932899"
+SRC_URI[sha256sum] = "5cb66180143e6bfc774f4eb316206d40ac1cb6df269a90882404cbf7165513f5"
 
 inherit autotools manpages pkgconfig
 
diff --git a/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh_0.17.bb b/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh_0.17.bb
index 6f203c5..a6716d0 100644
--- a/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh_0.17.bb
+++ b/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh_0.17.bb
@@ -103,6 +103,3 @@
 
 RDEPENDS_${PN}-server = "xinetd"
 RDEPENDS_${PN}-server += "tcp-wrappers"
-
-# http://errors.yoctoproject.org/Errors/Details/186963/
-EXCLUDE_FROM_WORLD_libc-musl = "1"
diff --git a/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers_0.17.bb b/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers_0.17.bb
index 296ebca..716794f 100644
--- a/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers_0.17.bb
+++ b/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers_0.17.bb
@@ -68,4 +68,4 @@
 RDEPENDS_${PN}-server += "tcp-wrappers xinetd rpcbind"
 
 # http://errors.yoctoproject.org/Errors/Details/186962/
-EXCLUDE_FROM_WORLD_libc-musl = "1"
+COMPATIBLE_HOST_libc-musl = 'null'
diff --git a/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/netkit-telnet_0.17.bb b/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/netkit-telnet_0.17.bb
index 4b035af..a8d98c9 100644
--- a/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/netkit-telnet_0.17.bb
+++ b/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/netkit-telnet_0.17.bb
@@ -62,5 +62,5 @@
 FILES_${PN} += "${sbindir}/in.* ${libdir}/* ${sysconfdir}/xinetd.d/*"
 
 # http://errors.yoctoproject.org/Errors/Details/186954/
-EXCLUDE_FROM_WORLD_libc-musl = "1"
+COMPATIBLE_HOST_libc-musl = 'null'
 RCONFLICTS_${PN} = "inetutils-telnetd"
diff --git a/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq/0001-dnsmasq-fix-build-against-5.2-headers.patch b/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq/0001-dnsmasq-fix-build-against-5.2-headers.patch
new file mode 100644
index 0000000..844a709
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq/0001-dnsmasq-fix-build-against-5.2-headers.patch
@@ -0,0 +1,31 @@
+From 52f4b58c14a2788ca08b7d8884d586724d86fc66 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Mon, 19 Aug 2019 14:46:02 +0000
+Subject: [PATCH] dnsmasq: fix build against 5.2 headers
+
+Upstream linux y2038 work has moved some definitions SIOCGSTAMP is
+defined in linux/sockios.h, not asm/sockios.h now. So we need to
+add that include to fix the build.
+
+Upstream-status: backport of http://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=commit;h=3052ce208acf602f0163166dcefb7330d537cedb
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ a/src/dnsmasq.h                   | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/build/tmp/work/core2-64-poky-linux/dnsmasq/2.80-r0/dnsmasq-2.80/src/dnsmasq.h b/build/tmp/work/core2-64-poky-linux/dnsmasq/2.80-r0/dnsmasq-2.80/src/dnsmasq.h
+index f53e9a5be6..d9225ea473 100644
+--- a/src/dnsmasq.h
++++ b/src/dnsmasq.h
+@@ -138,6 +138,7 @@ typedef unsigned long long u64;
+ #endif
+ 
+ #if defined(HAVE_LINUX_NETWORK)
++#include <linux/sockios.h>
+ #include <linux/capability.h>
+ /* There doesn't seem to be a universally-available 
+    userspace header for these. */
+-- 
+2.19.1
+
diff --git a/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.80.bb b/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.80.bb
index fdbdefb..6f3d5da 100644
--- a/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.80.bb
+++ b/meta-openembedded/meta-networking/recipes-support/dnsmasq/dnsmasq_2.80.bb
@@ -4,5 +4,6 @@
 SRC_URI[dnsmasq-2.80.sha256sum] = "9e4a58f816ce0033ce383c549b7d4058ad9b823968d352d2b76614f83ea39adc"
 SRC_URI += "\
     file://lua.patch \
+    file://0001-dnsmasq-fix-build-against-5.2-headers.patch \
 "
 
diff --git a/meta-openembedded/meta-networking/recipes-support/drbd/drbd_9.0.18-1.bb b/meta-openembedded/meta-networking/recipes-support/drbd/drbd_9.0.19-1.bb
similarity index 83%
rename from meta-openembedded/meta-networking/recipes-support/drbd/drbd_9.0.18-1.bb
rename to meta-openembedded/meta-networking/recipes-support/drbd/drbd_9.0.19-1.bb
index 6fb621a..6683781 100644
--- a/meta-openembedded/meta-networking/recipes-support/drbd/drbd_9.0.18-1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/drbd/drbd_9.0.19-1.bb
@@ -11,9 +11,8 @@
 SRC_URI = "http://www.linbit.com/downloads/drbd/9.0/drbd-${PV}.tar.gz \
            file://check_existence_of_modules_before_installing.patch \
            "
-
-SRC_URI[md5sum] = "f2e6eaa92861252af0b564f0100f1859"
-SRC_URI[sha256sum] = "d6b4188ed01d8555c78b04b5e31532d5990ca98bf063230f3e949ee8a7338d58"
+SRC_URI[md5sum] = "bd1202eaaf81641752d0c9b003b10f6c"
+SRC_URI[sha256sum] = "5b3d2bcb99542940e40af903dea783cf04524e9f41cc530e210d2c15ef84fa58"
 
 inherit module
 
diff --git a/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric/ifmetric.8_typo.patch b/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric/ifmetric.8_typo.patch
new file mode 100644
index 0000000..2469100
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric/ifmetric.8_typo.patch
@@ -0,0 +1,15 @@
+Description: Correct typo: s/ommited/omitted/
+Author: Michael Shuler <michael@pbandjelly.org>
+Index: ifmetric/man/ifmetric.8
+===================================================================
+--- ifmetric.orig/man/ifmetric.8
++++ ifmetric/man/ifmetric.8
+@@ -9,7 +9,7 @@ ifmetric is a Linux tool for setting the
+ 
+ ifmetric uses the Linux NETLINK interface to manipulate the routes. Because of that it is compatible with routes created with the new iproute2 utility.
+ .SH OPTIONS
+-You should specify the interface name as first parameter. The second parameter should be the new metric. If ommited the metric 0 (highest) is used.
++You should specify the interface name as first parameter. The second parameter should be the new metric. If omitted the metric 0 (highest) is used.
+ .SH RETURN VALUES
+ \fI0\f1 Success
+ 
diff --git a/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric/ifmetric.c_netlink-invalid-arg.patch b/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric/ifmetric.c_netlink-invalid-arg.patch
new file mode 100644
index 0000000..374135d
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric/ifmetric.c_netlink-invalid-arg.patch
@@ -0,0 +1,16 @@
+Description: Fix "NETLINK: Error: Invalid argument" for links that are down, in kernel 4.4+
+Author: Jim Paris <jim@jtan.com>
+Bug-Debian: http://bugs.debian.org/864889
+Index: ifmetric/src/nlrequest.c
+===================================================================
+--- a/src/ifmetric.c
++++ b/src/ifmetric.c
+@@ -97,6 +97,8 @@
+     l = NLMSG_PAYLOAD(n, sizeof(struct rtmsg));
+     a = RTM_RTA(r);
+     
++    r->rtm_flags &= ~(RTNH_F_DEAD | RTNH_F_LINKDOWN);
++
+     while(RTA_OK(a, l)) {
+         switch(a->rta_type) {
+             case RTA_PRIORITY:
diff --git a/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric/ifmetric.c_typo.patch b/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric/ifmetric.c_typo.patch
new file mode 100644
index 0000000..992f7d2
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric/ifmetric.c_typo.patch
@@ -0,0 +1,24 @@
+Description: Correct spelling-error-in-binary s/Recieved/Received/
+Author: Michael Shuler <michael@pbandjelly.org>
+Index: ifmetric/src/ifmetric.c
+===================================================================
+--- ifmetric.orig/src/ifmetric.c	2013-09-04 18:37:59.000000000 -0500
++++ ifmetric/src/ifmetric.c	2013-09-04 19:08:38.539750778 -0500
+@@ -38,7 +38,7 @@
+             case RTA_OIF:
+ 
+                 if (RTA_PAYLOAD(a) != sizeof(int)) {
+-                    fprintf(stderr, "NETLINK: Recieved corrupt RTA_OIF payload.\n");
++                    fprintf(stderr, "NETLINK: Received corrupt RTA_OIF payload.\n");
+                     return -1;
+                 }
+                 
+@@ -102,7 +102,7 @@
+             case RTA_PRIORITY:
+ 
+                 if (RTA_PAYLOAD(a) != sizeof(int)) {
+-                    fprintf(stderr, "NETLINK: Recieved corrupt RTA_PRIORITY payload.\n");
++                    fprintf(stderr, "NETLINK: Received corrupt RTA_PRIORITY payload.\n");
+                     return NULL;
+                 }
+ 
diff --git a/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric/nlrequest.c_packet-too-small_fix.patch b/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric/nlrequest.c_packet-too-small_fix.patch
new file mode 100644
index 0000000..15b3103
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric/nlrequest.c_packet-too-small_fix.patch
@@ -0,0 +1,16 @@
+Description: Fix "NETLINK: Packet too small or truncated!" error.
+Author: Benedek László <benedekl@gmail.com>
+Bug-Debian: http://bugs.debian.org/514197
+Index: ifmetric/src/nlrequest.c
+===================================================================
+--- ifmetric.orig/src/nlrequest.c	2013-09-05 14:10:42.000000000 -0500
++++ ifmetric/src/nlrequest.c	2013-09-05 14:19:06.573420862 -0500
+@@ -44,7 +44,7 @@
+ 
+     for (;;) {
+         int bytes;
+-        char replybuf[2048];
++        char replybuf[4096];
+         struct nlmsghdr *p = (struct nlmsghdr *) replybuf;
+         
+         if ((bytes = recv(s, &replybuf, sizeof(replybuf), 0)) < 0) {
diff --git a/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric_0.3.bb b/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric_0.3.bb
new file mode 100644
index 0000000..4ee7c42
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/ifmetric/ifmetric_0.3.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Set routing metrics for a network interface"
+
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI = "http://0pointer.de/lennart/projects/ifmetric/ifmetric-${PV}.tar.gz \
+	   file://ifmetric.8_typo.patch \
+	   file://ifmetric.c_netlink-invalid-arg.patch \
+	   file://ifmetric.c_typo.patch \
+	   file://nlrequest.c_packet-too-small_fix.patch"
+SRC_URI[md5sum] = "74aa3f5ee8aca16a87e124ddcc64fa36"
+SRC_URI[sha256sum] = "0fa8510a4e34e555f136f9df81d26618313f2d69a4880c0fb5967f19502f1aec"
+
+inherit autotools
+
+# disable lynx support for now
+EXTRA_OECONF = "--disable-lynx"
diff --git a/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.1.bb b/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.2.bb
similarity index 92%
rename from meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.1.bb
rename to meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.2.bb
index d25c3fa..4973e80 100644
--- a/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.2.bb
@@ -11,8 +11,8 @@
            file://0001-waf-add-support-of-cross_compile.patch \
 "
 
-SRC_URI[md5sum] = "d1d0a5d43614add17d1e41bbdb209446"
-SRC_URI[sha256sum] = "dd4ecd9678e8d3ea772623bd81fe49b43363a2f970a76fb5468322753787aa4b"
+SRC_URI[md5sum] = "b2c05ad68334368d3258a63db709f254"
+SRC_URI[sha256sum] = "9040b2cce4028e392f063f91bbe76b8b28fecc2b7c0c6071c67b5eb3168e004a"
 
 PACKAGECONFIG ??= "\
     ${@bb.utils.filter('DISTRO_FEATURES', 'acl', d)} \
diff --git a/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm/0001-saaldump-atmdump-Include-linux-sockios.h-for-SIOCGST.patch b/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm/0001-saaldump-atmdump-Include-linux-sockios.h-for-SIOCGST.patch
new file mode 100644
index 0000000..a54869d
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm/0001-saaldump-atmdump-Include-linux-sockios.h-for-SIOCGST.patch
@@ -0,0 +1,59 @@
+From 4456e13880803a300e4b6f263ad22a37481b5df5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 29 Aug 2019 09:33:43 -0700
+Subject: [PATCH] saaldump,atmdump: Include linux/sockios.h for SIOCGSTAMP
+
+In linux kernel commit 0768e17073dc527ccd18ed5f96ce85f9985e9115
+the asm-generic/sockios.h header no longer defines SIOCGSTAMP.
+Instead it provides only SIOCGSTAMP_OLD.
+
+The linux/sockios.h header now defines SIOCGSTAMP using either
+SIOCGSTAMP_OLD or SIOCGSTAMP_NEW as appropriate. This linux only
+header file is not pulled so we get a build failure.
+
+Fixes
+../../../linux-atm-2.5.2/src/maint/atmdump.c:142:18: error: use of undeclared identifier 'SIOCGSTAMP'
+            if (ioctl(s,SIOCGSTAMP,&stamp) < 0) {
+                        ^
+1 error generated.
+make[3]: *** [Makefile:623: atmdump.o] Error 1
+make[3]: *** Waiting for unfinished jobs....
+../../../linux-atm-2.5.2/src/maint/saaldump.c:169:14: error: use of undeclared identifier 'SIOCGSTAMP'
+        if (ioctl(s,SIOCGSTAMP,&stamp) < 0) {
+                    ^
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/maint/atmdump.c  | 2 +-
+ src/maint/saaldump.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/maint/atmdump.c b/src/maint/atmdump.c
+index 8b17826..9e4853b 100644
+--- a/src/maint/atmdump.c
++++ b/src/maint/atmdump.c
+@@ -5,7 +5,7 @@
+ #if HAVE_CONFIG_H
+ #include <config.h>
+ #endif
+-
++#include <linux/sockios.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <unistd.h>
+diff --git a/src/maint/saaldump.c b/src/maint/saaldump.c
+index 83bdde9..69429a8 100644
+--- a/src/maint/saaldump.c
++++ b/src/maint/saaldump.c
+@@ -5,7 +5,7 @@
+ #if HAVE_CONFIG_H
+ #include <config.h>
+ #endif
+-
++#include <linux/sockios.h>
+ #include <stdlib.h>
+ #include <stdarg.h>
+ #include <stdio.h>
+-- 
+2.23.0
+
diff --git a/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm_2.5.2.bb b/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm_2.5.2.bb
index 9ed7ca6..e594906 100644
--- a/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm_2.5.2.bb
+++ b/meta-openembedded/meta-networking/recipes-support/linux-atm/linux-atm_2.5.2.bb
@@ -12,6 +12,7 @@
            file://0001-ttcp-Add-printf-format-string.patch \
            file://0003-mpoad-Drop-old-hack-to-compile-with-very-old-glibc.patch \
            file://0001-IFNAMSIZ-is-defined-in-net-if.h.patch \
+           file://0001-saaldump-atmdump-Include-linux-sockios.h-for-SIOCGST.patch \
 "
 
 SRC_URI_append_libc-musl = " file://musl-no-on_exit.patch"
diff --git a/meta-openembedded/meta-networking/recipes-support/netcf/netcf_0.2.8.bb b/meta-openembedded/meta-networking/recipes-support/netcf/netcf_0.2.8.bb
index a4a9c91..0f49d60 100644
--- a/meta-openembedded/meta-networking/recipes-support/netcf/netcf_0.2.8.bb
+++ b/meta-openembedded/meta-networking/recipes-support/netcf/netcf_0.2.8.bb
@@ -14,7 +14,9 @@
 
 UPSTREAM_CHECK_GITTAGREGEX = "release-(?P<pver>(\d+(\.\d+)+))"
 
-DEPENDS += "augeas libnl libxslt libxml2 gnulib"
+DEPENDS += "augeas libnl libxslt libxml2"
+
+do_configure[depends] += "gnulib:do_populate_sysroot"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/conf/layer.conf b/meta-openembedded/meta-oe/conf/layer.conf
index 4ddef29..e48fabd 100644
--- a/meta-openembedded/meta-oe/conf/layer.conf
+++ b/meta-openembedded/meta-oe/conf/layer.conf
@@ -33,6 +33,8 @@
 
 LICENSE_PATH += "${LAYERDIR}/licenses"
 
+PREFERRED_RPROVIDER_libdevmapper = "lvm2"
+
 SIGGEN_EXCLUDERECIPES_ABISAFE += " \
   mplayer-common \
   fbset-modes \
@@ -49,7 +51,7 @@
   phoronix-test-suite->bash \
   phoronix-test-suite->python \
   phoronix-test-suite->php \
-  phoronix-test-suite->lsb \
+  phoronix-test-suite->lsb-release \
   phoronix-test-suite->util-linux \
   phoronix-test-suite->busybox \
 "
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_8.8.1.bb b/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_8.8.1.bb
index 8733844..c4df1a9 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_8.8.1.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_8.8.1.bb
@@ -29,7 +29,7 @@
 SYSTEMD_AUTO_ENABLE = "disable"
 SYSTEMD_SERVICE_${PN} = "phoromatic-client.service phoromatic-server.service"
 
-RDEPENDS_${PN} += "bash python php-cli util-linux-lscpu os-release lsb"
+RDEPENDS_${PN} += "bash python php-cli util-linux-lscpu os-release lsb-release"
 
 FILES_${PN} += " \
     ${datadir}/phoronix-test-suite \
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_3.1.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_3.1.0.bb
index 50620d9..fcabeb9 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_3.1.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_3.1.0.bb
@@ -28,3 +28,5 @@
 PACKAGES =+ "${PN}-testapps"
 
 FILES_${PN}-testapps += "${datadir}/libwebsockets-test-server/*"
+
+CFLAGS_append = " -Wno-error"
diff --git a/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.58.1.bb b/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.60.0.bb
similarity index 87%
rename from meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.58.1.bb
rename to meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.60.0.bb
index 1e5094b..7163212 100644
--- a/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.58.1.bb
+++ b/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.60.0.bb
@@ -13,8 +13,8 @@
 SRC_URI += " \
     file://remove-examples.patch \
 "
-SRC_URI[archive.md5sum] = "77f1016cbb27e15d4e04a2b7bfdb4cae"
-SRC_URI[archive.sha256sum] = "6e5fe03bdf1e220eeffd543e017fd2fb15bcec9235f0ffd50674aff9362a85f0"
+SRC_URI[archive.md5sum] = "0f6180d185c067bdb2aa30d035f9b867"
+SRC_URI[archive.sha256sum] = "a3a1b1c9805479a16c0018acd84b3bfff23a122aee9e3c5013bb81231aeef2bc"
 
 do_install_append() {
     install -d ${D}${datadir}/glibmm-2.4
diff --git a/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.1.bb b/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.2.bb
similarity index 72%
rename from meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.1.bb
rename to meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.2.bb
index 62054a1..0e5b9ce 100644
--- a/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.1.bb
+++ b/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.2.bb
@@ -6,15 +6,13 @@
 DEPENDS = "mm-common"
 
 SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.10/libsigc++-${PV}.tar.xz"
-SRC_URI[md5sum] = "549cffbdb72fa105b782756f2713ffc7"
-SRC_URI[sha256sum] = "c9a25f26178c6cbb147f9904d8c533b5a5c5111a41ac2eb781eb734eea446003"
+SRC_URI[md5sum] = "1b067bfae0b502e6a5127336cb09d2dd"
+SRC_URI[sha256sum] = "b1ca0253379596f9c19f070c83d362b12dfd39c0a3ea1dd813e8e21c1a097a98"
 
 S = "${WORKDIR}/libsigc++-${PV}"
 
 inherit autotools
 
-EXTRA_AUTORECONF = "--exclude=autoheader"
-
 FILES_${PN}-dev += "${libdir}/sigc++-*/"
 FILES_${PN}-doc += "${datadir}/devhelp"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb
index 54b59cc..2da9118 100644
--- a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb
+++ b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb
@@ -2,8 +2,6 @@
 # Please communicate your use cases and suggestions to the mailinglist(s)
 
 SUMMARY = "Basic task to get a device online"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
 
 PR = "r13"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb
index 3ae7a49..b5e7b99 100644
--- a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb
+++ b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb
@@ -1,6 +1,4 @@
 SUMMARY = "Basic task to get a device booting"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
 
 PR = "r58"
 
diff --git a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.2.0.bb b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.2.0.bb
index 6ebf1e2..0773671 100644
--- a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.2.0.bb
@@ -16,6 +16,10 @@
     util-linux \
 "
 
+RDEPENDS_${PN} = " \
+    libdevmapper \
+"
+
 SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}/${BP}.tar.xz"
 SRC_URI[md5sum] = "f7818082056e5bc0be12e4c7fc20345a"
 SRC_URI[sha256sum] = "9d8f8cac2836a1623c075b5cba96032271dc81a28b2aa27fbd8331e831416bb1"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
index d84fcae..34b0b7a 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
@@ -4,7 +4,7 @@
 LIC_FILES_CHKSUM = " \
     file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10 \
     file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6 \
-    file://${COMMON_LICENSE_DIR}/BSD-2-Clause;md5=8bef8e6712b1be5aa76af1ebde9d6378 \
+    file://${COMMON_LICENSE_DIR}/BSD-2-Clause;md5=cb641bc04cda31daea161b1bc15da69f \
     file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9 \
 "
 DEPENDS = "libbsd libpcre zlib libcap"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_git.bb b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_git.bb
index 5f9a72e..06f3ee8 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_git.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_git.bb
@@ -42,7 +42,7 @@
            file://0001-disable-calls-to-getcontext-with-musl.patch \
            file://0001-lss-Match-syscalls-to-match-musl.patch;patchdir=src/third_party/lss \
            file://mips_asm_sgidefs.patch;patchdir=src/third_party/lss \
-           file://dont-clobber-rsp.patch \
+           file://dont-clobber-rsp.patch;patchdir=src/third_party/lss;striplevel=4 \
 "
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb b/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb
index 53fc159..4bd9a12 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb
@@ -1,6 +1,4 @@
 SUMMARY = "Packages required for a target (on-device) SDK"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
 
 PR = "r1"
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/pugixml/pugixml_1.9.bb b/meta-openembedded/meta-oe/recipes-devtools/pugixml/pugixml_1.9.bb
new file mode 100644
index 0000000..ad45f87
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/pugixml/pugixml_1.9.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Light-weight C++ XML Processing Library"
+DESCRIPTION = "pugixml is a C++ XML processing library, which consists of a \
+DOM-like interface with rich traversal/modification capabilities, \
+an extremely fast XML parser which constructs the DOM tree from \
+n XML file/buffer, and an XPath 1.0 implementation for complex \
+data-driven tree queries."
+HOMPAGE = "https://pugixml.org/"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://readme.txt;beginline=29;endline=52;md5=1d569c2ed59c94ddd9586051f8c67da6"
+
+SRC_URI = "https://github.com/zeux/${BPN}/releases/download/v${PV}/${BP}.tar.gz"
+SRC_URI[md5sum] = "7286ee2ed11376b6b780ced19fae0b64"
+SRC_URI[sha256sum] = "d156d35b83f680e40fd6412c4455fdd03544339779134617b9b28d19e11fdba6"
+
+inherit cmake
+
+EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON \
+                  -DCMAKE_BUILD_TYPE=Release \
+                  "
diff --git a/meta-openembedded/meta-oe/recipes-devtools/python/python-futures_3.2.0.bb b/meta-openembedded/meta-oe/recipes-devtools/python/python-futures_3.3.0.bb
similarity index 72%
rename from meta-openembedded/meta-oe/recipes-devtools/python/python-futures_3.2.0.bb
rename to meta-openembedded/meta-oe/recipes-devtools/python/python-futures_3.3.0.bb
index 3ee945f..1636f73 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/python/python-futures_3.2.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/python/python-futures_3.3.0.bb
@@ -5,8 +5,8 @@
 HOMEPAGE = "https://github.com/agronholm/pythonfutures"
 DEPENDS = "python"
 
-SRC_URI[md5sum] = "d1b299a06b96ccb59f70324716dc0016"
-SRC_URI[sha256sum] = "9ec02aa7d674acb8618afb127e27fde7fc68994c0437ad759fa094a574adb265"
+SRC_URI[md5sum] = "b43a39ae1475e3fd6940f2b4f7214675"
+SRC_URI[sha256sum] = "7e033af76a5e35f58e56da7a91e687706faf4e7bdfb2cbc3f2cca6b9bcda9794"
 
 inherit pypi setuptools
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/docopt.cpp/docopt.cpp/0001-Set-library-VERSION-and-SOVERSION.patch b/meta-openembedded/meta-oe/recipes-extended/docopt.cpp/docopt.cpp/0001-Set-library-VERSION-and-SOVERSION.patch
new file mode 100644
index 0000000..d4c7765
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/docopt.cpp/docopt.cpp/0001-Set-library-VERSION-and-SOVERSION.patch
@@ -0,0 +1,31 @@
+From a47ca75702318ff43446c70120f7aacde4ccee1b Mon Sep 17 00:00:00 2001
+From: Eero Aaltonen <eero.aaltonen@vaisala.com>
+Date: Thu, 20 Jun 2019 16:21:20 +0300
+Subject: [PATCH] Set library VERSION and SOVERSION
+
+With soversion and version specified, `install` target will install the
+library with the specified version and also create the proper symlink.
+
+Upstream-Status: Submitted [https://github.com/docopt/docopt.cpp/pull/112]
+but unlikely to be merged soon as it is a duplicate of
+[https://github.com/docopt/docopt.cpp/pull/112] which has been **Open**
+since 2016-12-08.
+---
+ CMakeLists.txt | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 23da468..feff32e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -50,6 +50,10 @@ else()
+     set_target_properties(docopt_o PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
+ 
+     add_library(docopt SHARED $<TARGET_OBJECTS:docopt_o>)
++	set_target_properties(docopt PROPERTIES
++		VERSION ${PROJECT_VERSION}
++		SOVERSION ${PROJECT_VERSION_MAJOR}
++		)
+     add_library(docopt_s STATIC $<TARGET_OBJECTS:docopt_o>)
+ endif()
+ 
diff --git a/meta-openembedded/meta-oe/recipes-extended/docopt.cpp/docopt.cpp_git.bb b/meta-openembedded/meta-oe/recipes-extended/docopt.cpp/docopt.cpp_git.bb
new file mode 100644
index 0000000..aa55ebf8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/docopt.cpp/docopt.cpp_git.bb
@@ -0,0 +1,27 @@
+SUMMARY = "C++11 port of docopt command-line interface description language and parser"
+
+DESCRIPTION = "docopt is library that lets you define a command line interface with the \
+utility argument syntax that has been used by command line utilities for \
+decades (formalized in POSIX.1-2017). From the description, docopt \
+automatically generates a parser for the command line arguments."
+
+HOMEPAGE = "https://github.com/docopt/docopt.cpp"
+
+LICENSE = "MIT | BSL-1.0"
+LIC_FILES_CHKSUM = "\
+    file://LICENSE-Boost-1.0;md5=e4224ccaecb14d942c71d31bef20d78c \
+    file://LICENSE-MIT;md5=4b242fd9ef20207e18286d73da8a6677 \
+"
+
+DEPENDS = "boost"
+SRCREV = "3dd23e3280f213bacefdf5fcb04857bf52e90917"
+PV = "0.6.2+git${SRCPV}"
+
+SRC_URI = "\
+    git://github.com/docopt/docopt.cpp.git;protocol=https \
+    file://0001-Set-library-VERSION-and-SOVERSION.patch \
+"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
diff --git a/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.22.bb b/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.22.bb
index c5fc928..985bd03 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.22.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.22.bb
@@ -8,7 +8,7 @@
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=c07cb499d259452f324bb90c3067d85c"
 
-inherit autotools python3native gobject-introspection
+inherit autotools gobject-introspection
 
 SRCREV = "f6e4538485d0442b3674e182c01ffe5a0f258ad4"
 SRC_URI = " \
@@ -17,11 +17,11 @@
 
 S = "${WORKDIR}/git"
 
-FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}"
+FILES_${PN} += "${libdir}/python2.7/dist-packages ${libdir}/python3.7/site-packages"
 
 PACKAGECONFIG ??= "python3 lvm dm kmod parted fs escrow btrfs crypto mdraid kbd mpath nvdimm"
 PACKAGECONFIG[python3] = "--with-python3, --without-python3,,python3"
-PACKAGECONFIG[python2] = "--with-python2, --without-python2,,python2"
+PACKAGECONFIG[python2] = "--with-python2, --without-python2,,python"
 PACKAGECONFIG[lvm] = "--with-lvm, --without-lvm, multipath-tools, lvm2"
 PACKAGECONFIG[lvm-dbus] = "--with-lvm_dbus, --without-lvm_dbus, multipath-tools, lvm2"
 PACKAGECONFIG[dm] = "--with-dm, --without-dm, multipath-tools, lvm2"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/Fix-float-endianness-issue-on-big-endian-arch.patch b/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/Fix-float-endianness-issue-on-big-endian-arch.patch
new file mode 100644
index 0000000..5372a23
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/Fix-float-endianness-issue-on-big-endian-arch.patch
@@ -0,0 +1,314 @@
+From: =?utf-8?b?IlNaIExpbiAo5p6X5LiK5pm6KSI=?= <szlin@debian.org>
+Date: Wed, 19 Dec 2018 10:24:47 +0800
+Subject: Fix float endianness issue on big endian arch
+
+It converts float values depending on what order they come in.
+
+This patch was modified from rm5248 [1]
+
+[1] https://github.com/synexxus/libmodbus/commit/a511768e7fe7ec52d7bae1d9ae04e33f87a59627
+
+---
+ src/modbus-data.c        | 110 ++++++++++++++++++++++++++++++++++++++---------
+ tests/unit-test-client.c |  22 ++++++----
+ tests/unit-test.h.in     |  41 ++++++++++++++++--
+ 3 files changed, 141 insertions(+), 32 deletions(-)
+
+diff --git a/src/modbus-data.c b/src/modbus-data.c
+index 902b8c6..7a744fa 100644
+--- a/src/modbus-data.c
++++ b/src/modbus-data.c
+@@ -119,9 +119,18 @@ float modbus_get_float_abcd(const uint16_t *src)
+ {
+     float f;
+     uint32_t i;
++    uint8_t a, b, c, d;
+ 
+-    i = ntohl(((uint32_t)src[0] << 16) + src[1]);
+-    memcpy(&f, &i, sizeof(float));
++    a = (src[0] >> 8) & 0xFF;
++    b = (src[0] >> 0) & 0xFF;
++    c = (src[1] >> 8) & 0xFF;
++    d = (src[1] >> 0) & 0xFF;
++
++    i = (a << 24) |
++        (b << 16) |
++        (c << 8) |
++        (d << 0);
++    memcpy(&f, &i, 4);
+ 
+     return f;
+ }
+@@ -131,9 +140,18 @@ float modbus_get_float_dcba(const uint16_t *src)
+ {
+     float f;
+     uint32_t i;
++    uint8_t a, b, c, d;
+ 
+-    i = ntohl(bswap_32((((uint32_t)src[0]) << 16) + src[1]));
+-    memcpy(&f, &i, sizeof(float));
++    a = (src[0] >> 8) & 0xFF;
++    b = (src[0] >> 0) & 0xFF;
++    c = (src[1] >> 8) & 0xFF;
++    d = (src[1] >> 0) & 0xFF;
++
++    i = (d << 24) |
++        (c << 16) |
++        (b << 8) |
++        (a << 0);
++    memcpy(&f, &i, 4);
+ 
+     return f;
+ }
+@@ -143,9 +161,18 @@ float modbus_get_float_badc(const uint16_t *src)
+ {
+     float f;
+     uint32_t i;
++    uint8_t a, b, c, d;
+ 
+-    i = ntohl((uint32_t)(bswap_16(src[0]) << 16) + bswap_16(src[1]));
+-    memcpy(&f, &i, sizeof(float));
++    a = (src[0] >> 8) & 0xFF;
++    b = (src[0] >> 0) & 0xFF;
++    c = (src[1] >> 8) & 0xFF;
++    d = (src[1] >> 0) & 0xFF;
++
++    i = (b << 24) |
++        (a << 16) |
++        (d << 8) |
++        (c << 0);
++    memcpy(&f, &i, 4);
+ 
+     return f;
+ }
+@@ -155,9 +182,18 @@ float modbus_get_float_cdab(const uint16_t *src)
+ {
+     float f;
+     uint32_t i;
++    uint8_t a, b, c, d;
+ 
+-    i = ntohl((((uint32_t)src[1]) << 16) + src[0]);
+-    memcpy(&f, &i, sizeof(float));
++    a = (src[0] >> 8) & 0xFF;
++    b = (src[0] >> 0) & 0xFF;
++    c = (src[1] >> 8) & 0xFF;
++    d = (src[1] >> 0) & 0xFF;
++
++    i = (c << 24) |
++        (d << 16) |
++        (a << 8) |
++        (b << 0);
++    memcpy(&f, &i, 4);
+ 
+     return f;
+ }
+@@ -172,50 +208,84 @@ float modbus_get_float(const uint16_t *src)
+     memcpy(&f, &i, sizeof(float));
+ 
+     return f;
++
+ }
+ 
+ /* Set a float to 4 bytes for Modbus w/o any conversion (ABCD) */
+ void modbus_set_float_abcd(float f, uint16_t *dest)
+ {
+     uint32_t i;
++    uint8_t *out = (uint8_t*) dest;
++    uint8_t a, b, c, d;
+ 
+     memcpy(&i, &f, sizeof(uint32_t));
+-    i = htonl(i);
+-    dest[0] = (uint16_t)(i >> 16);
+-    dest[1] = (uint16_t)i;
++    a = (i >> 24) & 0xFF;
++    b = (i >> 16) & 0xFF;
++    c = (i >> 8) & 0xFF;
++    d = (i >> 0) & 0xFF;
++
++    out[0] = a;
++    out[1] = b;
++    out[2] = c;
++    out[3] = d;
+ }
+ 
+ /* Set a float to 4 bytes for Modbus with byte and word swap conversion (DCBA) */
+ void modbus_set_float_dcba(float f, uint16_t *dest)
+ {
+     uint32_t i;
++    uint8_t *out = (uint8_t*) dest;
++    uint8_t a, b, c, d;
+ 
+     memcpy(&i, &f, sizeof(uint32_t));
+-    i = bswap_32(htonl(i));
+-    dest[0] = (uint16_t)(i >> 16);
+-    dest[1] = (uint16_t)i;
++    a = (i >> 24) & 0xFF;
++    b = (i >> 16) & 0xFF;
++    c = (i >> 8) & 0xFF;
++    d = (i >> 0) & 0xFF;
++
++    out[0] = d;
++    out[1] = c;
++    out[2] = b;
++    out[3] = a;
++
+ }
+ 
+ /* Set a float to 4 bytes for Modbus with byte swap conversion (BADC) */
+ void modbus_set_float_badc(float f, uint16_t *dest)
+ {
+     uint32_t i;
++    uint8_t *out = (uint8_t*) dest;
++    uint8_t a, b, c, d;
+ 
+     memcpy(&i, &f, sizeof(uint32_t));
+-    i = htonl(i);
+-    dest[0] = (uint16_t)bswap_16(i >> 16);
+-    dest[1] = (uint16_t)bswap_16(i & 0xFFFF);
++    a = (i >> 24) & 0xFF;
++    b = (i >> 16) & 0xFF;
++    c = (i >> 8) & 0xFF;
++    d = (i >> 0) & 0xFF;
++
++    out[0] = b;
++    out[1] = a;
++    out[2] = d;
++    out[3] = c;
+ }
+ 
+ /* Set a float to 4 bytes for Modbus with word swap conversion (CDAB) */
+ void modbus_set_float_cdab(float f, uint16_t *dest)
+ {
+     uint32_t i;
++    uint8_t *out = (uint8_t*) dest;
++    uint8_t a, b, c, d;
+ 
+     memcpy(&i, &f, sizeof(uint32_t));
+-    i = htonl(i);
+-    dest[0] = (uint16_t)i;
+-    dest[1] = (uint16_t)(i >> 16);
++    a = (i >> 24) & 0xFF;
++    b = (i >> 16) & 0xFF;
++    c = (i >> 8) & 0xFF;
++    d = (i >> 0) & 0xFF;
++
++    out[0] = c;
++    out[1] = d;
++    out[2] = a;
++    out[3] = b;
+ }
+ 
+ /* DEPRECATED - Set a float to 4 bytes in a sort of Modbus format! */
+diff --git a/tests/unit-test-client.c b/tests/unit-test-client.c
+index 3e315f4..3fccf3e 100644
+--- a/tests/unit-test-client.c
++++ b/tests/unit-test-client.c
+@@ -27,6 +27,7 @@ int send_crafted_request(modbus_t *ctx, int function,
+                          uint16_t max_value, uint16_t bytes,
+                          int backend_length, int backend_offset);
+ int equal_dword(uint16_t *tab_reg, const uint32_t value);
++int is_memory_equal(const void *s1, const void *s2, size_t size);
+ 
+ #define BUG_REPORT(_cond, _format, _args ...) \
+     printf("\nLine %d: assertion error for '%s': " _format "\n", __LINE__, # _cond, ## _args)
+@@ -40,6 +41,11 @@ int equal_dword(uint16_t *tab_reg, const uint32_t value);
+     }                                             \
+ };
+ 
++int is_memory_equal(const void *s1, const void *s2, size_t size)
++{
++    return (memcmp(s1, s2, size) == 0);
++}
++
+ int equal_dword(uint16_t *tab_reg, const uint32_t value) {
+     return ((tab_reg[0] == (value >> 16)) && (tab_reg[1] == (value & 0xFFFF)));
+ }
+@@ -286,26 +292,26 @@ int main(int argc, char *argv[])
+     /** FLOAT **/
+     printf("1/4 Set/get float ABCD: ");
+     modbus_set_float_abcd(UT_REAL, tab_rp_registers);
+-    ASSERT_TRUE(equal_dword(tab_rp_registers, UT_IREAL_ABCD), "FAILED Set float ABCD");
+-    real = modbus_get_float_abcd(tab_rp_registers);
++    ASSERT_TRUE(is_memory_equal(tab_rp_registers, UT_IREAL_ABCD_SET, 4), "FAILED Set float ABCD");
++    real = modbus_get_float_abcd(UT_IREAL_ABCD_GET);
+     ASSERT_TRUE(real == UT_REAL, "FAILED (%f != %f)\n", real, UT_REAL);
+ 
+     printf("2/4 Set/get float DCBA: ");
+     modbus_set_float_dcba(UT_REAL, tab_rp_registers);
+-    ASSERT_TRUE(equal_dword(tab_rp_registers, UT_IREAL_DCBA), "FAILED Set float DCBA");
+-    real = modbus_get_float_dcba(tab_rp_registers);
++    ASSERT_TRUE(is_memory_equal(tab_rp_registers, UT_IREAL_DCBA_SET, 4), "FAILED Set float DCBA");
++    real = modbus_get_float_dcba(UT_IREAL_DCBA_GET);
+     ASSERT_TRUE(real == UT_REAL, "FAILED (%f != %f)\n", real, UT_REAL);
+ 
+     printf("3/4 Set/get float BADC: ");
+     modbus_set_float_badc(UT_REAL, tab_rp_registers);
+-    ASSERT_TRUE(equal_dword(tab_rp_registers, UT_IREAL_BADC), "FAILED Set float BADC");
+-    real = modbus_get_float_badc(tab_rp_registers);
++    ASSERT_TRUE(is_memory_equal(tab_rp_registers, UT_IREAL_BADC_SET, 4), "FAILED Set float BADC");
++    real = modbus_get_float_badc(UT_IREAL_BADC_GET);
+     ASSERT_TRUE(real == UT_REAL, "FAILED (%f != %f)\n", real, UT_REAL);
+ 
+     printf("4/4 Set/get float CDAB: ");
+     modbus_set_float_cdab(UT_REAL, tab_rp_registers);
+-    ASSERT_TRUE(equal_dword(tab_rp_registers, UT_IREAL_CDAB), "FAILED Set float CDAB");
+-    real = modbus_get_float_cdab(tab_rp_registers);
++    ASSERT_TRUE(is_memory_equal(tab_rp_registers, UT_IREAL_CDAB_SET, 4), "FAILED Set float CDAB");
++    real = modbus_get_float_cdab(UT_IREAL_CDAB_GET);
+     ASSERT_TRUE(real == UT_REAL, "FAILED (%f != %f)\n", real, UT_REAL);
+ 
+     printf("\nAt this point, error messages doesn't mean the test has failed\n");
+diff --git a/tests/unit-test.h.in b/tests/unit-test.h.in
+index dca826f..4ffa254 100644
+--- a/tests/unit-test.h.in
++++ b/tests/unit-test.h.in
+@@ -56,12 +56,45 @@ const uint16_t UT_INPUT_REGISTERS_ADDRESS = 0x108;
+ const uint16_t UT_INPUT_REGISTERS_NB = 0x1;
+ const uint16_t UT_INPUT_REGISTERS_TAB[] = { 0x000A };
+ 
++/*
++ * This float value is 0x47F12000 (in big-endian format).
++ * In Little-endian(intel) format, it will be stored in memory as follows:
++ * 0x00 0x20 0xF1 0x47
++ *
++ * You can check this with the following code:
++
++   float fl = UT_REAL;
++   uint8_t *inmem = (uint8_t*)&fl;
++   int x;
++   for(x = 0; x < 4; x++){
++       printf("0x%02X ", inmem[ x ]);
++   }
++   printf("\n");
++ */
+ const float UT_REAL = 123456.00;
+ 
+-const uint32_t UT_IREAL_ABCD = 0x0020F147;
+-const uint32_t UT_IREAL_DCBA = 0x47F12000;
+-const uint32_t UT_IREAL_BADC = 0x200047F1;
+-const uint32_t UT_IREAL_CDAB = 0xF1470020;
++/*
++ * The following arrays assume that 'A' is the MSB,
++ * and 'D' is the LSB.
++ * Thus, the following is the case:
++ * A = 0x47
++ * B = 0xF1
++ * C = 0x20
++ * D = 0x00
++ *
++ * There are two sets of arrays: one to test that the setting is correct,
++ * the other to test that the getting is correct.
++ * Note that the 'get' values must be constants in processor-endianness,
++ * as libmodbus will convert all words to processor-endianness as they come in.
++ */
++const uint8_t UT_IREAL_ABCD_SET[] = {0x47, 0xF1, 0x20, 0x00};
++const uint16_t UT_IREAL_ABCD_GET[] = {0x47F1, 0x2000};
++const uint8_t UT_IREAL_DCBA_SET[] = {0x00, 0x20, 0xF1, 0x47};
++const uint16_t UT_IREAL_DCBA_GET[] = {0x0020, 0xF147};
++const uint8_t UT_IREAL_BADC_SET[] = {0xF1, 0x47, 0x00, 0x20};
++const uint16_t UT_IREAL_BADC_GET[] = {0xF147, 0x0020};
++const uint8_t UT_IREAL_CDAB_SET[] = {0x20, 0x00, 0x47, 0xF1};
++const uint16_t UT_IREAL_CDAB_GET[] = {0x2000, 0x47F1};
+ 
+ /* const uint32_t UT_IREAL_ABCD = 0x47F12000);
+ const uint32_t UT_IREAL_DCBA = 0x0020F147;
diff --git a/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/Fix-typo.patch b/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/Fix-typo.patch
new file mode 100644
index 0000000..384a4a4
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/Fix-typo.patch
@@ -0,0 +1,52 @@
+From: =?utf-8?b?IlNaIExpbiAo5p6X5LiK5pm6KSI=?= <szlin@debian.org>
+Date: Thu, 27 Sep 2018 14:51:32 +0800
+Subject: Fix typo
+
+---
+ doc/modbus_mapping_new_start_address.txt | 4 ++--
+ doc/modbus_reply.txt                     | 2 +-
+ doc/modbus_reply_exception.txt           | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/doc/modbus_mapping_new_start_address.txt b/doc/modbus_mapping_new_start_address.txt
+index 4fa196a..94a81fb 100644
+--- a/doc/modbus_mapping_new_start_address.txt
++++ b/doc/modbus_mapping_new_start_address.txt
+@@ -21,9 +21,9 @@ The _modbus_mapping_new_start_address()_ function shall allocate four arrays to
+ store bits, input bits, registers and inputs registers. The pointers are stored
+ in modbus_mapping_t structure. All values of the arrays are initialized to zero.
+ 
+-The different starting adresses make it possible to place the mapping at any
++The different starting addresses make it possible to place the mapping at any
+ address in each address space. This way, you can give access to values stored
+-at high adresses without allocating memory from the address zero, for eg. to
++at high addresses without allocating memory from the address zero, for eg. to
+ make available registers from 10000 to 10009, you can use:
+ 
+ [source,c]
+diff --git a/doc/modbus_reply.txt b/doc/modbus_reply.txt
+index 0b29d6f..6b71d11 100644
+--- a/doc/modbus_reply.txt
++++ b/doc/modbus_reply.txt
+@@ -3,7 +3,7 @@ modbus_reply(3)
+ 
+ NAME
+ ----
+-modbus_reply - send a reponse to the received request
++modbus_reply - send a response to the received request
+ 
+ 
+ SYNOPSIS
+diff --git a/doc/modbus_reply_exception.txt b/doc/modbus_reply_exception.txt
+index 7e6324f..b2170be 100644
+--- a/doc/modbus_reply_exception.txt
++++ b/doc/modbus_reply_exception.txt
+@@ -3,7 +3,7 @@ modbus_reply_exception(3)
+ 
+ NAME
+ ----
+-modbus_reply_exception - send an exception reponse
++modbus_reply_exception - send an exception response
+ 
+ 
+ SYNOPSIS
diff --git a/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/f1eb4bc7ccb09cd8d19ab641ee37637f8c34d16d.patch b/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/f1eb4bc7ccb09cd8d19ab641ee37637f8c34d16d.patch
new file mode 100644
index 0000000..7fae34e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/f1eb4bc7ccb09cd8d19ab641ee37637f8c34d16d.patch
@@ -0,0 +1,32 @@
+From f1eb4bc7ccb09cd8d19ab641ee37637f8c34d16d Mon Sep 17 00:00:00 2001
+From: i-ky <gl.ivanovsky@gmail.com>
+Date: Tue, 10 Jul 2018 15:58:45 +0300
+Subject: [PATCH] Fixed MODBUS_GET_* macros in case of negative values
+
+In case resulting value should be negative it is incorrect to use '+' operator to construct it from pieces, because highest bytes will result in negative number after bitwise shift while others will stay positive. Replacing addition with '|' should solve the issue.
+---
+ src/modbus.h | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/modbus.h b/src/modbus.h
+index f6e9a5f5..c63f5ceb 100644
+--- a/src/modbus.h
++++ b/src/modbus.h
+@@ -245,12 +245,12 @@ MODBUS_API int modbus_reply_exception(modbus_t *ctx, const uint8_t *req,
+ #define MODBUS_GET_HIGH_BYTE(data) (((data) >> 8) & 0xFF)
+ #define MODBUS_GET_LOW_BYTE(data) ((data) & 0xFF)
+ #define MODBUS_GET_INT64_FROM_INT16(tab_int16, index) \
+-    (((int64_t)tab_int16[(index)    ] << 48) + \
+-     ((int64_t)tab_int16[(index) + 1] << 32) + \
+-     ((int64_t)tab_int16[(index) + 2] << 16) + \
++    (((int64_t)tab_int16[(index)    ] << 48) | \
++     ((int64_t)tab_int16[(index) + 1] << 32) | \
++     ((int64_t)tab_int16[(index) + 2] << 16) | \
+       (int64_t)tab_int16[(index) + 3])
+-#define MODBUS_GET_INT32_FROM_INT16(tab_int16, index) ((tab_int16[(index)] << 16) + tab_int16[(index) + 1])
+-#define MODBUS_GET_INT16_FROM_INT8(tab_int8, index) ((tab_int8[(index)] << 8) + tab_int8[(index) + 1])
++#define MODBUS_GET_INT32_FROM_INT16(tab_int16, index) ((tab_int16[(index)] << 16) | tab_int16[(index) + 1])
++#define MODBUS_GET_INT16_FROM_INT8(tab_int8, index) ((tab_int8[(index)] << 8) | tab_int8[(index) + 1])
+ #define MODBUS_SET_INT16_TO_INT8(tab_int8, index, value) \
+     do { \
+         tab_int8[(index)] = (value) >> 8;  \
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
deleted file mode 100644
index cc45fa7..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.4.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require libmodbus.inc
-
-SRC_URI[md5sum] = "b1a8fd3a40d2db4de51fb0cbcb201806"
-SRC_URI[sha256sum] = "c8c862b0e9a7ba699a49bc98f62bdffdfafd53a5716c0e162696b4bf108d3637"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.6.bb b/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.6.bb
new file mode 100644
index 0000000..075487a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.6.bb
@@ -0,0 +1,12 @@
+require libmodbus.inc
+
+SRC_URI += "file://f1eb4bc7ccb09cd8d19ab641ee37637f8c34d16d.patch \
+	    file://Fix-float-endianness-issue-on-big-endian-arch.patch \
+	    file://Fix-typo.patch"
+SRC_URI[md5sum] = "15c84c1f7fb49502b3efaaa668cfd25e"
+SRC_URI[sha256sum] = "d7d9fa94a16edb094e5fdf5d87ae17a0dc3f3e3d687fead81835d9572cf87c16"
+
+# this file has been created one minute after the configure file, so it doesn't get recreated during configure step
+do_configure_prepend() {
+	rm -rf ${S}/tests/unit-test.h
+}
diff --git a/meta-openembedded/meta-oe/recipes-extended/libnss-nisplus/libnss-nisplus.bb b/meta-openembedded/meta-oe/recipes-extended/libnss-nisplus/libnss-nisplus.bb
index 2dbeee7..3a0a87e 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libnss-nisplus/libnss-nisplus.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libnss-nisplus/libnss-nisplus.bb
@@ -18,6 +18,7 @@
 SRCREV = "c6934373c7bac91499ff7bbe7d2439599325ca63"
 
 SRC_URI = "git://github.com/thkukuk/libnss_nisplus \
+           file://0001-nisplus-hosts-Remove-use-of-RES_USE_INET6.patch \
           "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libnss-nisplus/libnss-nisplus/0001-nisplus-hosts-Remove-use-of-RES_USE_INET6.patch b/meta-openembedded/meta-oe/recipes-extended/libnss-nisplus/libnss-nisplus/0001-nisplus-hosts-Remove-use-of-RES_USE_INET6.patch
new file mode 100644
index 0000000..cf380dd
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libnss-nisplus/libnss-nisplus/0001-nisplus-hosts-Remove-use-of-RES_USE_INET6.patch
@@ -0,0 +1,245 @@
+From 184bda40e05053cd2df61c28bec0baa7353697bb Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 28 Aug 2019 09:49:10 -0700
+Subject: [PATCH] nisplus-hosts: Remove use of RES_USE_INET6
+
+Upstream glibc dropped it starting glibc 2.30
+see
+https://sourceware.org/git/?p=glibc.git;a=commit;h=3f8b44be0a658266adff5ece1e4bc3ce097a5dbe
+
+Upstream-Status: Submitted [https://github.com/thkukuk/libnss_nisplus/pull/2]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/Makefile.am     |  3 +-
+ src/mapv4v6addr.h   | 69 ---------------------------------------------
+ src/nisplus-hosts.c | 58 ++++++++-----------------------------
+ 3 files changed, 13 insertions(+), 117 deletions(-)
+ delete mode 100644 src/mapv4v6addr.h
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index e879d5c..37ef86c 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -15,8 +15,7 @@ AM_CPPFLAGS = -I$(srcdir) @TIRPC_CFLAGS@ @LIBNSL_CFLAGS@
+ 
+ lib_LTLIBRARIES = libnss_nisplus.la
+ 
+-noinst_HEADERS = libc-lock.h nss-nisplus.h netgroup.h nisplus-parser.h \
+-		 mapv4v6addr.h
++noinst_HEADERS = libc-lock.h nss-nisplus.h netgroup.h nisplus-parser.h
+ check_PROGRAMS = nss_loader-test
+ nss_loader_test_LDADD = -ldl
+ 
+diff --git a/src/mapv4v6addr.h b/src/mapv4v6addr.h
+deleted file mode 100644
+index 7f85f7d..0000000
+--- a/src/mapv4v6addr.h
++++ /dev/null
+@@ -1,69 +0,0 @@
+-/*
+- * ++Copyright++ 1985, 1988, 1993
+- * -
+- * Copyright (c) 1985, 1988, 1993
+- *    The Regents of the University of California.  All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- * 1. Redistributions of source code must retain the above copyright
+- *    notice, this list of conditions and the following disclaimer.
+- * 2. Redistributions in binary form must reproduce the above copyright
+- *    notice, this list of conditions and the following disclaimer in the
+- *    documentation and/or other materials provided with the distribution.
+- * 4. Neither the name of the University nor the names of its contributors
+- *    may be used to endorse or promote products derived from this software
+- *    without specific prior written permission.
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+- * SUCH DAMAGE.
+- * -
+- * Portions Copyright (c) 1993 by Digital Equipment Corporation.
+- *
+- * Permission to use, copy, modify, and distribute this software for any
+- * purpose with or without fee is hereby granted, provided that the above
+- * copyright notice and this permission notice appear in all copies, and that
+- * the name of Digital Equipment Corporation not be used in advertising or
+- * publicity pertaining to distribution of the document or software without
+- * specific, written prior permission.
+- *
+- * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+- * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+- * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
+- * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+- * SOFTWARE.
+- * -
+- * --Copyright--
+- */
+-
+-#include <string.h>
+-#include <arpa/nameser.h>
+-
+-static void
+-map_v4v6_address (const char *src, char *dst)
+-{
+-  u_char *p = (u_char *) dst;
+-  int i;
+-
+-  /* Move the IPv4 part to the right position.  */
+-  memcpy (dst + 12, src, INADDRSZ);
+-
+-  /* Mark this ipv6 addr as a mapped ipv4. */
+-  for (i = 0; i < 10; i++)
+-    *p++ = 0x00;
+-  *p++ = 0xff;
+-  *p = 0xff;
+-}
+diff --git a/src/nisplus-hosts.c b/src/nisplus-hosts.c
+index cc00aa2..d37b209 100644
+--- a/src/nisplus-hosts.c
++++ b/src/nisplus-hosts.c
+@@ -42,14 +42,9 @@ static u_long tablename_len;
+ #define NISENTRYLEN(idx, col, res) \
+ 	(NIS_RES_OBJECT (res)[idx].EN_data.en_cols.en_cols_val[col].ec_value.ec_value_len)
+ 
+-/* Get implementation for some internal functions. */
+-#include "mapv4v6addr.h"
+-
+-
+ static int
+ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host,
+-			    char *buffer, size_t buflen, int *errnop,
+-			    int flags)
++			    char *buffer, size_t buflen, int *errnop)
+ {
+   unsigned int i;
+   char *first_unused = buffer;
+@@ -66,8 +61,7 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host,
+ 
+   char *data = first_unused;
+ 
+-  if (room_left < (af != AF_INET || (flags & AI_V4MAPPED) != 0
+-		   ? IN6ADDRSZ : INADDRSZ))
++  if (room_left < INADDRSZ)
+     {
+     no_more_room:
+       *errnop = ERANGE;
+@@ -78,18 +72,8 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host,
+   if (af != AF_INET6
+       && inet_pton (AF_INET, NISENTRYVAL (0, 2, result), data) > 0)
+     {
+-      assert ((flags & AI_V4MAPPED) == 0 || af != AF_UNSPEC);
+-      if (flags & AI_V4MAPPED)
+-	{
+-	  map_v4v6_address (data, data);
+-	  host->h_addrtype = AF_INET6;
+-	  host->h_length = IN6ADDRSZ;
+-	}
+-      else
+-	{
+-	  host->h_addrtype = AF_INET;
+-	  host->h_length = INADDRSZ;
+-	}
++      host->h_addrtype = AF_INET;
++      host->h_length = INADDRSZ;
+     }
+   else if (af != AF_INET
+ 	   && inet_pton (AF_INET6, NISENTRYVAL (0, 2, result), data) > 0)
+@@ -319,12 +303,8 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer,
+ 	    }
+ 	}
+ 
+-      if (_res.options & RES_USE_INET6)
+-	parse_res = _nss_nisplus_parse_hostent (result, AF_INET6, host, buffer,
+-						buflen, errnop, AI_V4MAPPED);
+-      else
+-	parse_res = _nss_nisplus_parse_hostent (result, AF_INET, host, buffer,
+-						buflen, errnop, 0);
++      parse_res = _nss_nisplus_parse_hostent (result, AF_INET, host, buffer,
++						buflen, errnop);
+ 
+       if (parse_res == -1)
+ 	{
+@@ -379,7 +359,7 @@ get_tablename (int *herrnop)
+ static enum nss_status
+ internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
+ 			   char *buffer, size_t buflen, int *errnop,
+-			   int *herrnop, int flags)
++			   int *herrnop)
+ {
+   if (tablename_val == NULL)
+     {
+@@ -454,7 +434,7 @@ internal_gethostbyname2_r (const char *name, int af, struct hostent *host,
+     }
+ 
+   int parse_res = _nss_nisplus_parse_hostent (result, af, host, buffer,
+-					      buflen, errnop, flags);
++					      buflen, errnop);
+ 
+   nis_freeresult (result);
+ 
+@@ -485,8 +465,7 @@ _nss_nisplus_gethostbyname2_r (const char *name, int af, struct hostent *host,
+     }
+ 
+   return internal_gethostbyname2_r (name, af, host, buffer, buflen, errnop,
+-				    herrnop,
+-			 ((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0));
++				    herrnop);
+ }
+ 
+ 
+@@ -495,19 +474,8 @@ _nss_nisplus_gethostbyname_r (const char *name, struct hostent *host,
+ 			      char *buffer, size_t buflen, int *errnop,
+ 			      int *h_errnop)
+ {
+-  if (_res.options & RES_USE_INET6)
+-    {
+-      enum nss_status status;
+-
+-      status = internal_gethostbyname2_r (name, AF_INET6, host, buffer,
+-					  buflen, errnop, h_errnop,
+-					  AI_V4MAPPED);
+-      if (status == NSS_STATUS_SUCCESS)
+-	return status;
+-    }
+-
+   return internal_gethostbyname2_r (name, AF_INET, host, buffer,
+-				   buflen, errnop, h_errnop, 0);
++				   buflen, errnop, h_errnop);
+ }
+ 
+ 
+@@ -555,9 +523,7 @@ _nss_nisplus_gethostbyaddr_r (const void *addr, socklen_t addrlen, int af,
+     }
+ 
+   parse_res = _nss_nisplus_parse_hostent (result, af, host,
+-					  buffer, buflen, errnop,
+-					  ((_res.options & RES_USE_INET6)
+-					   ? AI_V4MAPPED : 0));
++					  buffer, buflen, errnop);
+   nis_freeresult (result);
+ 
+   if (parse_res > 0)
+@@ -584,7 +550,7 @@ _nss_nisplus_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat,
+ 
+   enum nss_status status = internal_gethostbyname2_r (name, AF_UNSPEC, &host,
+ 						      buffer, buflen,
+-						      errnop, herrnop, 0);
++						      errnop, herrnop);
+   if (status == NSS_STATUS_SUCCESS)
+     {
+       if (*pat == NULL)
+-- 
+2.23.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb b/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb
index 6ce3cab..5df44f2 100644
--- a/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb
@@ -1,6 +1,6 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=72d977d697c3c05830fdff00a7448931"
-SRCREV = "6003f9997587e6a563cebf1f246bcd0eb6deff3d"
+SRCREV = "b31bce98d65f894aad6427bcf6f3f7822e261a59"
 PV = "1.0+git${SRCPV}"
 
 SRC_URI = "git://github.com/hartkopp/can-isotp.git;protocol=https"
diff --git a/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils/0001-fix-include-to-find-SIOCGSTAMP-with-latest-kernel.patch b/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils/0001-fix-include-to-find-SIOCGSTAMP-with-latest-kernel.patch
new file mode 100644
index 0000000..cbf3aee
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils/0001-fix-include-to-find-SIOCGSTAMP-with-latest-kernel.patch
@@ -0,0 +1,106 @@
+From 20981c8a328747f823b7eef68d0c2812b3eaed30 Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Sun, 14 Jul 2019 21:50:43 +0200
+Subject: [PATCH] fix include to find SIOCGSTAMP with latest kernel
+
+In linux kernel commit 0768e17073dc527ccd18ed5f96ce85f9985e9115
+the asm-generic/sockios.h header no longer defines SIOCGSTAMP.
+Instead it provides only SIOCGSTAMP_OLD.
+
+The linux/sockios.h header now defines SIOCGSTAMP using either
+SIOCGSTAMP_OLD or SIOCGSTAMP_NEW as appropriate. This linux only
+header file is not pulled so we get a build failure.
+
+canlogserver.c: In function 'main':
+canlogserver.c:404:21: error: 'SIOCGSTAMP' undeclared (first use in this function); did you mean 'SIOCGRARP'?
+     if (ioctl(s[i], SIOCGSTAMP, &tv) < 0)
+                     ^~~~~~~~~~
+                     SIOCGRARP
+canlogserver.c:404:21: note: each undeclared identifier is reported only once for each function it appears in
+
+Fixes:
+ - http://autobuild.buildroot.org/results/363de7d9bf433be8bc47ba4ee52ae0bb80fa9021
+
+Upstream-Status: Backport [https://github.com/linux-can/can-utils/commit/e9590b1ca75d360eaf3211bebd86058214d48064]
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ canlogserver.c | 1 +
+ cansniffer.c   | 1 +
+ isotpdump.c    | 1 +
+ isotpperf.c    | 1 +
+ isotpsniffer.c | 1 +
+ slcanpty.c     | 1 +
+ 6 files changed, 6 insertions(+)
+
+diff --git a/canlogserver.c b/canlogserver.c
+index e3350b7..f53165c 100644
+--- a/canlogserver.c
++++ b/canlogserver.c
+@@ -61,6 +61,7 @@
+ 
+ #include <linux/can.h>
+ #include <linux/can/raw.h>
++#include <linux/sockios.h>
+ #include <signal.h>
+ #include <errno.h>
+ 
+diff --git a/cansniffer.c b/cansniffer.c
+index 7b0a3fa..bf7d72e 100644
+--- a/cansniffer.c
++++ b/cansniffer.c
+@@ -61,6 +61,7 @@
+ 
+ #include <linux/can.h>
+ #include <linux/can/bcm.h>
++#include <linux/sockios.h>
+ 
+ #include "terminal.h"
+ 
+diff --git a/isotpdump.c b/isotpdump.c
+index b2b650a..36d8af3 100644
+--- a/isotpdump.c
++++ b/isotpdump.c
+@@ -55,6 +55,7 @@
+ 
+ #include <linux/can.h>
+ #include <linux/can/raw.h>
++#include <linux/sockios.h>
+ #include "terminal.h"
+ 
+ #define NO_CAN_ID 0xFFFFFFFFU
+diff --git a/isotpperf.c b/isotpperf.c
+index db3a2b7..5852a57 100644
+--- a/isotpperf.c
++++ b/isotpperf.c
+@@ -56,6 +56,7 @@
+ 
+ #include <linux/can.h>
+ #include <linux/can/raw.h>
++#include <linux/sockios.h>
+ 
+ #define NO_CAN_ID 0xFFFFFFFFU
+ #define PERCENTRES 2 /* resolution in percent for bargraph */
+diff --git a/isotpsniffer.c b/isotpsniffer.c
+index f42e18b..d7a4c66 100644
+--- a/isotpsniffer.c
++++ b/isotpsniffer.c
+@@ -55,6 +55,7 @@
+ 
+ #include <linux/can.h>
+ #include <linux/can/isotp.h>
++#include <linux/sockios.h>
+ #include "terminal.h"
+ 
+ #define NO_CAN_ID 0xFFFFFFFFU
+diff --git a/slcanpty.c b/slcanpty.c
+index 431ca68..7dfaf5c 100644
+--- a/slcanpty.c
++++ b/slcanpty.c
+@@ -40,6 +40,7 @@
+ 
+ #include <linux/can.h>
+ #include <linux/can/raw.h>
++#include <linux/sockios.h>
+ 
+ /* maximum rx buffer len: extended CAN frame with timestamp */
+ #define SLC_MTU (sizeof("T1111222281122334455667788EA5F\r")+1)
diff --git a/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb b/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb
index a2d62c3..db5055f 100644
--- a/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb
@@ -5,7 +5,9 @@
 
 DEPENDS = "libsocketcan"
 
-SRC_URI = "git://github.com/linux-can/${BPN}.git;protocol=git;branch=master"
+SRC_URI = "git://github.com/linux-can/${BPN}.git;protocol=git;branch=master \
+           file://0001-fix-include-to-find-SIOCGSTAMP-with-latest-kernel.patch \
+           "
 SRCREV = "4c8fb05cb4d6ddcd67299008db54af423f86fd05"
 
 PV = "0.0+gitr${SRCPV}"
diff --git a/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb b/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb
index 39c478a..e58bdd4 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb
@@ -9,7 +9,9 @@
 
 do_populate_lic[depends] += "virtual/kernel:do_patch"
 
-EXTRA_OEMAKE = "-C ${S}/tools/bpf/bpftool O=${B} CROSS=${TARGET_PREFIX} CC="${CC}" LD="${LD}" AR=${AR} ARCH=${ARCH}"
+EXTRA_OEMAKE = "V=1 -C ${S}/tools/bpf/bpftool O=${B} CROSS=${TARGET_PREFIX} CC="${CC}" LD="${LD}" AR=${AR} ARCH=${ARCH}"
+
+SECURITY_CFLAGS = ""
 
 do_configure[depends] += "virtual/kernel:do_shared_workdir"
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.6.bb b/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.6.bb
index 0a7c384..770b99f 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.6.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.6.bb
@@ -117,4 +117,4 @@
 ARM_INSTRUCTION_SET = "arm"
 
 # http://errors.yoctoproject.org/Errors/Details/186964/
-EXCLUDE_FROM_WORLD_libc-musl = "1"
+COMPATIBLE_HOST_libc-musl = 'null'
diff --git a/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb b/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
index 7370f9f..ff9720f 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
@@ -39,6 +39,7 @@
     CROSS_COMPILE=${TARGET_PREFIX} \
     ARCH=${ARCH} \
     CC="${CC}" \
+    CLANG="clang -fno-stack-protector" \
     AR="${AR}" \
     LD="${LD}" \
     DESTDIR="${D}" \
@@ -52,20 +53,11 @@
                         LICENSES \
 "
 
-python __anonymous () {
-    import re
-
-    var = d.getVar('TARGET_CC_ARCH')
-    pattern = '_FORTIFY_SOURCE=[^0]'
-
-    if re.search(pattern, var):
-        d.appendVar('TARGET_CC_ARCH', " -O")
-}
-
 do_compile() {
-    bbwarn "clang >= 6.0  with bpf support is needed with kernel 4.18+ so \
-either install it and add it to HOSTTOOLS, or add \
-clang-native from meta-clang to dependency"
+    if [ ${@bb.utils.contains('DEPENDS', 'clang-native', 'True', 'False', d)} = 'False' ]; then
+        bbwarn "clang >= 6.0 with bpf support is needed with kernel 4.18+ so
+either install it and add it to HOSTTOOLS, or add clang-native from meta-clang to dependency"
+    fi
     for i in ${TEST_LIST}
     do
         oe_runmake -C ${S}/tools/testing/selftests/${i}
@@ -122,13 +114,4 @@
 # tools/testing/selftests/vm/Makefile doesn't respect LDFLAGS and tools/testing/selftests/Makefile explicitly overrides to empty
 INSANE_SKIP_${PN} += "ldflags"
 
-# userfaultfd.c:126:2: error: format not a string literal and no format arguments [-Werror=format-security]
-#  fprintf(stderr, examples);
-#  ^~~~~~~
-SECURITY_STRINGFORMAT = ""
-
-# https://errors.yoctoproject.org/Errors/Details/261657/
-# kernel-selftest/1.0-r0/recipe-sysroot/usr/include/bits/fcntl2.h:50:4: error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT or O_TMPFILE in second argument needs 3 arguments
-#     __open_missing_mode ();
-#     ^~~~~~~~~~~~~~~~~~~~~~
-lcl_maybe_fortify = ""
+SECURITY_CFLAGS = ""
diff --git a/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch_git.bb b/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch_git.bb
index dc24794..6326a25 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch_git.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch_git.bb
@@ -2,9 +2,9 @@
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-SRCREV = "d7c5810e2a6acacfa5fec1e38d2f75af8e8c818c"
+SRCREV = "2a29bc7dea9a7da12705c7b50315eee1acdd9156"
 
-PV = "0.7.1+git${SRCPV}"
+PV = "0.8.0"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.1.bb b/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.1.bb
index 50dab8d..051656b 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.1.bb
@@ -43,4 +43,4 @@
 }
 
 # http://errors.yoctoproject.org/Errors/Details/186966/
-EXCLUDE_FROM_WORLD_libc-musl = "1"
+COMPATIBLE_HOST_libc-musl = 'null'
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb b/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb
index e6b9d6b..6b955dc 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb
@@ -19,4 +19,4 @@
 }
 
 # http://errors.yoctoproject.org/Errors/Details/186961/
-EXCLUDE_FROM_WORLD_libc-musl = "1"
+COMPATIBLE_HOST_libc-musl = 'null'
diff --git a/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.bb b/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.bb
index 4d3a96f..dca86f3 100644
--- a/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.bb
+++ b/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.bb
@@ -46,7 +46,7 @@
 }
 
 
-RDEPENDS_${PN}-ptest += "lsb"
+RDEPENDS_${PN}-ptest += "lsb-release"
 RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils"
 RDEPENDS_${PN}-ptest_append_libc-musl = " musl-utils"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/cmark/cmark_git.bb b/meta-openembedded/meta-oe/recipes-support/cmark/cmark_git.bb
new file mode 100644
index 0000000..f74a39b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/cmark/cmark_git.bb
@@ -0,0 +1,17 @@
+SUMMARY = "CommonMark parsing and rendering library and program in C"
+HOMEPAGE = "https://github.com/commonmark/cmark"
+LICENSE = "BSD-2-Clause & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=81f9cae6293cc0345a9144b78152ab62"
+
+SRC_URI = "git://github.com/commonmark/cmark.git"
+SRCREV = "8daa6b1495124f0b67e6034130e12d7be83e38bd"
+S = "${WORKDIR}/git"
+
+PV = "0.29.0"
+
+inherit cmake lib_package
+
+EXTRA_OECMAKE += " \
+    -DCMARK_TESTS=OFF \
+    -DCMARK_STATIC=OFF \
+"
diff --git a/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools_0.76.bb b/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools_0.76.bb
index 84e9bca..35251cb 100644
--- a/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools_0.76.bb
+++ b/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools_0.76.bb
@@ -12,7 +12,7 @@
 
 SECTION = "System/Servers"
 
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/PD;md5=b3597d12946881e13cb3b548d1173851"
+LIC_FILES_CHKSUM = "file://src/prot.c;beginline=1;endline=1;md5=96964cadf07e8f8c1e2ffb3b507dd647"
 LICENSE = "PD"
 
 SRC_URI = "http://cr.yp.to/daemontools/${BPN}-${PV}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.27.9.bb b/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.28.3.bb
similarity index 73%
rename from meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.27.9.bb
rename to meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.28.3.bb
index 3ef7bee..82acc49 100644
--- a/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.27.9.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.28.3.bb
@@ -5,20 +5,16 @@
 
 DEPENDS = "curl openssl zlib libssh2 libgcrypt"
 
-SRC_URI = "git://github.com/libgit2/libgit2.git;branch=maint/v0.27"
-SRCREV = "3828d7afdd08b595584048e8e4dab6ddd4506ed1"
+SRC_URI = "git://github.com/libgit2/libgit2.git;branch=maint/v0.28"
+SRCREV = "7ce88e66a19e3b48340abcdd86aeaae1882e63cc"
 
 S = "${WORKDIR}/git"
 
 inherit cmake
 
 EXTRA_OECMAKE = "\
-    -DTHREADSAFE=ON \
     -DBUILD_CLAR=OFF \
-    -DSHA1_TYPE="builtin" \
     -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-    -DBUILD_EXAMPLES=OFF \
-    -DLIB_INSTALL_DIR=${libdir} \
 "
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.4.1.bb b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.4.1.bb
index 756b143..d559028 100644
--- a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.4.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.4.1.bb
@@ -12,7 +12,8 @@
 PACKAGECONFIG[tests] = "--enable-tests,--disable-tests,kmod udev"
 
 PACKAGECONFIG[python3] = "--enable-bindings-python,--disable-bindings-python,python3"
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3native', '', d)}
+
+inherit python3native
 
 PACKAGES =+ "${PN}-python"
 FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR}"
diff --git a/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_3.0.bb b/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_3.0.bb
new file mode 100644
index 0000000..5ca2dda
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_3.0.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "Tiny XML Library"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+HOMEPAGE = "https://www.msweet.org/mxml/"
+BUGTRACKER = "https://github.com/michaelrsweet/mxml/issues"
+
+SRC_URI = "git://github.com/michaelrsweet/mxml.git"
+SRCREV = "c7755b6992a2afdd34dde47fc9be97f1237cfded"
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+PACKAGECONFIG ??= "threads"
+PACKAGECONFIG[threads] = "--enable-threads,--disable-threads"
+
+# Package does not support out of tree builds.
+B = "${S}"
+
+# MXML uses autotools but it explicitly states it does not support autoheader.
+EXTRA_AUTORECONF = "--exclude=autopoint,autoheader"
+
+do_configure_prepend() {
+    # Respect optimization CFLAGS specified by OE.
+    sed -e 's/-Os -g//' -i ${S}/configure.ac
+
+    # Enable verbose compilation output. This is required for extra QA checks to work.
+    sed -e '/.SILENT:/d' -i ${S}/Makefile.in
+}
+
+do_install() {
+    # Package uses DSTROOT instread of standard DESTDIR to specify install location.
+    oe_runmake install DSTROOT=${D}
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_git.bb b/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_git.bb
deleted file mode 100644
index b17fc67..0000000
--- a/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_git.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-DESCRIPTION = "Tiny XML Library"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-HOMEPAGE = "https://www.msweet.org/mxml/"
-BUGTRACKER = "https://github.com/michaelrsweet/mxml/issues"
-
-SRC_URI = "git://github.com/michaelrsweet/mxml.git"
-SRCREV = "c7755b6992a2afdd34dde47fc9be97f1237cfded"
-S = "${WORKDIR}/git"
-# v3.0
-PV = "3.0"
-
-CONFIGUREOPTS = " --prefix=${prefix} \
-                  --bindir=${bindir} \
-                  --sbindir=${sbindir} \
-                  --libexecdir=${libexecdir} \
-                  --datadir=${datadir} \
-                  --sysconfdir=${sysconfdir} \
-                  --sharedstatedir=${sharedstatedir} \
-                  --localstatedir=${localstatedir} \
-                  --libdir=${libdir} \
-                  --includedir=${includedir} \
-                  --oldincludedir=${oldincludedir} \
-                  --infodir=${infodir} \
-                  --mandir=${mandir} \
-                  --host=${TARGET_SYS} \
-                  --build=${BUILD_SYS} \
-                  ${PACKAGECONFIG_CONFARGS} \
-                "
-
-do_configure() {
-    install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}
-    install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}
-    ./configure ${CONFIGUREOPTS} --enable-shared
-}
-
-do_install () {
-    export DSTROOT=${D}
-    oe_runmake install
-}
-
-PACKAGES += " ${PN}-bin "
-FILES_${PN} = "${libdir}/*"
-FILES_${PN}-bin = "${bindir}/*"
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.03.02.bb b/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.03.02.bb
index 2c4febb..32bc13d 100644
--- a/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.03.02.bb
+++ b/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.03.02.bb
@@ -1,3 +1,6 @@
+# Break circular dependencies, only populate sysroot (header,
+# libraries) to other recipe for compiling, recipe lvm2
+# generates package libdevmapper
 require lvm2.inc
 
 SRCREV = "913c28917e62577a2ef67152b2e5159237503dda"
@@ -10,6 +13,7 @@
     oe_runmake 'DESTDIR=${D}' -C libdm install
 }
 
-RRECOMMENDS_${PN}_append_class-target = " lvm2-udevrules"
+# Do not generate package libdevmapper
+PACKAGES = ""
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch
deleted file mode 100644
index 24160b4..0000000
--- a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 3c16d9aaa46602e7594d717d86e7f02066d21134 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Mon, 26 Nov 2018 17:20:20 +0800
-Subject: [PATCH] explicitly do not install libdm
-
-Already have package libdevmapper which split from lvm2,
-explicitly do not do the installation here.
-
-Upstream-Status: Inappropriate [meta-oe specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
-
-Update context for lvm2 2.03.02.
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
- libdm/Makefile.in          | 6 ++++--
- libdm/dm-tools/Makefile.in | 6 ++++--
- 2 files changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/libdm/Makefile.in b/libdm/Makefile.in
-index e9bb5ae..4e9ae3f 100644
---- a/libdm/Makefile.in
-+++ b/libdm/Makefile.in
-@@ -82,9 +82,11 @@ ifeq ("@PKGCONFIG@", "yes")
-   INSTALL_TYPE += install_pkgconfig
- endif
- 
--install: $(INSTALL_TYPE) install_include
-+install:
-+	echo "Do not install device mapper in lvm2"
- 
--install_device-mapper: install
-+install_device-mapper:
-+	echo "Do not install device mapper in lvm2"
- 
- install_include: $(srcdir)/libdevmapper.h
- 	@echo "    [INSTALL] $<"
-diff --git a/libdm/dm-tools/Makefile.in b/libdm/dm-tools/Makefile.in
-index 15a9d8e..65e1306 100644
---- a/libdm/dm-tools/Makefile.in
-+++ b/libdm/dm-tools/Makefile.in
-@@ -20,7 +20,8 @@ all: device-mapper
- 
- SOURCES2 = dmsetup.c
- TARGETS_DM = dmsetup
--install_device-mapper: install_dmsetup_dynamic
-+install_device-mapper:
-+	echo "Do not install device mapper in lvm2"
- 
- ifeq ("@STATIC_LINK@", "yes")
-   TARGETS_DM += dmsetup.static
-@@ -93,6 +94,7 @@ install_dmfilemapd_static: dmfilemapd.static
- .PHONY: install_dmsetup_dynamic install_dmsetup_static
- .PHONY: install_dmfilemapd install_dmfilemapd_static
- 
--install: install_device-mapper install_dmfilemapd
-+install:
-+	echo "Do not install device mapper in lvm2"
- 
- device-mapper: $(TARGETS_DM)
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.03.02.bb b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.03.02.bb
index 9922ef7..785c696 100644
--- a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.03.02.bb
+++ b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.03.02.bb
@@ -2,7 +2,7 @@
 
 SRCREV = "913c28917e62577a2ef67152b2e5159237503dda"
 
-SRC_URI += "file://0001-explicitly-do-not-install-libdm.patch \
+SRC_URI += " \
             file://0001-dev-hdc-open-failed-No-medium-found-will-print-out-i.patch \
            "
 
@@ -46,6 +46,13 @@
 "
 PACKAGECONFIG[udev] = "--enable-udev_sync --enable-udev_rules --with-udevdir=${nonarch_base_libdir}/udev/rules.d,--disable-udev_sync --disable-udev_rules,udev"
 
+PACKAGES =+ "libdevmapper"
+FILES_libdevmapper = " \
+    ${libdir}/libdevmapper.so.* \
+    ${sbindir}/dmsetup \
+    ${sbindir}/dmstats \
+"
+
 FILES_${PN} += "${libdir}/device-mapper/*.so"
 FILES_${PN}-scripts = " \
     ${sbindir}/blkdeactivate \
@@ -65,4 +72,13 @@
 
 CONFFILES_${PN} += "${sysconfdir}/lvm/lvm.conf"
 
+SYSROOT_PREPROCESS_FUNCS_append = " remove_libdevmapper_sysroot_preprocess"
+remove_libdevmapper_sysroot_preprocess() {
+    rm -f ${SYSROOT_DESTDIR}${libdir}/libdevmapper.so* \
+       ${SYSROOT_DESTDIR}${sbindir}/dmsetup \
+       ${SYSROOT_DESTDIR}${sbindir}/dmstats \
+       ${SYSROOT_DESTDIR}${includedir}/libdevmapper.h \
+       ${SYSROOT_DESTDIR}${libdir}/pkgconfig/devmapper.pc
+}
+
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.8.1.bb b/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.8.1.bb
index 55866e9..8d86e60 100644
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.8.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.8.1.bb
@@ -19,6 +19,7 @@
 HOMEPAGE = "http://christophe.varoqui.free.fr/"
 
 DEPENDS = "libdevmapper \
+           lvm2 \
            libaio \
            liburcu \
            readline \
@@ -108,4 +109,4 @@
                 ${nonarch_libdir}/udev/kpartx_id \
                "
 
-RDEPENDS_${PN} += "bash kpartx"
+RDEPENDS_${PN} += "kpartx"
diff --git a/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb b/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb
index c56c8b9..9e609c4 100644
--- a/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb
+++ b/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb
@@ -27,8 +27,7 @@
 }
 
 do_deploy() {
-    install -d ${DEPLOY_DIR_TOOLS}
-    install -m 0755 sjf2410 ${DEPLOY_DIR_TOOLS}/sjf2410-${PV}
+    install -m 0755 sjf2410 ${DEPLOYDIR}/sjf2410-${PV}
 }
 
 addtask deploy before do_build after do_install
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Don-t-use-__GNUC_PREREQ.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Don-t-use-__GNUC_PREREQ.patch
new file mode 100644
index 0000000..d9190e5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Don-t-use-__GNUC_PREREQ.patch
@@ -0,0 +1,116 @@
+From dd6ad8ca447457c812809791ab8622da8646104c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 30 Aug 2019 13:07:33 -0700
+Subject: [PATCH] Don't use __GNUC_PREREQ
+
+These are not official GCC predefined macros; they are macros defined
+by GNU libc and some versions of BSD libc for internal use by their
+own headers, and we shouldn't be using them without checking for their
+availability first
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/efi/efi.h           | 4 ++--
+ lib/engine/pragma.h     | 4 ++--
+ lib/log/log.h           | 4 ++--
+ lib/mpb/machine_bytes.h | 4 ++--
+ lib/mpb/mpb.h           | 4 ++--
+ lib/orom/orom.h         | 4 ++--
+ 6 files changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/lib/efi/efi.h b/lib/efi/efi.h
+index 0620d9c..c8358db 100644
+--- a/lib/efi/efi.h
++++ b/lib/efi/efi.h
+@@ -33,9 +33,9 @@
+ #include <features.h>
+ #include <ssi.h>
+ 
+-#if __GNUC_PREREQ(3, 4)
++#if ((defined __GNUC__ && __GNUC__ >= 3 && __GNUC_MINOR__ >= 4) || defined __clang__)
+ #pragma once
+-#endif /* __GNUC_PREREQ */
++#endif
+ 
+ #if defined(__cplusplus)
+ extern "C" {
+diff --git a/lib/engine/pragma.h b/lib/engine/pragma.h
+index 8205ed3..fa0b268 100644
+--- a/lib/engine/pragma.h
++++ b/lib/engine/pragma.h
+@@ -32,9 +32,9 @@
+ 
+ #include <features.h>
+ 
+-#if __GNUC_PREREQ(3, 4)
++#if ((defined __GNUC__ && __GNUC__ >= 3 && __GNUC_MINOR__ >= 4) || defined __clang__)
+ #define SSI_HAS_PRAGMA_ONCE
+-#endif /* __GNUC_PREREQ */
++#endif
+ 
+ #ifdef SSI_HAS_PRAGMA_ONCE
+ #pragma once
+diff --git a/lib/log/log.h b/lib/log/log.h
+index 66a707b..ca5000a 100644
+--- a/lib/log/log.h
++++ b/lib/log/log.h
+@@ -32,9 +32,9 @@
+ 
+ #include <features.h>
+ 
+-#if __GNUC_PREREQ(3, 4)
++#if ((defined __GNUC__ && __GNUC__ >= 3 && __GNUC_MINOR__ >= 4) || defined __clang__)
+ #pragma once
+-#endif /* __GNUC_PREREQ */
++#endif
+ 
+ #if defined(__cplusplus)
+ extern "C" {
+diff --git a/lib/mpb/machine_bytes.h b/lib/mpb/machine_bytes.h
+index 6cb81c9..807461f 100644
+--- a/lib/mpb/machine_bytes.h
++++ b/lib/mpb/machine_bytes.h
+@@ -27,9 +27,9 @@
+  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  */
+ 
+-#if __GNUC_PREREQ(3, 4)
++#if ((defined __GNUC__ && __GNUC__ >= 3 && __GNUC_MINOR__ >= 4) || defined __clang__)
+ #pragma once
+-#endif /* __GNUC_PREREQ */
++#endif
+ 
+ #ifndef __ENDIAN_H__INCLUDED__
+ #define __ENDIAN_H__INCLUDED__
+diff --git a/lib/mpb/mpb.h b/lib/mpb/mpb.h
+index 32beb21..98f82fe 100644
+--- a/lib/mpb/mpb.h
++++ b/lib/mpb/mpb.h
+@@ -27,9 +27,9 @@
+  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  */
+ 
+-#if __GNUC_PREREQ(3, 4)
++#if ((defined __GNUC__ && __GNUC__ >= 3 && __GNUC_MINOR__ >= 4) || defined __clang__)
+ #pragma once
+-#endif /* __GNUC_PREREQ */
++#endif
+ 
+ #ifndef __MPB_H__INCLUDED__
+ #define __MPB_H__INCLUDED__
+diff --git a/lib/orom/orom.h b/lib/orom/orom.h
+index 4492066..16b03a6 100644
+--- a/lib/orom/orom.h
++++ b/lib/orom/orom.h
+@@ -32,9 +32,9 @@
+ 
+ #include <features.h>
+ 
+-#if __GNUC_PREREQ(3, 4)
++#if ((defined __GNUC__ && __GNUC__ >= 3 && __GNUC_MINOR__ >= 4) || defined __clang__)
+ #pragma once
+-#endif /* __GNUC_PREREQ */
++#endif
+ 
+ #if defined(__cplusplus)
+ extern "C" {
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Include-libgen.h.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Include-libgen.h.patch
new file mode 100644
index 0000000..fd44571
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Include-libgen.h.patch
@@ -0,0 +1,32 @@
+From 258a1d128581f185a7a5070f47df06e5c29c9db8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 30 Aug 2019 13:43:32 -0700
+Subject: [PATCH] Include libgen.h
+
+Use XPG version of basename on non gnu libc systems
+ideally posix version should be used everywhere but that
+would be upstreams choice to make
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ tools/ssieventmonitor.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/tools/ssieventmonitor.cpp b/tools/ssieventmonitor.cpp
+index 0d11975..af7e09c 100644
+--- a/tools/ssieventmonitor.cpp
++++ b/tools/ssieventmonitor.cpp
+@@ -39,7 +39,9 @@
+ #include <sys/select.h>
+ #include <sys/wait.h>
+ #include <sys/inotify.h>
+-
++#ifndef __GLIBC__
++#include <libgen.h>
++#endif
+ extern "C" {
+ #include "lib/safeclib/safe_str_lib.h"
+ }
+-- 
+2.23.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Use-pragma-once-unconditionally.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Use-pragma-once-unconditionally.patch
deleted file mode 100644
index ef6ae00..0000000
--- a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Use-pragma-once-unconditionally.patch
+++ /dev/null
@@ -1,872 +0,0 @@
-From 3100e23c50e38bff0c2ec77bc30049c113c29414 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Jun 2017 20:44:31 -0700
-Subject: [PATCH 1/6] Use pragma once unconditionally
-
-in OE we do not worry about supporting
-gcc 3.4 anyway
-
-Upstream-Status: Inappropriate[Bumps required gcc to be > 3.4]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/efi/efi.h                     | 2 --
- lib/engine/ahci.h                 | 2 --
- lib/engine/ahci_cdrom.h           | 2 --
- lib/engine/ahci_disk.h            | 2 --
- lib/engine/ahci_multiplier.h      | 2 --
- lib/engine/ahci_multiplier_phy.h  | 2 --
- lib/engine/ahci_multiplier_port.h | 2 --
- lib/engine/ahci_phy.h             | 2 --
- lib/engine/ahci_port.h            | 2 --
- lib/engine/ahci_raid_info.h       | 2 --
- lib/engine/ahci_tape.h            | 2 --
- lib/engine/array.h                | 2 --
- lib/engine/block_device.h         | 2 --
- lib/engine/cache.h                | 2 --
- lib/engine/container.h            | 2 --
- lib/engine/context_manager.h      | 2 --
- lib/engine/controller.h           | 2 --
- lib/engine/enclosure.h            | 2 --
- lib/engine/end_device.h           | 2 --
- lib/engine/event.h                | 2 --
- lib/engine/event_manager.h        | 2 --
- lib/engine/exception.h            | 2 --
- lib/engine/filesystem.h           | 2 --
- lib/engine/isci.h                 | 2 --
- lib/engine/isci_cdrom.h           | 2 --
- lib/engine/isci_disk.h            | 2 --
- lib/engine/isci_expander.h        | 2 --
- lib/engine/isci_expander_phy.h    | 2 --
- lib/engine/isci_expander_port.h   | 2 --
- lib/engine/isci_phy.h             | 2 --
- lib/engine/isci_port.h            | 2 --
- lib/engine/isci_raid_info.h       | 2 --
- lib/engine/isci_tape.h            | 2 --
- lib/engine/list.h                 | 2 --
- lib/engine/mdadm_config.h         | 2 --
- lib/engine/multimedia_device.h    | 2 --
- lib/engine/nondisk_device.h       | 2 --
- lib/engine/object.h               | 2 --
- lib/engine/pci_header.h           | 2 --
- lib/engine/phy.h                  | 2 --
- lib/engine/port.h                 | 2 --
- lib/engine/raid_device.h          | 2 --
- lib/engine/raid_info.h            | 2 --
- lib/engine/remote_port.h          | 2 --
- lib/engine/routing_device.h       | 2 --
- lib/engine/session.h              | 2 --
- lib/engine/session_manager.h      | 2 --
- lib/engine/storage_device.h       | 2 --
- lib/engine/stream_device.h        | 2 --
- lib/engine/string.h               | 2 --
- lib/engine/unique_id_manager.h    | 2 --
- lib/engine/utils.h                | 2 --
- lib/engine/volume.h               | 2 --
- lib/log/log.h                     | 2 --
- lib/mpb/machine_bytes.h           | 2 --
- lib/mpb/mpb.h                     | 2 --
- lib/orom/orom.h                   | 2 --
- 57 files changed, 114 deletions(-)
-
-diff --git a/lib/efi/efi.h b/lib/efi/efi.h
-index 9e7e41b..804e567 100644
---- a/lib/efi/efi.h
-+++ b/lib/efi/efi.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __EFI_H__INCLUDED__
- #define __EFI_H__INCLUDED__
-diff --git a/lib/engine/ahci.h b/lib/engine/ahci.h
-index e883d1a..80a9699 100644
---- a/lib/engine/ahci.h
-+++ b/lib/engine/ahci.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __AHCI_H__INCLUDED__
- #define __AHCI_H__INCLUDED__
-diff --git a/lib/engine/ahci_cdrom.h b/lib/engine/ahci_cdrom.h
-index 442f301..d8ca042 100644
---- a/lib/engine/ahci_cdrom.h
-+++ b/lib/engine/ahci_cdrom.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __AHCI_CDROM_H__INCLUDED__
- #define __AHCI_CDROM_H__INCLUDED__
-diff --git a/lib/engine/ahci_disk.h b/lib/engine/ahci_disk.h
-index 7892a53..1bad9ad 100644
---- a/lib/engine/ahci_disk.h
-+++ b/lib/engine/ahci_disk.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __AHCI_DISK_H__INCLUDED__
- #define __AHCI_DISK_H__INCLUDED__
-diff --git a/lib/engine/ahci_multiplier.h b/lib/engine/ahci_multiplier.h
-index d63e9bc..1029af2 100644
---- a/lib/engine/ahci_multiplier.h
-+++ b/lib/engine/ahci_multiplier.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __AHCI_MULTIPLIER_H__INCLUDED__
- #define __AHCI_MULTIPLIER_H__INCLUDED__
-diff --git a/lib/engine/ahci_multiplier_phy.h b/lib/engine/ahci_multiplier_phy.h
-index 58ecebc..2132c23 100644
---- a/lib/engine/ahci_multiplier_phy.h
-+++ b/lib/engine/ahci_multiplier_phy.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __AHCI_MULTIPLIER_PHY_H__INCLUDED__
- #define __AHCI_MULTIPLIER_PHY_H__INCLUDED__
-diff --git a/lib/engine/ahci_multiplier_port.h b/lib/engine/ahci_multiplier_port.h
-index 5ff4cf7..2402473 100644
---- a/lib/engine/ahci_multiplier_port.h
-+++ b/lib/engine/ahci_multiplier_port.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __AHCI_MULTIPLIER_PORT_H__INCLUDED__
- #define __AHCI_MULTIPLIER_PORT_H__INCLUDED__
-diff --git a/lib/engine/ahci_phy.h b/lib/engine/ahci_phy.h
-index e2254e7..a44dae0 100644
---- a/lib/engine/ahci_phy.h
-+++ b/lib/engine/ahci_phy.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __AHCI_PHY_H__INCLUDED__
- #define __AHCI_PHY_H__INCLUDED__
-diff --git a/lib/engine/ahci_port.h b/lib/engine/ahci_port.h
-index f9e3308..03c109b 100644
---- a/lib/engine/ahci_port.h
-+++ b/lib/engine/ahci_port.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __AHCI_PORT_H__INCLUDED__
- #define __AHCI_PORT_H__INCLUDED__
-diff --git a/lib/engine/ahci_raid_info.h b/lib/engine/ahci_raid_info.h
-index e1c81ae..c70e63e 100644
---- a/lib/engine/ahci_raid_info.h
-+++ b/lib/engine/ahci_raid_info.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __AHCI_RAID_INFO_H__INCLUDED__
- #define __AHCI_RAID_INFO_H__INCLUDED__
-diff --git a/lib/engine/ahci_tape.h b/lib/engine/ahci_tape.h
-index cdd9f13..a91fd2c 100644
---- a/lib/engine/ahci_tape.h
-+++ b/lib/engine/ahci_tape.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __AHCI_TAPE_H__INCLUDED__
- #define __AHCI_TAPE_H__INCLUDED__
-diff --git a/lib/engine/array.h b/lib/engine/array.h
-index 36fb4a4..0986ce3 100644
---- a/lib/engine/array.h
-+++ b/lib/engine/array.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __ARRAY_H__INCLUDED__
- #define __ARRAY_H__INCLUDED__
-diff --git a/lib/engine/block_device.h b/lib/engine/block_device.h
-index 4503914..45dd3db 100644
---- a/lib/engine/block_device.h
-+++ b/lib/engine/block_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __BLOCK_DEVICE_H__INCLUDED__
- #define __BLOCK_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/cache.h b/lib/engine/cache.h
-index 72cf521..72da20b 100644
---- a/lib/engine/cache.h
-+++ b/lib/engine/cache.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3,4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __CACHE_H__INCLUDED__
- #define __CACHE_H__INCLUDED__
-diff --git a/lib/engine/container.h b/lib/engine/container.h
-index 53867b0..c71180c 100644
---- a/lib/engine/container.h
-+++ b/lib/engine/container.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3,4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __CONTAINER_H__INCLUDED__
- #define __CONTAINER_H__INCLUDED__
-diff --git a/lib/engine/context_manager.h b/lib/engine/context_manager.h
-index fe9c256..6b4a2e7 100644
---- a/lib/engine/context_manager.h
-+++ b/lib/engine/context_manager.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3,4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __CONTEXT_H__INCLUDED__
- #define __CONTEXT_H__INCLUDED__
-diff --git a/lib/engine/controller.h b/lib/engine/controller.h
-index a2f188a..6bd078f 100644
---- a/lib/engine/controller.h
-+++ b/lib/engine/controller.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __CONTROLLER_H__INCLUDED__
- #define __CONTROLLER_H__INCLUDED__
-diff --git a/lib/engine/enclosure.h b/lib/engine/enclosure.h
-index 3faef0c..f4b13cc 100644
---- a/lib/engine/enclosure.h
-+++ b/lib/engine/enclosure.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __ENCLOSURE_H__INCLUDED__
- #define __ENCLOSURE_H__INCLUDED__
-diff --git a/lib/engine/end_device.h b/lib/engine/end_device.h
-index f147e41..269b236 100644
---- a/lib/engine/end_device.h
-+++ b/lib/engine/end_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __END_DEVICE_H__INCLUDED__
- #define __END_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/event.h b/lib/engine/event.h
-index cf9bb4f..11a4926 100644
---- a/lib/engine/event.h
-+++ b/lib/engine/event.h
-@@ -12,9 +12,7 @@ Redistribution and use in source and binary forms, with or without modification,
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __EVENT_H__INCLUDED__
- #define __EVENT_H__INCLUDED__
-diff --git a/lib/engine/event_manager.h b/lib/engine/event_manager.h
-index 65007b9..a7a8fc3 100644
---- a/lib/engine/event_manager.h
-+++ b/lib/engine/event_manager.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __EVENT_MANAGER_H__INCLUDED__
- #define __EVENT_MANAGER_H__INCLUDED__
-diff --git a/lib/engine/exception.h b/lib/engine/exception.h
-index 171e45d..183ebb5 100644
---- a/lib/engine/exception.h
-+++ b/lib/engine/exception.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __EXCEPTION_H__INCLUDED__
- #define __EXCEPTION_H__INCLUDED__
-diff --git a/lib/engine/filesystem.h b/lib/engine/filesystem.h
-index 9c2ce39..b49df07 100644
---- a/lib/engine/filesystem.h
-+++ b/lib/engine/filesystem.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __FILESYSTEM_H__INCLUDED__
- #define __FILESYSTEM_H__INCLUDED__
-diff --git a/lib/engine/isci.h b/lib/engine/isci.h
-index ea35cd4..0fa602a 100644
---- a/lib/engine/isci.h
-+++ b/lib/engine/isci.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __ISCI_H__INCLUDED__
- #define __ISCI_H__INCLUDED__
-diff --git a/lib/engine/isci_cdrom.h b/lib/engine/isci_cdrom.h
-index 87b7e7b..25637f9 100644
---- a/lib/engine/isci_cdrom.h
-+++ b/lib/engine/isci_cdrom.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __ISCI_CDROM_H__INCLUDED__
- #define __ISCI_CDROM_H__INCLUDED__
-diff --git a/lib/engine/isci_disk.h b/lib/engine/isci_disk.h
-index 596c3cf..8dd0dae 100644
---- a/lib/engine/isci_disk.h
-+++ b/lib/engine/isci_disk.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __ISCI_DISK_H__INCLUDED__
- #define __ISCI_DISK_H__INCLUDED__
-diff --git a/lib/engine/isci_expander.h b/lib/engine/isci_expander.h
-index ca7c2f1..7dc1920 100644
---- a/lib/engine/isci_expander.h
-+++ b/lib/engine/isci_expander.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __ISCI_EXPANDER_H__INCLUDED__
- #define __ISCI_EXPANDER_H__INCLUDED__
-diff --git a/lib/engine/isci_expander_phy.h b/lib/engine/isci_expander_phy.h
-index c9cd770..d3d2832 100644
---- a/lib/engine/isci_expander_phy.h
-+++ b/lib/engine/isci_expander_phy.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __ISCI_EXPANDER_PHY_H__INCLUDED__
- #define __ISCI_EXPANDER_PHY_H__INCLUDED__
-diff --git a/lib/engine/isci_expander_port.h b/lib/engine/isci_expander_port.h
-index e65a124..4fc9310 100644
---- a/lib/engine/isci_expander_port.h
-+++ b/lib/engine/isci_expander_port.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __ISCI_EXPANDER_PORT_H__INCLUDED__
- #define __ISCI_EXPANDER_PORT_H__INCLUDED__
-diff --git a/lib/engine/isci_phy.h b/lib/engine/isci_phy.h
-index 767a5b2..105c697 100644
---- a/lib/engine/isci_phy.h
-+++ b/lib/engine/isci_phy.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __ISCI_PHY_H__INCLUDED__
- #define __ISCI_PHY_H__INCLUDED__
-diff --git a/lib/engine/isci_port.h b/lib/engine/isci_port.h
-index b80be7f..5ccc151 100644
---- a/lib/engine/isci_port.h
-+++ b/lib/engine/isci_port.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __ISCI_PORT_H__INCLUDED__
- #define __ISCI_PORT_H__INCLUDED__
-diff --git a/lib/engine/isci_raid_info.h b/lib/engine/isci_raid_info.h
-index 1df6477..b0b046a 100644
---- a/lib/engine/isci_raid_info.h
-+++ b/lib/engine/isci_raid_info.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __ISCI_RAID_INFO_H__INCLUDED__
- #define __ISCI_RAID_INFO_H__INCLUDED__
-diff --git a/lib/engine/isci_tape.h b/lib/engine/isci_tape.h
-index 985f767..a2cef2d 100644
---- a/lib/engine/isci_tape.h
-+++ b/lib/engine/isci_tape.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __ISCI_TAPE_H__INCLUDED__
- #define __ISCI_TAPE_H__INCLUDED__
-diff --git a/lib/engine/list.h b/lib/engine/list.h
-index 9a7c3c3..6395830 100644
---- a/lib/engine/list.h
-+++ b/lib/engine/list.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __LIST_H__INCLUDED__
- #define __LIST_H__INCLUDED__
-diff --git a/lib/engine/mdadm_config.h b/lib/engine/mdadm_config.h
-index c94020f..e415b4f 100644
---- a/lib/engine/mdadm_config.h
-+++ b/lib/engine/mdadm_config.h
-@@ -11,9 +11,7 @@ Redistribution and use in source and binary forms, with or without modification,
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __MDADM_CONFIG_H__INCLUDED__
- #define __MDADM_CONFIG_H__INCLUDED__
-diff --git a/lib/engine/multimedia_device.h b/lib/engine/multimedia_device.h
-index 533370e..694e2a5 100644
---- a/lib/engine/multimedia_device.h
-+++ b/lib/engine/multimedia_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __MULTIMEDIA_DEVICE_H__INCLUDED__
- #define __MULTIMEDIA_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/nondisk_device.h b/lib/engine/nondisk_device.h
-index 70ebb32..0f00e52 100644
---- a/lib/engine/nondisk_device.h
-+++ b/lib/engine/nondisk_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __CHARACTER_DEVICE_H__INCLUDED__
- #define __CHARACTER_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/object.h b/lib/engine/object.h
-index b52d3d3..345d58c 100644
---- a/lib/engine/object.h
-+++ b/lib/engine/object.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __OBJECT_H__INCLUDED__
- #define __OBJECT_H__INCLUDED__
-diff --git a/lib/engine/pci_header.h b/lib/engine/pci_header.h
-index 376f296..c5129a0 100644
---- a/lib/engine/pci_header.h
-+++ b/lib/engine/pci_header.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __PCI_HEADER_H__INCLUDED__
- #define __PCI_HEADER_H__INCLUDED__
-diff --git a/lib/engine/phy.h b/lib/engine/phy.h
-index f5730a0..c59f7c8 100644
---- a/lib/engine/phy.h
-+++ b/lib/engine/phy.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __PHY_H__INCLUDED__
- #define __PHY_H__INCLUDED__
-diff --git a/lib/engine/port.h b/lib/engine/port.h
-index 2f33876..cc48c7c 100644
---- a/lib/engine/port.h
-+++ b/lib/engine/port.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3,4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __PORT_H__INCLUDED__
- #define __PORT_H__INCLUDED__
-diff --git a/lib/engine/raid_device.h b/lib/engine/raid_device.h
-index 998e80c..2174162 100644
---- a/lib/engine/raid_device.h
-+++ b/lib/engine/raid_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __RAID_DEVICE_H__INCLUDED__
- #define __RAID_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/raid_info.h b/lib/engine/raid_info.h
-index 174698a..302be9b 100644
---- a/lib/engine/raid_info.h
-+++ b/lib/engine/raid_info.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __RAID_INFO_H__INCLUDED__
- #define __RAID_INFO_H__INCLUDED__
-diff --git a/lib/engine/remote_port.h b/lib/engine/remote_port.h
-index c086656..4ddfee3 100644
---- a/lib/engine/remote_port.h
-+++ b/lib/engine/remote_port.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __REMOTE_PORT_H__INCLUDED__
- #define __REMOTE_PORT_H__INCLUDED__
-diff --git a/lib/engine/routing_device.h b/lib/engine/routing_device.h
-index 5f857a6..284621e 100644
---- a/lib/engine/routing_device.h
-+++ b/lib/engine/routing_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __ROUTING_DEVICE_H__INCLUDED__
- #define __ROUTING_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/session.h b/lib/engine/session.h
-index a901d1c..3200da1 100644
---- a/lib/engine/session.h
-+++ b/lib/engine/session.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __SESSION_H__INCLUDED__
- #define __SESSION_H__INCLUDED__
-diff --git a/lib/engine/session_manager.h b/lib/engine/session_manager.h
-index 7177064..87e16c3 100644
---- a/lib/engine/session_manager.h
-+++ b/lib/engine/session_manager.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __SESSION_MANAGER_H__INCLUDED__
- #define __SESSION_MANAGER_H__INCLUDED__
-diff --git a/lib/engine/storage_device.h b/lib/engine/storage_device.h
-index ddeb66f..20bdab2 100644
---- a/lib/engine/storage_device.h
-+++ b/lib/engine/storage_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __STORAGE_DEVICE_H__INCLUDED__
- #define __STORAGE_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/stream_device.h b/lib/engine/stream_device.h
-index 9bc111a..b29bd68 100644
---- a/lib/engine/stream_device.h
-+++ b/lib/engine/stream_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __STREAM_DEVICE_H__INCLUDED__
- #define __STREAM_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/string.h b/lib/engine/string.h
-index 3007dc7..6f348c9 100644
---- a/lib/engine/string.h
-+++ b/lib/engine/string.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __STRING_H__INCLUDED__
- #define __STRING_H__INCLUDED__
-diff --git a/lib/engine/unique_id_manager.h b/lib/engine/unique_id_manager.h
-index fe79eac..4a13627 100644
---- a/lib/engine/unique_id_manager.h
-+++ b/lib/engine/unique_id_manager.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __UNIQUE_ID_MANAGER_H__INCLUDED__
- #define __UNIQUE_ID_MANAGER_H__INCLUDED__
-diff --git a/lib/engine/utils.h b/lib/engine/utils.h
-index 86c20cf..5525303 100644
---- a/lib/engine/utils.h
-+++ b/lib/engine/utils.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __UTILS_H__INCLUDED__
- #define __UTILS_H__INCLUDED__
-diff --git a/lib/engine/volume.h b/lib/engine/volume.h
-index 9a63cbf..3347b31 100644
---- a/lib/engine/volume.h
-+++ b/lib/engine/volume.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- // Forward declarations
- class Array;
-diff --git a/lib/log/log.h b/lib/log/log.h
-index c0bd63e..8b5f171 100644
---- a/lib/log/log.h
-+++ b/lib/log/log.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __LOG_H__INCLUDED__
- #define __LOG_H__INCLUDED__
-diff --git a/lib/mpb/machine_bytes.h b/lib/mpb/machine_bytes.h
-index 7fbb0e9..800b120 100644
---- a/lib/mpb/machine_bytes.h
-+++ b/lib/mpb/machine_bytes.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __ENDIAN_H__INCLUDED__
- #define __ENDIAN_H__INCLUDED__
-diff --git a/lib/mpb/mpb.h b/lib/mpb/mpb.h
-index 01782af..c42cdfb 100644
---- a/lib/mpb/mpb.h
-+++ b/lib/mpb/mpb.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __MPB_H__INCLUDED__
- #define __MPB_H__INCLUDED__
-diff --git a/lib/orom/orom.h b/lib/orom/orom.h
-index f76e3ee..e10311d 100644
---- a/lib/orom/orom.h
-+++ b/lib/orom/orom.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- 
- 
- 
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
- 
- #ifndef __OROM_H__INCLUDED__
- #define __OROM_H__INCLUDED__
--- 
-2.13.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-log-Avoid-shadowing-functions-from-std-lib.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-log-Avoid-shadowing-functions-from-std-lib.patch
new file mode 100644
index 0000000..8fdbf3e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-log-Avoid-shadowing-functions-from-std-lib.patch
@@ -0,0 +1,57 @@
+From 874da836bc857e5942675c59e19f4fd8ad09b13e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 29 Aug 2019 14:08:19 -0700
+Subject: [PATCH 1/4] log: Avoid shadowing functions from std lib
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/log/log.c | 2 +-
+ lib/log/log.h | 8 ++++----
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/lib/log/log.c b/lib/log/log.c
+index 7d8e17c..18b67a5 100644
+--- a/lib/log/log.c
++++ b/lib/log/log.c
+@@ -82,7 +82,7 @@ enum log_level log_get_level(void) {
+ }
+ 
+ /* */
+-void __log(enum log_level level, const char *message) {
++void _ssiap_log(enum log_level level, const char *message) {
+     struct tm tm;
+     struct timeval tv;
+ 
+diff --git a/lib/log/log.h b/lib/log/log.h
+index d94e482..66a707b 100644
+--- a/lib/log/log.h
++++ b/lib/log/log.h
+@@ -53,13 +53,13 @@ enum log_level {
+ };
+ 
+ /* */
+-#define log(__level, __message)                                 \
++#define ssiap_log(__level, __message)                           \
+     do { if (log_get_level() >= (enum log_level)(__level))      \
+-        __log(__level, __message);                              \
++        _ssiap_log(__level, __message);                              \
+     } while (0)
+ 
+ #define dlog(__message)                                 \
+-         log(LOG_DEBUG, __message);
++         ssiap_log(LOG_DEBUG, __message);
+ 
+ /* */
+ void log_init(enum log_level level, const char *path);
+@@ -68,7 +68,7 @@ void log_init(enum log_level level, const char *path);
+ void log_fini(void);
+ 
+ /* */
+-void __log(enum log_level level, const char *message);
++void _ssiap_log(enum log_level level, const char *message);
+ 
+ /* */
+ enum log_level log_get_level(void);
+-- 
+2.23.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-ssieventmonitor-ordered-comparison-between-pointers-.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-ssieventmonitor-ordered-comparison-between-pointers-.patch
deleted file mode 100644
index 27df9b5..0000000
--- a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-ssieventmonitor-ordered-comparison-between-pointers-.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From ea9ecf4bf305f9509d5822b3823658a40162f43c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 25 Jul 2017 19:08:21 -0700
-Subject: [PATCH] ssieventmonitor: ordered comparison between pointers and
- zero, actually with NULL
-
-Comparing which is large or small between a pointer and NULL
-however, looks completely illogical. Ordered comparison of
-two valid pointers is legit, but no pointer will be smaller
-than NULL , so comparing if a pointer is larger than NULL
-simply means if the pointer is not NULL.
-
-Fixes errors found with clang e.g.
-
-| ssieventmonitor.cpp:339:53: error: ordered comparison between pointer and zero ('char *' and 'int')
-|                 if (fgets(nextline, sizeof(nextline) - 1, mdstat) < 0) {
-|                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- tools/ssieventmonitor.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tools/ssieventmonitor.cpp b/tools/ssieventmonitor.cpp
-index f04b8f0..7a00122 100644
---- a/tools/ssieventmonitor.cpp
-+++ b/tools/ssieventmonitor.cpp
-@@ -336,7 +336,7 @@ static int _read_mdstat(int fd)
- 	if (!strncmp(line, "md", 2)) {
- 	    if (strstr(line, INACTIVE_STR)) { /* possibly container */
- 		char nextline[1024];
--		if (fgets(nextline, sizeof(nextline) - 1, mdstat) < 0) {
-+		if (fgets(nextline, sizeof(nextline) - 1, mdstat) != (char *) NULL) {
- 		    fclose(mdstat);
- 		    return 1;
- 		}
--- 
-2.13.3
-
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-Convert-macros-into-functions.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-Convert-macros-into-functions.patch
deleted file mode 100644
index 351301c..0000000
--- a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-Convert-macros-into-functions.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From 1338ee4e69c465f8f381ec3bfe5058080236edba Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Jun 2017 22:08:35 -0700
-Subject: [PATCH 2/6] Convert macros into functions
-
-This helps in fixing the security format warnings
-add -fno-builtin-log
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/engine/Makefile.am |  3 ++-
- lib/log/Makefile.am    |  2 ++
- lib/log/log.h          | 34 +++++++++++++++++++++-------------
- src/Makefile.am        |  3 ++-
- 4 files changed, 27 insertions(+), 15 deletions(-)
-
-Index: ssiapi.1.0.1/lib/engine/Makefile.am
-===================================================================
---- ssiapi.1.0.1.orig/lib/engine/Makefile.am
-+++ ssiapi.1.0.1/lib/engine/Makefile.am
-@@ -113,4 +113,5 @@ libengine_la_SOURCES =          \
- libengine_la_CPPFLAGS =         \
-         -I$(top_srcdir)         \
-         -I$(top_srcdir)/include \
--        -I$(top_srcdir)/lib
-+        -I$(top_srcdir)/lib     \
-+        -fno-builtin-log
-Index: ssiapi.1.0.1/lib/log/Makefile.am
-===================================================================
---- ssiapi.1.0.1.orig/lib/log/Makefile.am
-+++ ssiapi.1.0.1/lib/log/Makefile.am
-@@ -5,3 +5,5 @@ noinst_LTLIBRARIES = liblog.la
- liblog_la_SOURCES =     \
-         log.c           \
-         log.h
-+
-+liblog_la_CPPFLAGS = -fno-builtin-log
-Index: ssiapi.1.0.1/lib/log/log.h
-===================================================================
---- ssiapi.1.0.1.orig/lib/log/log.h
-+++ ssiapi.1.0.1/lib/log/log.h
-@@ -23,7 +23,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIG
- #if defined(__cplusplus)
- extern "C" {
- #endif /* __cplusplus */
--
-+#include <stdarg.h>
- /* */
- enum log_level {
-     LOG_FIRST = 0,
-@@ -37,26 +37,34 @@ enum log_level {
- };
- 
- /* */
--#define log(__level, __format, ...)                             \
--    do { if (log_get_level() >= (enum log_level)(__level))      \
--        __log(__level, __format, ## __VA_ARGS__);               \
--    } while (0)
--
--#define dlog(__format, ...)                             \
--	log(LOG_DEBUG, __format, ## __VA_ARGS__);
-+void __log(enum log_level level, const char *format, ...)
-+    __attribute__((format(printf, 2, 3)));
- 
- /* */
--void log_init(enum log_level level, const char *path);
-+enum log_level log_get_level(void);
- 
- /* */
--void log_fini(void);
--
-+static inline void log(enum log_level __level, const char* __format, ...) {
-+    va_list ap;
-+    va_start(ap, __format);
-+    do {
-+         if (log_get_level() >= (enum log_level)(__level))
-+            __log(__level, __format, ap);
-+    } while (0);
-+    va_end(ap);
-+}
-+
-+static inline void dlog(const char* __format, ...) {
-+    va_list ap;
-+    va_start(ap, __format);
-+	log(LOG_DEBUG, __format, ap);
-+    va_end(ap);
-+}
- /* */
--void __log(enum log_level level, const char *format, ...)
--    __attribute__((format(printf, 2, 3)));
-+void log_init(enum log_level level, const char *path);
- 
- /* */
--enum log_level log_get_level(void);
-+void log_fini(void);
- 
- /* */
- void log_set_level(enum log_level level);
-Index: ssiapi.1.0.1/src/Makefile.am
-===================================================================
---- ssiapi.1.0.1.orig/src/Makefile.am
-+++ ssiapi.1.0.1/src/Makefile.am
-@@ -7,7 +7,8 @@ lib_LTLIBRARIES = libssi.la
- libssi_la_CPPFLAGS =                    \
-         -I$(top_srcdir)                 \
-         -I$(top_srcdir)/include         \
--        -I$(top_srcdir)/lib
-+        -I$(top_srcdir)/lib             \
-+        -fno-builtin-log
- 
- libssi_la_LDFLAGS =                     \
-         $(SGUTILS_LDFLAGS)              \
-Index: ssiapi.1.0.1/lib/efi/Makefile.am
-===================================================================
---- ssiapi.1.0.1.orig/lib/efi/Makefile.am
-+++ ssiapi.1.0.1/lib/efi/Makefile.am
-@@ -5,3 +5,4 @@ noinst_LTLIBRARIES = libefi.la
- libefi_la_SOURCES =             \
-     efi.cpp                       \
-     efi.h
-+libefi_la_CPPFLAGS = -fno-builtin-log
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-Use-stangard-int-types.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-Use-stangard-int-types.patch
new file mode 100644
index 0000000..acc718d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-Use-stangard-int-types.patch
@@ -0,0 +1,54 @@
+From 01a75b23382fd042673d1f00fce708ba6c67d05a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 30 Aug 2019 13:12:54 -0700
+Subject: [PATCH] Use stangard int types
+
+__unitn_* are internal to GNU libc lets use portable types
+
+Fixes
+error: unknown type name '__uint8_t'
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/engine/end_device.cpp | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/lib/engine/end_device.cpp b/lib/engine/end_device.cpp
+index 5a66de9..da078bf 100644
+--- a/lib/engine/end_device.cpp
++++ b/lib/engine/end_device.cpp
+@@ -36,6 +36,7 @@
+ #include <sys/ioctl.h>
+ #include <fcntl.h>
+ #include <linux/hdreg.h>
++#include <stdint.h>
+ #include <unistd.h>
+ #include <linux/fs.h>
+ #include <climits>
+@@ -90,20 +91,20 @@ using boost::shared_ptr;
+ 
+ struct AtaCommand
+ {
+-    __uint8_t command;
+-    __uint8_t obsolete1;
+-    __uint8_t obsolete2;
+-    __uint8_t transportDependent;
++    uint8_t command;
++    uint8_t obsolete1;
++    uint8_t obsolete2;
++    uint8_t transportDependent;
+ };
+ 
+ struct AtaIdentifyCall
+ {
+     AtaCommand command;
+-    __uint16_t data[256];
++    uint16_t data[256];
+ };
+ 
+ namespace {
+-    __uint16_t swap(__uint16_t value)
++    uint16_t swap(uint16_t value)
+     {
+         return (value >> 8) | (value << 8);
+     }
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-boost-Backport-clang-support.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-boost-Backport-clang-support.patch
new file mode 100644
index 0000000..2eeab54
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-boost-Backport-clang-support.patch
@@ -0,0 +1,1409 @@
+From ef90544f8df369781a6ef094330c9cfa9f0ee1e4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 29 Aug 2019 14:09:11 -0700
+Subject: [PATCH 2/4] boost: Backport clang support
+
+backport headers from boost 1.59
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/boost/config/compiler/clang.hpp           | 272 +++++++++
+ lib/boost/config/stdlib/libcpp.hpp            |  80 +++
+ lib/boost/cstdint.hpp                         | 542 ++++++++++++++++++
+ .../detail/sp_counted_base_clang.hpp          | 140 +++++
+ 4 files changed, 1034 insertions(+)
+ create mode 100644 lib/boost/config/compiler/clang.hpp
+ create mode 100644 lib/boost/config/stdlib/libcpp.hpp
+ create mode 100644 lib/boost/cstdint.hpp
+ create mode 100644 lib/boost/smart_ptr/detail/sp_counted_base_clang.hpp
+
+--- /dev/null
++++ b/lib/boost/config/compiler/clang.hpp
+@@ -0,0 +1,272 @@
++
++// (C) Copyright Douglas Gregor 2010
++//
++//  Use, modification and distribution are subject to the
++//  Boost Software License, Version 1.0. (See accompanying file
++//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
++
++//  See http://www.boost.org for most recent version.
++
++// Clang compiler setup.
++
++#define BOOST_HAS_PRAGMA_ONCE
++
++// Detecting `-fms-extension` compiler flag assuming that _MSC_VER defined when that flag is used.
++#if defined (_MSC_VER) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 4))
++#   define BOOST_HAS_PRAGMA_DETECT_MISMATCH
++#endif
++
++// When compiling with clang before __has_extension was defined,
++// even if one writes 'defined(__has_extension) && __has_extension(xxx)',
++// clang reports a compiler error. So the only workaround found is:
++
++#ifndef __has_extension
++#define __has_extension __has_feature
++#endif
++
++#if !__has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS)
++#  define BOOST_NO_EXCEPTIONS
++#endif
++
++#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_RTTI)
++#  define BOOST_NO_RTTI
++#endif
++
++#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_TYPEID)
++#  define BOOST_NO_TYPEID
++#endif
++
++#if defined(__int64) && !defined(__GNUC__)
++#  define BOOST_HAS_MS_INT64
++#endif
++
++#define BOOST_HAS_NRVO
++
++// Branch prediction hints
++#if defined(__has_builtin)
++#if __has_builtin(__builtin_expect)
++#define BOOST_LIKELY(x) __builtin_expect(x, 1)
++#define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
++#endif
++#endif
++
++// Clang supports "long long" in all compilation modes.
++#define BOOST_HAS_LONG_LONG
++
++//
++// We disable this if the compiler is really nvcc as it
++// doesn't actually support __int128 as of CUDA_VERSION=5000
++// even though it defines __SIZEOF_INT128__.
++// See https://svn.boost.org/trac/boost/ticket/10418
++// Only re-enable this for nvcc if you're absolutely sure
++// of the circumstances under which it's supported:
++//
++#if defined(__SIZEOF_INT128__) && !defined(__CUDACC__)
++#  define BOOST_HAS_INT128
++#endif
++
++
++//
++// Dynamic shared object (DSO) and dynamic-link library (DLL) support
++//
++#if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
++#  define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
++#  define BOOST_SYMBOL_IMPORT
++#  define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
++#endif
++
++//
++// The BOOST_FALLTHROUGH macro can be used to annotate implicit fall-through
++// between switch labels.
++//
++#if __cplusplus >= 201103L && defined(__has_warning)
++#  if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")
++#    define BOOST_FALLTHROUGH [[clang::fallthrough]]
++#  endif
++#endif
++
++#if !__has_feature(cxx_auto_type)
++#  define BOOST_NO_CXX11_AUTO_DECLARATIONS
++#  define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
++#endif
++
++//
++// Currently clang on Windows using VC++ RTL does not support C++11's char16_t or char32_t
++//
++#if defined(_MSC_VER) || !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L)
++#  define BOOST_NO_CXX11_CHAR16_T
++#  define BOOST_NO_CXX11_CHAR32_T
++#endif
++
++#if !__has_feature(cxx_constexpr)
++#  define BOOST_NO_CXX11_CONSTEXPR
++#endif
++
++#if !__has_feature(cxx_decltype)
++#  define BOOST_NO_CXX11_DECLTYPE
++#endif
++
++#if !__has_feature(cxx_decltype_incomplete_return_types)
++#  define BOOST_NO_CXX11_DECLTYPE_N3276
++#endif
++
++#if !__has_feature(cxx_defaulted_functions)
++#  define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
++#endif
++
++#if !__has_feature(cxx_deleted_functions)
++#  define BOOST_NO_CXX11_DELETED_FUNCTIONS
++#endif
++
++#if !__has_feature(cxx_explicit_conversions)
++#  define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
++#endif
++
++#if !__has_feature(cxx_default_function_template_args)
++#  define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
++#endif
++
++#if !__has_feature(cxx_generalized_initializers)
++#  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
++#endif
++
++#if !__has_feature(cxx_lambdas)
++#  define BOOST_NO_CXX11_LAMBDAS
++#endif
++
++#if !__has_feature(cxx_local_type_template_args)
++#  define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
++#endif
++
++#if !__has_feature(cxx_noexcept)
++#  define BOOST_NO_CXX11_NOEXCEPT
++#endif
++
++#if !__has_feature(cxx_nullptr)
++#  define BOOST_NO_CXX11_NULLPTR
++#endif
++
++#if !__has_feature(cxx_range_for)
++#  define BOOST_NO_CXX11_RANGE_BASED_FOR
++#endif
++
++#if !__has_feature(cxx_raw_string_literals)
++#  define BOOST_NO_CXX11_RAW_LITERALS
++#endif
++
++#if !__has_feature(cxx_reference_qualified_functions)
++#  define BOOST_NO_CXX11_REF_QUALIFIERS
++#endif
++
++#if !__has_feature(cxx_generalized_initializers)
++#  define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
++#endif
++
++#if !__has_feature(cxx_rvalue_references)
++#  define BOOST_NO_CXX11_RVALUE_REFERENCES
++#endif
++
++#if !__has_feature(cxx_strong_enums)
++#  define BOOST_NO_CXX11_SCOPED_ENUMS
++#endif
++
++#if !__has_feature(cxx_static_assert)
++#  define BOOST_NO_CXX11_STATIC_ASSERT
++#endif
++
++#if !__has_feature(cxx_alias_templates)
++#  define BOOST_NO_CXX11_TEMPLATE_ALIASES
++#endif
++
++#if !__has_feature(cxx_unicode_literals)
++#  define BOOST_NO_CXX11_UNICODE_LITERALS
++#endif
++
++#if !__has_feature(cxx_variadic_templates)
++#  define BOOST_NO_CXX11_VARIADIC_TEMPLATES
++#endif
++
++#if !__has_feature(cxx_user_literals)
++#  define BOOST_NO_CXX11_USER_DEFINED_LITERALS
++#endif
++
++#if !__has_feature(cxx_alignas)
++#  define BOOST_NO_CXX11_ALIGNAS
++#endif
++
++#if !__has_feature(cxx_trailing_return)
++#  define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
++#endif
++
++#if !__has_feature(cxx_inline_namespaces)
++#  define BOOST_NO_CXX11_INLINE_NAMESPACES
++#endif
++
++#if !__has_feature(cxx_override_control)
++#  define BOOST_NO_CXX11_FINAL
++#endif
++
++#if !(__has_feature(__cxx_binary_literals__) || __has_extension(__cxx_binary_literals__))
++#  define BOOST_NO_CXX14_BINARY_LITERALS
++#endif
++
++#if !__has_feature(__cxx_decltype_auto__)
++#  define BOOST_NO_CXX14_DECLTYPE_AUTO
++#endif
++
++#if !__has_feature(__cxx_aggregate_nsdmi__)
++#  define BOOST_NO_CXX14_AGGREGATE_NSDMI
++#endif
++
++#if !__has_feature(__cxx_init_captures__)
++#  define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
++#endif
++
++#if !__has_feature(__cxx_generic_lambdas__)
++#  define BOOST_NO_CXX14_GENERIC_LAMBDAS
++#endif
++
++// clang < 3.5 has a defect with dependent type, like following.
++//
++//  template <class T>
++//  constexpr typename enable_if<pred<T> >::type foo(T &)
++//  { } // error: no return statement in constexpr function
++//
++// This issue also affects C++11 mode, but C++11 constexpr requires return stmt.
++// Therefore we don't care such case.
++//
++// Note that we can't check Clang version directly as the numbering system changes depending who's
++// creating the Clang release (see https://github.com/boostorg/config/pull/39#issuecomment-59927873)
++// so instead verify that we have a feature that was introduced at the same time as working C++14
++// constexpr (generic lambda's in this case):
++//
++#if !__has_feature(__cxx_generic_lambdas__) || !__has_feature(__cxx_relaxed_constexpr__)
++#  define BOOST_NO_CXX14_CONSTEXPR
++#endif
++
++#if !__has_feature(__cxx_return_type_deduction__)
++#  define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
++#endif
++
++#if !__has_feature(__cxx_variable_templates__)
++#  define BOOST_NO_CXX14_VARIABLE_TEMPLATES
++#endif
++
++#if __cplusplus < 201400
++// All versions with __cplusplus above this value seem to support this:
++#  define BOOST_NO_CXX14_DIGIT_SEPARATORS
++#endif
++
++
++// Unused attribute:
++#if defined(__GNUC__) && (__GNUC__ >= 4)
++#  define BOOST_ATTRIBUTE_UNUSED __attribute__((unused))
++#endif
++
++#ifndef BOOST_COMPILER
++#  define BOOST_COMPILER "Clang version " __clang_version__
++#endif
++
++// Macro used to identify the Clang compiler.
++#define BOOST_CLANG 1
++
+--- /dev/null
++++ b/lib/boost/config/stdlib/libcpp.hpp
+@@ -0,0 +1,80 @@
++//  (C) Copyright Christopher Jefferson 2011.
++//  Use, modification and distribution are subject to the
++//  Boost Software License, Version 1.0. (See accompanying file
++//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
++
++//  See http://www.boost.org for most recent version.
++
++//  config for libc++
++//  Might need more in here later.
++
++#if !defined(_LIBCPP_VERSION)
++#  include <ciso646>
++#  if !defined(_LIBCPP_VERSION)
++#      error "This is not libc++!"
++#  endif
++#endif
++
++#define BOOST_STDLIB "libc++ version " BOOST_STRINGIZE(_LIBCPP_VERSION)
++
++#define BOOST_HAS_THREADS
++
++#ifdef _LIBCPP_HAS_NO_VARIADICS
++#    define BOOST_NO_CXX11_HDR_TUPLE
++#endif
++
++// BOOST_NO_CXX11_ALLOCATOR should imply no support for the C++11
++// allocator model. The C++11 allocator model requires a conforming
++// std::allocator_traits which is only possible with C++11 template
++// aliases since members rebind_alloc and rebind_traits require it.
++#if defined(_LIBCPP_HAS_NO_TEMPLATE_ALIASES)
++#    define BOOST_NO_CXX11_ALLOCATOR
++#endif
++
++#if __cplusplus < 201103
++#  define BOOST_NO_CXX11_HDR_ARRAY
++#  define BOOST_NO_CXX11_HDR_CODECVT
++#  define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
++#  define BOOST_NO_CXX11_HDR_FORWARD_LIST
++#  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
++#  define BOOST_NO_CXX11_HDR_MUTEX
++#  define BOOST_NO_CXX11_HDR_RANDOM
++#  define BOOST_NO_CXX11_HDR_RATIO
++#  define BOOST_NO_CXX11_HDR_REGEX
++#  define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
++#  define BOOST_NO_CXX11_HDR_THREAD
++#  define BOOST_NO_CXX11_HDR_TUPLE
++#  define BOOST_NO_CXX11_HDR_TYPEINDEX
++#  define BOOST_NO_CXX11_HDR_UNORDERED_MAP
++#  define BOOST_NO_CXX11_HDR_UNORDERED_SET
++#  define BOOST_NO_CXX11_NUMERIC_LIMITS
++#  define BOOST_NO_CXX11_ALLOCATOR
++#  define BOOST_NO_CXX11_SMART_PTR
++#  define BOOST_NO_CXX11_HDR_FUNCTIONAL
++#  define BOOST_NO_CXX11_STD_ALIGN
++#  define BOOST_NO_CXX11_ADDRESSOF
++#endif
++
++//
++// These appear to be unusable/incomplete so far:
++//
++#  define BOOST_NO_CXX11_HDR_CHRONO
++#  define BOOST_NO_CXX11_HDR_FUTURE
++#  define BOOST_NO_CXX11_HDR_TYPE_TRAITS
++#  define BOOST_NO_CXX11_ATOMIC_SMART_PTR
++#  define BOOST_NO_CXX11_HDR_ATOMIC
++
++// libc++ uses a non-standard messages_base
++#define BOOST_NO_STD_MESSAGES
++
++#if defined(__has_include)
++#if !__has_include(<shared_mutex>)
++#  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
++#elif __cplusplus <= 201103
++#  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
++#endif
++#elif __cplusplus < 201402
++#  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
++#endif
++
++//  --- end ---
+--- /dev/null
++++ b/lib/boost/cstdint.hpp
+@@ -0,0 +1,542 @@
++//  boost cstdint.hpp header file  ------------------------------------------//
++
++//  (C) Copyright Beman Dawes 1999.
++//  (C) Copyright Jens Mauer 2001
++//  (C) Copyright John Maddock 2001
++//  Distributed under the Boost
++//  Software License, Version 1.0. (See accompanying file
++//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
++
++//  See http://www.boost.org/libs/integer for documentation.
++
++//  Revision History
++//   31 Oct 01  use BOOST_HAS_LONG_LONG to check for "long long" (Jens M.)
++//   16 Apr 01  check LONGLONG_MAX when looking for "long long" (Jens Maurer)
++//   23 Jan 01  prefer "long" over "int" for int32_t and intmax_t (Jens Maurer)
++//   12 Nov 00  Merged <boost/stdint.h> (Jens Maurer)
++//   23 Sep 00  Added INTXX_C macro support (John Maddock).
++//   22 Sep 00  Better 64-bit support (John Maddock)
++//   29 Jun 00  Reimplement to avoid including stdint.h within namespace boost
++//    8 Aug 99  Initial version (Beman Dawes)
++
++
++#ifndef BOOST_CSTDINT_HPP
++#define BOOST_CSTDINT_HPP
++
++//
++// Since we always define the INT#_C macros as per C++0x,
++// define __STDC_CONSTANT_MACROS so that <stdint.h> does the right
++// thing if possible, and so that the user knows that the macros
++// are actually defined as per C99.
++//
++#ifndef __STDC_CONSTANT_MACROS
++#  define __STDC_CONSTANT_MACROS
++#endif
++
++#include <boost/config.hpp>
++
++//
++// Note that GLIBC is a bit inconsistent about whether int64_t is defined or not
++// depending upon what headers happen to have been included first...
++// so we disable use of stdint.h when GLIBC does not define __GLIBC_HAVE_LONG_LONG.
++// See https://svn.boost.org/trac/boost/ticket/3548 and http://sources.redhat.com/bugzilla/show_bug.cgi?id=10990
++//
++#if defined(BOOST_HAS_STDINT_H)					\
++  && (!defined(__GLIBC__)					\
++      || defined(__GLIBC_HAVE_LONG_LONG)			\
++      || (defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 17)))))
++
++// The following #include is an implementation artifact; not part of interface.
++# ifdef __hpux
++// HP-UX has a vaguely nice <stdint.h> in a non-standard location
++#   include <inttypes.h>
++#   ifdef __STDC_32_MODE__
++      // this is triggered with GCC, because it defines __cplusplus < 199707L
++#     define BOOST_NO_INT64_T
++#   endif
++# elif defined(__FreeBSD__) || defined(__IBMCPP__) || defined(_AIX)
++#   include <inttypes.h>
++# else
++#   include <stdint.h>
++
++// There is a bug in Cygwin two _C macros
++#   if defined(__STDC_CONSTANT_MACROS) && defined(__CYGWIN__)
++#     undef INTMAX_C
++#     undef UINTMAX_C
++#     define INTMAX_C(c) c##LL
++#     define UINTMAX_C(c) c##ULL
++#   endif
++
++# endif
++
++#ifdef __QNX__
++
++// QNX (Dinkumware stdlib) defines these as non-standard names.
++// Reflect to the standard names.
++
++typedef ::intleast8_t int_least8_t;
++typedef ::intfast8_t int_fast8_t;
++typedef ::uintleast8_t uint_least8_t;
++typedef ::uintfast8_t uint_fast8_t;
++
++typedef ::intleast16_t int_least16_t;
++typedef ::intfast16_t int_fast16_t;
++typedef ::uintleast16_t uint_least16_t;
++typedef ::uintfast16_t uint_fast16_t;
++
++typedef ::intleast32_t int_least32_t;
++typedef ::intfast32_t int_fast32_t;
++typedef ::uintleast32_t uint_least32_t;
++typedef ::uintfast32_t uint_fast32_t;
++
++# ifndef BOOST_NO_INT64_T
++
++typedef ::intleast64_t int_least64_t;
++typedef ::intfast64_t int_fast64_t;
++typedef ::uintleast64_t uint_least64_t;
++typedef ::uintfast64_t uint_fast64_t;
++
++# endif
++
++#endif
++
++namespace boost
++{
++
++  using ::int8_t;
++  using ::int_least8_t;
++  using ::int_fast8_t;
++  using ::uint8_t;
++  using ::uint_least8_t;
++  using ::uint_fast8_t;
++
++  using ::int16_t;
++  using ::int_least16_t;
++  using ::int_fast16_t;
++  using ::uint16_t;
++  using ::uint_least16_t;
++  using ::uint_fast16_t;
++
++  using ::int32_t;
++  using ::int_least32_t;
++  using ::int_fast32_t;
++  using ::uint32_t;
++  using ::uint_least32_t;
++  using ::uint_fast32_t;
++
++# ifndef BOOST_NO_INT64_T
++
++  using ::int64_t;
++  using ::int_least64_t;
++  using ::int_fast64_t;
++  using ::uint64_t;
++  using ::uint_least64_t;
++  using ::uint_fast64_t;
++
++# endif
++
++  using ::intmax_t;
++  using ::uintmax_t;
++
++} // namespace boost
++
++#elif defined(__FreeBSD__) && (__FreeBSD__ <= 4) || defined(__osf__) || defined(__VMS) || defined(__SOLARIS9__) || defined(__NetBSD__)
++// FreeBSD and Tru64 have an <inttypes.h> that contains much of what we need.
++# include <inttypes.h>
++
++namespace boost {
++
++  using ::int8_t;
++  typedef int8_t int_least8_t;
++  typedef int8_t int_fast8_t;
++  using ::uint8_t;
++  typedef uint8_t uint_least8_t;
++  typedef uint8_t uint_fast8_t;
++
++  using ::int16_t;
++  typedef int16_t int_least16_t;
++  typedef int16_t int_fast16_t;
++  using ::uint16_t;
++  typedef uint16_t uint_least16_t;
++  typedef uint16_t uint_fast16_t;
++
++  using ::int32_t;
++  typedef int32_t int_least32_t;
++  typedef int32_t int_fast32_t;
++  using ::uint32_t;
++  typedef uint32_t uint_least32_t;
++  typedef uint32_t uint_fast32_t;
++
++# ifndef BOOST_NO_INT64_T
++
++  using ::int64_t;
++  typedef int64_t int_least64_t;
++  typedef int64_t int_fast64_t;
++  using ::uint64_t;
++  typedef uint64_t uint_least64_t;
++  typedef uint64_t uint_fast64_t;
++
++  typedef int64_t intmax_t;
++  typedef uint64_t uintmax_t;
++
++# else
++
++  typedef int32_t intmax_t;
++  typedef uint32_t uintmax_t;
++
++# endif
++
++} // namespace boost
++
++#else  // BOOST_HAS_STDINT_H
++
++# include <boost/limits.hpp> // implementation artifact; not part of interface
++# include <limits.h>         // needed for limits macros
++
++
++namespace boost
++{
++
++//  These are fairly safe guesses for some 16-bit, and most 32-bit and 64-bit
++//  platforms.  For other systems, they will have to be hand tailored.
++//
++//  Because the fast types are assumed to be the same as the undecorated types,
++//  it may be possible to hand tailor a more efficient implementation.  Such
++//  an optimization may be illusionary; on the Intel x86-family 386 on, for
++//  example, byte arithmetic and load/stores are as fast as "int" sized ones.
++
++//  8-bit types  ------------------------------------------------------------//
++
++# if UCHAR_MAX == 0xff
++     typedef signed char     int8_t;
++     typedef signed char     int_least8_t;
++     typedef signed char     int_fast8_t;
++     typedef unsigned char   uint8_t;
++     typedef unsigned char   uint_least8_t;
++     typedef unsigned char   uint_fast8_t;
++# else
++#    error defaults not correct; you must hand modify boost/cstdint.hpp
++# endif
++
++//  16-bit types  -----------------------------------------------------------//
++
++# if USHRT_MAX == 0xffff
++#  if defined(__crayx1)
++     // The Cray X1 has a 16-bit short, however it is not recommend
++     // for use in performance critical code.
++     typedef short           int16_t;
++     typedef short           int_least16_t;
++     typedef int             int_fast16_t;
++     typedef unsigned short  uint16_t;
++     typedef unsigned short  uint_least16_t;
++     typedef unsigned int    uint_fast16_t;
++#  else
++     typedef short           int16_t;
++     typedef short           int_least16_t;
++     typedef short           int_fast16_t;
++     typedef unsigned short  uint16_t;
++     typedef unsigned short  uint_least16_t;
++     typedef unsigned short  uint_fast16_t;
++#  endif
++# elif (USHRT_MAX == 0xffffffff) && defined(__MTA__)
++      // On MTA / XMT short is 32 bits unless the -short16 compiler flag is specified
++      // MTA / XMT does support the following non-standard integer types
++      typedef __short16           int16_t;
++      typedef __short16           int_least16_t;
++      typedef __short16           int_fast16_t;
++      typedef unsigned __short16  uint16_t;
++      typedef unsigned __short16  uint_least16_t;
++      typedef unsigned __short16  uint_fast16_t;
++# elif (USHRT_MAX == 0xffffffff) && defined(CRAY)
++     // no 16-bit types on Cray:
++     typedef short           int_least16_t;
++     typedef short           int_fast16_t;
++     typedef unsigned short  uint_least16_t;
++     typedef unsigned short  uint_fast16_t;
++# else
++#    error defaults not correct; you must hand modify boost/cstdint.hpp
++# endif
++
++//  32-bit types  -----------------------------------------------------------//
++
++# if UINT_MAX == 0xffffffff
++     typedef int             int32_t;
++     typedef int             int_least32_t;
++     typedef int             int_fast32_t;
++     typedef unsigned int    uint32_t;
++     typedef unsigned int    uint_least32_t;
++     typedef unsigned int    uint_fast32_t;
++# elif (USHRT_MAX == 0xffffffff)
++     typedef short             int32_t;
++     typedef short             int_least32_t;
++     typedef short             int_fast32_t;
++     typedef unsigned short    uint32_t;
++     typedef unsigned short    uint_least32_t;
++     typedef unsigned short    uint_fast32_t;
++# elif ULONG_MAX == 0xffffffff
++     typedef long            int32_t;
++     typedef long            int_least32_t;
++     typedef long            int_fast32_t;
++     typedef unsigned long   uint32_t;
++     typedef unsigned long   uint_least32_t;
++     typedef unsigned long   uint_fast32_t;
++# elif (UINT_MAX == 0xffffffffffffffff) && defined(__MTA__)
++      // Integers are 64 bits on the MTA / XMT
++      typedef __int32           int32_t;
++      typedef __int32           int_least32_t;
++      typedef __int32           int_fast32_t;
++      typedef unsigned __int32  uint32_t;
++      typedef unsigned __int32  uint_least32_t;
++      typedef unsigned __int32  uint_fast32_t;
++# else
++#    error defaults not correct; you must hand modify boost/cstdint.hpp
++# endif
++
++//  64-bit types + intmax_t and uintmax_t  ----------------------------------//
++
++# if defined(BOOST_HAS_LONG_LONG) && \
++   !defined(BOOST_MSVC) && !defined(__BORLANDC__) && \
++   (!defined(__GLIBCPP__) || defined(_GLIBCPP_USE_LONG_LONG)) && \
++   (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX))
++#    if defined(__hpux)
++     // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions
++#    elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615ULL) || (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615ULL) || (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615ULL)
++                                                                 // 2**64 - 1
++#    else
++#       error defaults not correct; you must hand modify boost/cstdint.hpp
++#    endif
++
++     typedef  ::boost::long_long_type            intmax_t;
++     typedef  ::boost::ulong_long_type   uintmax_t;
++     typedef  ::boost::long_long_type            int64_t;
++     typedef  ::boost::long_long_type            int_least64_t;
++     typedef  ::boost::long_long_type            int_fast64_t;
++     typedef  ::boost::ulong_long_type   uint64_t;
++     typedef  ::boost::ulong_long_type   uint_least64_t;
++     typedef  ::boost::ulong_long_type   uint_fast64_t;
++
++# elif ULONG_MAX != 0xffffffff
++
++#    if ULONG_MAX == 18446744073709551615 // 2**64 - 1
++     typedef long                 intmax_t;
++     typedef unsigned long        uintmax_t;
++     typedef long                 int64_t;
++     typedef long                 int_least64_t;
++     typedef long                 int_fast64_t;
++     typedef unsigned long        uint64_t;
++     typedef unsigned long        uint_least64_t;
++     typedef unsigned long        uint_fast64_t;
++#    else
++#       error defaults not correct; you must hand modify boost/cstdint.hpp
++#    endif
++# elif defined(__GNUC__) && defined(BOOST_HAS_LONG_LONG)
++     __extension__ typedef long long            intmax_t;
++     __extension__ typedef unsigned long long   uintmax_t;
++     __extension__ typedef long long            int64_t;
++     __extension__ typedef long long            int_least64_t;
++     __extension__ typedef long long            int_fast64_t;
++     __extension__ typedef unsigned long long   uint64_t;
++     __extension__ typedef unsigned long long   uint_least64_t;
++     __extension__ typedef unsigned long long   uint_fast64_t;
++# elif defined(BOOST_HAS_MS_INT64)
++     //
++     // we have Borland/Intel/Microsoft __int64:
++     //
++     typedef __int64             intmax_t;
++     typedef unsigned __int64    uintmax_t;
++     typedef __int64             int64_t;
++     typedef __int64             int_least64_t;
++     typedef __int64             int_fast64_t;
++     typedef unsigned __int64    uint64_t;
++     typedef unsigned __int64    uint_least64_t;
++     typedef unsigned __int64    uint_fast64_t;
++# else // assume no 64-bit integers
++#  define BOOST_NO_INT64_T
++     typedef int32_t              intmax_t;
++     typedef uint32_t             uintmax_t;
++# endif
++
++} // namespace boost
++
++
++#endif // BOOST_HAS_STDINT_H
++
++// intptr_t/uintptr_t are defined separately because they are optional and not universally available
++#if defined(BOOST_WINDOWS) && !defined(_WIN32_WCE) && !defined(BOOST_HAS_STDINT_H)
++// Older MSVC don't have stdint.h and have intptr_t/uintptr_t defined in stddef.h
++#include <stddef.h>
++#endif
++
++// PGI seems to not support intptr_t/uintptr_t properly. BOOST_HAS_STDINT_H is not defined for this compiler by Boost.Config.
++#if !defined(__PGIC__)
++
++#if (defined(BOOST_WINDOWS) && !defined(_WIN32_WCE)) \
++    || (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \
++    || defined(__CYGWIN__) \
++    || defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \
++    || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(sun)
++
++namespace boost {
++    using ::intptr_t;
++    using ::uintptr_t;
++}
++#define BOOST_HAS_INTPTR_T
++
++// Clang pretends to be GCC, so it'll match this condition
++#elif defined(__GNUC__) && defined(__INTPTR_TYPE__) && defined(__UINTPTR_TYPE__)
++
++namespace boost {
++    typedef __INTPTR_TYPE__ intptr_t;
++    typedef __UINTPTR_TYPE__ uintptr_t;
++}
++#define BOOST_HAS_INTPTR_T
++
++#endif
++
++#endif // !defined(__PGIC__)
++
++#endif // BOOST_CSTDINT_HPP
++
++
++/****************************************************
++
++Macro definition section:
++
++Added 23rd September 2000 (John Maddock).
++Modified 11th September 2001 to be excluded when
++BOOST_HAS_STDINT_H is defined (John Maddock).
++Modified 11th Dec 2009 to always define the
++INT#_C macros if they're not already defined (John Maddock).
++
++******************************************************/
++
++#if !defined(BOOST__STDC_CONSTANT_MACROS_DEFINED) && \
++   (!defined(INT8_C) || !defined(INT16_C) || !defined(INT32_C) || !defined(INT64_C))
++//
++// For the following code we get several warnings along the lines of:
++//
++// boost/cstdint.hpp:428:35: error: use of C99 long long integer constant
++//
++// So we declare this a system header to suppress these warnings.
++//
++#if defined(__GNUC__) && (__GNUC__ >= 4)
++#pragma GCC system_header
++#endif
++
++#include <limits.h>
++# define BOOST__STDC_CONSTANT_MACROS_DEFINED
++# if defined(BOOST_HAS_MS_INT64)
++//
++// Borland/Intel/Microsoft compilers have width specific suffixes:
++//
++#ifndef INT8_C
++#  define INT8_C(value)     value##i8
++#endif
++#ifndef INT16_C
++#  define INT16_C(value)    value##i16
++#endif
++#ifndef INT32_C
++#  define INT32_C(value)    value##i32
++#endif
++#ifndef INT64_C
++#  define INT64_C(value)    value##i64
++#endif
++#  ifdef __BORLANDC__
++    // Borland bug: appending ui8 makes the type a signed char
++#   define UINT8_C(value)    static_cast<unsigned char>(value##u)
++#  else
++#   define UINT8_C(value)    value##ui8
++#  endif
++#ifndef UINT16_C
++#  define UINT16_C(value)   value##ui16
++#endif
++#ifndef UINT32_C
++#  define UINT32_C(value)   value##ui32
++#endif
++#ifndef UINT64_C
++#  define UINT64_C(value)   value##ui64
++#endif
++#ifndef INTMAX_C
++#  define INTMAX_C(value)   value##i64
++#  define UINTMAX_C(value)  value##ui64
++#endif
++
++# else
++//  do it the old fashioned way:
++
++//  8-bit types  ------------------------------------------------------------//
++
++#  if (UCHAR_MAX == 0xff) && !defined(INT8_C)
++#   define INT8_C(value) static_cast<boost::int8_t>(value)
++#   define UINT8_C(value) static_cast<boost::uint8_t>(value##u)
++#  endif
++
++//  16-bit types  -----------------------------------------------------------//
++
++#  if (USHRT_MAX == 0xffff) && !defined(INT16_C)
++#   define INT16_C(value) static_cast<boost::int16_t>(value)
++#   define UINT16_C(value) static_cast<boost::uint16_t>(value##u)
++#  endif
++
++//  32-bit types  -----------------------------------------------------------//
++#ifndef INT32_C
++#  if (UINT_MAX == 0xffffffff)
++#   define INT32_C(value) value
++#   define UINT32_C(value) value##u
++#  elif ULONG_MAX == 0xffffffff
++#   define INT32_C(value) value##L
++#   define UINT32_C(value) value##uL
++#  endif
++#endif
++
++//  64-bit types + intmax_t and uintmax_t  ----------------------------------//
++#ifndef INT64_C
++#  if defined(BOOST_HAS_LONG_LONG) && \
++    (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX) || defined(_ULLONG_MAX) || defined(_LLONG_MAX))
++
++#    if defined(__hpux)
++        // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions
++#       define INT64_C(value) value##LL
++#       define UINT64_C(value) value##uLL
++#    elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615ULL) ||  \
++        (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615ULL) ||  \
++        (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615ULL) || \
++        (defined(_ULLONG_MAX) && _ULLONG_MAX == 18446744073709551615ULL) || \
++        (defined(_LLONG_MAX) && _LLONG_MAX == 9223372036854775807LL)
++
++#       define INT64_C(value) value##LL
++#       define UINT64_C(value) value##uLL
++#    else
++#       error defaults not correct; you must hand modify boost/cstdint.hpp
++#    endif
++#  elif ULONG_MAX != 0xffffffff
++
++#    if ULONG_MAX == 18446744073709551615U // 2**64 - 1
++#       define INT64_C(value) value##L
++#       define UINT64_C(value) value##uL
++#    else
++#       error defaults not correct; you must hand modify boost/cstdint.hpp
++#    endif
++#  elif defined(BOOST_HAS_LONG_LONG)
++     // Usual macros not defined, work things out for ourselves:
++#    if(~0uLL == 18446744073709551615ULL)
++#       define INT64_C(value) value##LL
++#       define UINT64_C(value) value##uLL
++#    else
++#       error defaults not correct; you must hand modify boost/cstdint.hpp
++#    endif
++#  else
++#    error defaults not correct; you must hand modify boost/cstdint.hpp
++#  endif
++
++#  ifdef BOOST_NO_INT64_T
++#   define INTMAX_C(value) INT32_C(value)
++#   define UINTMAX_C(value) UINT32_C(value)
++#  else
++#   define INTMAX_C(value) INT64_C(value)
++#   define UINTMAX_C(value) UINT64_C(value)
++#  endif
++#endif
++# endif // Borland/Microsoft specific width suffixes
++
++#endif // INT#_C macros.
+--- /dev/null
++++ b/lib/boost/smart_ptr/detail/sp_counted_base_clang.hpp
+@@ -0,0 +1,140 @@
++#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CLANG_HPP_INCLUDED
++#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CLANG_HPP_INCLUDED
++
++// MS compatible compilers support #pragma once
++
++#if defined(_MSC_VER) && (_MSC_VER >= 1020)
++# pragma once
++#endif
++
++//  detail/sp_counted_base_clang.hpp - __c11 clang intrinsics
++//
++//  Copyright (c) 2007, 2013, 2015 Peter Dimov
++//
++//  Distributed under the Boost Software License, Version 1.0.
++//  See accompanying file LICENSE_1_0.txt or copy at
++//  http://www.boost.org/LICENSE_1_0.txt
++
++#include <boost/detail/sp_typeinfo.hpp>
++#include <boost/cstdint.hpp>
++
++namespace boost
++{
++
++namespace detail
++{
++
++typedef _Atomic( boost::int_least32_t ) atomic_int_least32_t;
++
++inline void atomic_increment( atomic_int_least32_t * pw )
++{
++    __c11_atomic_fetch_add( pw, 1, __ATOMIC_RELAXED );
++}
++
++inline boost::int_least32_t atomic_decrement( atomic_int_least32_t * pw )
++{
++    return __c11_atomic_fetch_sub( pw, 1, __ATOMIC_ACQ_REL );
++}
++
++inline boost::int_least32_t atomic_conditional_increment( atomic_int_least32_t * pw )
++{
++    // long r = *pw;
++    // if( r != 0 ) ++*pw;
++    // return r;
++
++    boost::int_least32_t r = __c11_atomic_load( pw, __ATOMIC_RELAXED );
++
++    for( ;; )
++    {
++        if( r == 0 )
++        {
++            return r;
++        }
++
++        if( __c11_atomic_compare_exchange_weak( pw, &r, r + 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED ) )
++        {
++            return r;
++        }
++    }
++}
++
++class sp_counted_base
++{
++private:
++
++    sp_counted_base( sp_counted_base const & );
++    sp_counted_base & operator= ( sp_counted_base const & );
++
++    atomic_int_least32_t use_count_;	// #shared
++    atomic_int_least32_t weak_count_;	// #weak + (#shared != 0)
++
++public:
++
++    sp_counted_base()
++    {
++        __c11_atomic_init( &use_count_, 1 );
++        __c11_atomic_init( &weak_count_, 1 );
++    }
++
++    virtual ~sp_counted_base() // nothrow
++    {
++    }
++
++    // dispose() is called when use_count_ drops to zero, to release
++    // the resources managed by *this.
++
++    virtual void dispose() = 0; // nothrow
++
++    // destroy() is called when weak_count_ drops to zero.
++
++    virtual void destroy() // nothrow
++    {
++        delete this;
++    }
++
++    virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
++    virtual void * get_untyped_deleter() = 0;
++
++    void add_ref_copy()
++    {
++        atomic_increment( &use_count_ );
++    }
++
++    bool add_ref_lock() // true on success
++    {
++        return atomic_conditional_increment( &use_count_ ) != 0;
++    }
++
++    void release() // nothrow
++    {
++        if( atomic_decrement( &use_count_ ) == 1 )
++        {
++            dispose();
++            weak_release();
++        }
++    }
++
++    void weak_add_ref() // nothrow
++    {
++        atomic_increment( &weak_count_ );
++    }
++
++    void weak_release() // nothrow
++    {
++        if( atomic_decrement( &weak_count_ ) == 1 )
++        {
++            destroy();
++        }
++    }
++
++    long use_count() const // nothrow
++    {
++        return __c11_atomic_load( const_cast< atomic_int_least32_t* >( &use_count_ ), __ATOMIC_ACQUIRE );
++    }
++};
++
++} // namespace detail
++
++} // namespace boost
++
++#endif  // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CLANG_HPP_INCLUDED
+--- /dev/null
++++ b/lib/boost/smart_ptr/detail/sp_counted_base_sync.hpp
+@@ -0,0 +1,156 @@
++#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SYNC_HPP_INCLUDED
++#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SYNC_HPP_INCLUDED
++
++// MS compatible compilers support #pragma once
++
++#if defined(_MSC_VER) && (_MSC_VER >= 1020)
++# pragma once
++#endif
++
++//  detail/sp_counted_base_sync.hpp - g++ 4.1+ __sync intrinsics
++//
++//  Copyright (c) 2007 Peter Dimov
++//
++//  Distributed under the Boost Software License, Version 1.0.
++//  See accompanying file LICENSE_1_0.txt or copy at
++//  http://www.boost.org/LICENSE_1_0.txt
++
++#include <boost/detail/sp_typeinfo.hpp>
++#include <limits.h>
++
++#if defined( __ia64__ ) && defined( __INTEL_COMPILER )
++# include <ia64intrin.h>
++#endif
++
++namespace boost
++{
++
++namespace detail
++{
++
++#if INT_MAX >= 2147483647
++
++typedef int sp_int32_t;
++
++#else
++
++typedef long sp_int32_t;
++
++#endif
++
++inline void atomic_increment( sp_int32_t * pw )
++{
++    __sync_fetch_and_add( pw, 1 );
++}
++
++inline sp_int32_t atomic_decrement( sp_int32_t * pw )
++{
++    return __sync_fetch_and_add( pw, -1 );
++}
++
++inline sp_int32_t atomic_conditional_increment( sp_int32_t * pw )
++{
++    // long r = *pw;
++    // if( r != 0 ) ++*pw;
++    // return r;
++
++    sp_int32_t r = *pw;
++
++    for( ;; )
++    {
++        if( r == 0 )
++        {
++            return r;
++        }
++
++        sp_int32_t r2 = __sync_val_compare_and_swap( pw, r, r + 1 );
++
++        if( r2 == r )
++        {
++            return r;
++        }
++        else
++        {
++            r = r2;
++        }
++    }
++}
++
++class sp_counted_base
++{
++private:
++
++    sp_counted_base( sp_counted_base const & );
++    sp_counted_base & operator= ( sp_counted_base const & );
++
++    sp_int32_t use_count_;        // #shared
++    sp_int32_t weak_count_;       // #weak + (#shared != 0)
++
++public:
++
++    sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
++    {
++    }
++
++    virtual ~sp_counted_base() // nothrow
++    {
++    }
++
++    // dispose() is called when use_count_ drops to zero, to release
++    // the resources managed by *this.
++
++    virtual void dispose() = 0; // nothrow
++
++    // destroy() is called when weak_count_ drops to zero.
++
++    virtual void destroy() // nothrow
++    {
++        delete this;
++    }
++
++    virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
++    virtual void * get_untyped_deleter() = 0;
++
++    void add_ref_copy()
++    {
++        atomic_increment( &use_count_ );
++    }
++
++    bool add_ref_lock() // true on success
++    {
++        return atomic_conditional_increment( &use_count_ ) != 0;
++    }
++
++    void release() // nothrow
++    {
++        if( atomic_decrement( &use_count_ ) == 1 )
++        {
++            dispose();
++            weak_release();
++        }
++    }
++
++    void weak_add_ref() // nothrow
++    {
++        atomic_increment( &weak_count_ );
++    }
++
++    void weak_release() // nothrow
++    {
++        if( atomic_decrement( &weak_count_ ) == 1 )
++        {
++            destroy();
++        }
++    }
++
++    long use_count() const // nothrow
++    {
++        return const_cast< sp_int32_t const volatile & >( use_count_ );
++    }
++};
++
++} // namespace detail
++
++} // namespace boost
++
++#endif  // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SYNC_HPP_INCLUDED
+--- /dev/null
++++ b/lib/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp
+@@ -0,0 +1,182 @@
++#ifndef BOOST_DETAIL_SP_COUNTED_BASE_GCC_MIPS_HPP_INCLUDED
++#define BOOST_DETAIL_SP_COUNTED_BASE_GCC_MIPS_HPP_INCLUDED
++
++// MS compatible compilers support #pragma once
++
++#if defined(_MSC_VER) && (_MSC_VER >= 1020)
++# pragma once
++#endif
++
++//
++//  detail/sp_counted_base_gcc_mips.hpp - g++ on MIPS
++//
++//  Copyright (c) 2009, Spirent Communications, Inc.
++//
++//  Distributed under the Boost Software License, Version 1.0. (See
++//  accompanying file LICENSE_1_0.txt or copy at
++//  http://www.boost.org/LICENSE_1_0.txt)
++//
++//
++//  Lock-free algorithm by Alexander Terekhov
++//
++
++#include <boost/detail/sp_typeinfo.hpp>
++
++namespace boost
++{
++
++namespace detail
++{
++
++inline void atomic_increment( int * pw )
++{
++    // ++*pw;
++
++    int tmp;
++
++    __asm__ __volatile__
++    (
++        "0:\n\t"
++        ".set push\n\t"
++        ".set mips2\n\t"
++        "ll %0, %1\n\t"
++        "addiu %0, 1\n\t"
++        "sc %0, %1\n\t"
++        ".set pop\n\t"
++        "beqz %0, 0b":
++        "=&r"( tmp ), "=m"( *pw ):
++        "m"( *pw )
++    );
++}
++
++inline int atomic_decrement( int * pw )
++{
++    // return --*pw;
++
++    int rv, tmp;
++
++    __asm__ __volatile__
++    (
++        "0:\n\t"
++        ".set push\n\t"
++        ".set mips2\n\t"
++        "ll %1, %2\n\t"
++        "addiu %0, %1, -1\n\t"
++        "sc %0, %2\n\t"
++        ".set pop\n\t"
++        "beqz %0, 0b\n\t"
++        "addiu %0, %1, -1":
++        "=&r"( rv ), "=&r"( tmp ), "=m"( *pw ):
++        "m"( *pw ):
++        "memory"
++    );
++
++    return rv;
++}
++
++inline int atomic_conditional_increment( int * pw )
++{
++    // if( *pw != 0 ) ++*pw;
++    // return *pw;
++
++    int rv, tmp;
++
++    __asm__ __volatile__
++    (
++        "0:\n\t"
++        ".set push\n\t"
++        ".set mips2\n\t"
++        "ll %0, %2\n\t"
++        "beqz %0, 1f\n\t"
++        "addiu %1, %0, 1\n\t"
++        "sc %1, %2\n\t"
++        ".set pop\n\t"
++        "beqz %1, 0b\n\t"
++        "addiu %0, %0, 1\n\t"
++        "1:":
++        "=&r"( rv ), "=&r"( tmp ), "=m"( *pw ):
++        "m"( *pw ):
++        "memory"
++    );
++
++    return rv;
++}
++
++class sp_counted_base
++{
++private:
++
++    sp_counted_base( sp_counted_base const & );
++    sp_counted_base & operator= ( sp_counted_base const & );
++
++    int use_count_;        // #shared
++    int weak_count_;       // #weak + (#shared != 0)
++
++public:
++
++    sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
++    {
++    }
++
++    virtual ~sp_counted_base() // nothrow
++    {
++    }
++
++    // dispose() is called when use_count_ drops to zero, to release
++    // the resources managed by *this.
++
++    virtual void dispose() = 0; // nothrow
++
++    // destroy() is called when weak_count_ drops to zero.
++
++    virtual void destroy() // nothrow
++    {
++        delete this;
++    }
++
++    virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
++    virtual void * get_untyped_deleter() = 0;
++
++    void add_ref_copy()
++    {
++        atomic_increment( &use_count_ );
++    }
++
++    bool add_ref_lock() // true on success
++    {
++        return atomic_conditional_increment( &use_count_ ) != 0;
++    }
++
++    void release() // nothrow
++    {
++        if( atomic_decrement( &use_count_ ) == 0 )
++        {
++            dispose();
++            weak_release();
++        }
++    }
++
++    void weak_add_ref() // nothrow
++    {
++        atomic_increment( &weak_count_ );
++    }
++
++    void weak_release() // nothrow
++    {
++        if( atomic_decrement( &weak_count_ ) == 0 )
++        {
++            destroy();
++        }
++    }
++
++    long use_count() const // nothrow
++    {
++        return static_cast<int const volatile &>( use_count_ );
++    }
++};
++
++} // namespace detail
++
++} // namespace boost
++
++#endif  // #ifndef BOOST_DETAIL_SP_COUNTED_BASE_GCC_MIPS_HPP_INCLUDED
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-Replace-canonicalize_file_name-with-realpath-API.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-Replace-canonicalize_file_name-with-realpath-API.patch
deleted file mode 100644
index 98cd40c..0000000
--- a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-Replace-canonicalize_file_name-with-realpath-API.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 781288d6307002cce70ddafb6efb200b7f60294d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Jun 2017 22:12:43 -0700
-Subject: [PATCH 3/6] Replace canonicalize_file_name with realpath() API
-
-Fixed build on musl where canonicalize_file_name is not implemented
-
-filesystem.cpp:46:15: error: 'canonicalize_file_name' was not declared in this scope
-     char *p = canonicalize_file_name(path);
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/engine/filesystem.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/engine/filesystem.cpp b/lib/engine/filesystem.cpp
-index b99257e..6064837 100644
---- a/lib/engine/filesystem.cpp
-+++ b/lib/engine/filesystem.cpp
-@@ -43,7 +43,7 @@ void CanonicalPath::__canonicalize_path_name(const char *path)
-     if (path == 0) {
-         throw E_NULL_POINTER;
-     }
--    char *p = canonicalize_file_name(path);
-+    char *p = realpath(path, NULL);
-     assign(p);
-     if (p) {
-         free(p);
--- 
-2.13.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-engine-Define-discover-const-String-path-in-base-cla.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-engine-Define-discover-const-String-path-in-base-cla.patch
new file mode 100644
index 0000000..2613584
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-engine-Define-discover-const-String-path-in-base-cla.patch
@@ -0,0 +1,47 @@
+From 24e0f55c07080a59907c190a315e279f7b2355e5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 29 Aug 2019 14:25:02 -0700
+Subject: [PATCH 3/4] engine: Define discover(const String &path) in base class
+
+this fixes the confusion that compiler may have when inheriting two
+different classes where each of them defines discover() virtual function
+but with different signatures
+
+Remove ununsed orom_vmd
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/engine/storage_object.h | 3 +++
+ lib/engine/vmd_raid_info.h  | 2 --
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/lib/engine/storage_object.h b/lib/engine/storage_object.h
+index f1feb62..9c1d3d8 100644
+--- a/lib/engine/storage_object.h
++++ b/lib/engine/storage_object.h
+@@ -123,6 +123,9 @@ public:
+     virtual void discover() {
+         throw E_INVALID_OPERATION;
+     }
++    virtual void discover(const String &path) {
++        throw E_INVALID_OPERATION;
++    }
+     virtual void addToSession(const boost::shared_ptr<Session>& pSession) = 0;
+ };
+ 
+diff --git a/lib/engine/vmd_raid_info.h b/lib/engine/vmd_raid_info.h
+index 2bea839..cc6ffbe 100644
+--- a/lib/engine/vmd_raid_info.h
++++ b/lib/engine/vmd_raid_info.h
+@@ -53,8 +53,6 @@ public:
+         return SSI_ControllerTypeVMD;
+     }
+ 
+-private:
+-    struct orom_info orom_vmd;
+ };
+ 
+ #endif /* __VMD_RAID_INFO_H__INCLUDED__ */
+-- 
+2.23.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-replace-canonicalize_file_name-with-realpath.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-replace-canonicalize_file_name-with-realpath.patch
new file mode 100644
index 0000000..848d38b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-replace-canonicalize_file_name-with-realpath.patch
@@ -0,0 +1,43 @@
+From c817db76bb63b872fe2069e3c2449ac18affe8c1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 30 Aug 2019 13:17:38 -0700
+Subject: [PATCH] replace canonicalize_file_name with realpath
+
+Use 'realpath()' (BSD, POSIX) instead of
+'canonicalize_file_name()' (GNU extension).
+
+Fixes
+error: use of undeclared identifier 'canonicalize_file_name'
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/engine/filesystem.cpp | 2 +-
+ tools/ssieventmonitor.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/engine/filesystem.cpp b/lib/engine/filesystem.cpp
+index bf5a776..194ab8a 100644
+--- a/lib/engine/filesystem.cpp
++++ b/lib/engine/filesystem.cpp
+@@ -54,7 +54,7 @@ void CanonicalPath::__canonicalize_path_name(const char *path)
+     if (path == NULL) {
+         throw E_NULL_POINTER;
+     }
+-    char *p = canonicalize_file_name(path);
++    char *p = realpath(path, (char *)0);
+     assign(p);
+     if (p) {
+         free(p);
+diff --git a/tools/ssieventmonitor.cpp b/tools/ssieventmonitor.cpp
+index 80791fd..3eed877 100644
+--- a/tools/ssieventmonitor.cpp
++++ b/tools/ssieventmonitor.cpp
+@@ -120,7 +120,7 @@ static int _exec_ssimsg(void)
+     int status;
+     switch (pid) {
+         case 0: {
+-            cp = canonicalize_file_name("/proc/self/exe");
++            cp = realpath("/proc/self/exe", (char *)0);
+             if (cp) {
+                 strcpy_s(buffer, sizeof(buffer), cp);
+                 free(cp);
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-Do-not-override-flags-coming-from-build-environment.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-Do-not-override-flags-coming-from-build-environment.patch
new file mode 100644
index 0000000..ca2ffc5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-Do-not-override-flags-coming-from-build-environment.patch
@@ -0,0 +1,33 @@
+From 98fad8128d0f3b65619827ee5d65f7767b080c4c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 29 Aug 2019 14:35:16 -0700
+Subject: [PATCH 4/4] Do not override flags coming from build environment
+
+e.g. we need some optimization level turned on when security flags are enabled
+without this change, the build would fail
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 34e41ea..9bd0fe3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -16,9 +16,9 @@ AM_INIT_AUTOMAKE(ssi, ${VERSION})
+ AM_CONFIG_HEADER(config.h)
+ 
+ dnl Set the language we use
+-CPPFLAGS="-g3 -gdwarf-2 -Wall -Werror -fvisibility=hidden -D_GNU_SOURCE -O3 -fstack-protector -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fPIC"
+-CFLAGS="-std=gnu99 -fstack-protector -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fPIC"
+-CXXFLAGS="-std=gnu++98 -fvisibility-inlines-hidden -O3 -fstack-protector -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fPIC"
++#CPPFLAGS="-g3 -gdwarf-2 -Wall -Werror -fvisibility=hidden -D_GNU_SOURCE -O3 -fstack-protector -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fPIC"
++#CFLAGS="-std=gnu99 -fstack-protector -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fPIC"
++#CXXFLAGS="-std=gnu++98 -fvisibility-inlines-hidden -O3 -fstack-protector -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fPIC"
+ 
+ dnl Automake 1.11 - silent build rules
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+-- 
+2.23.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-engine-Fix-indentation-and-missing-semi-colon.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-engine-Fix-indentation-and-missing-semi-colon.patch
deleted file mode 100644
index 7dce0da..0000000
--- a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-engine-Fix-indentation-and-missing-semi-colon.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 04e8b99d8195a0e39982ecd27802421610633724 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Jun 2017 22:18:31 -0700
-Subject: [PATCH 4/6] engine: Fix indentation and missing semi-colon
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/engine/mdadm_config.cpp      | 5 +++--
- lib/engine/unique_id_manager.cpp | 2 +-
- 2 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/lib/engine/mdadm_config.cpp b/lib/engine/mdadm_config.cpp
-index 1914ddc..e40c2c7 100644
---- a/lib/engine/mdadm_config.cpp
-+++ b/lib/engine/mdadm_config.cpp
-@@ -118,9 +118,10 @@ void check_configuration()
-         attr >> config;
-         configOk = correct_config(config);
-     } catch (Exception ex) {
--        if (ex != E_NOT_FOUND)
-+        if (ex != E_NOT_FOUND) {
-             dlog("Warning: mdadm config file cannot be read, new one will be written");
-             backup = false;
-+        }
-     }
- 
-     if (configOk && monitor_running()) {
-@@ -134,7 +135,7 @@ void check_configuration()
-             dlog("Warning: failed to update mdadm.conf");
-     }
-     if (restart_monitor() == 0)
--        dlog("Monitor restarted successfully")
-+        dlog("Monitor restarted successfully");
-     else
-         dlog("Error starting Monitor");
- }
-diff --git a/lib/engine/unique_id_manager.cpp b/lib/engine/unique_id_manager.cpp
-index 99c153c..87d6ddc 100644
---- a/lib/engine/unique_id_manager.cpp
-+++ b/lib/engine/unique_id_manager.cpp
-@@ -185,7 +185,7 @@ void UniqueIdManager::refresh()
-         keyFile >> keyList;
-         keyList += "\n";
-     } catch (...) {
--        dlog("ssi.keys file missing")
-+        dlog("ssi.keys file missing");
-         /* no file? that's ok */
-     }
-     /* process the list to update IdCaches */
--- 
-2.13.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-include-limits.h.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-include-limits.h.patch
new file mode 100644
index 0000000..d63eb50
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-include-limits.h.patch
@@ -0,0 +1,25 @@
+From e90101128dfe75b9b1a0575a0179d211f677e6ad Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 30 Aug 2019 13:19:50 -0700
+Subject: [PATCH] include limits.h
+
+Fixes
+error: use of undeclared identifier 'PATH_MAX'
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ tools/ssieventmonitor.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tools/ssieventmonitor.cpp b/tools/ssieventmonitor.cpp
+index 3eed877..0d11975 100644
+--- a/tools/ssieventmonitor.cpp
++++ b/tools/ssieventmonitor.cpp
+@@ -34,6 +34,7 @@
+ #include <unistd.h>
+ #include <dirent.h>
+ #include <errno.h>
++#include <limits.h>
+ #include <sys/fcntl.h>
+ #include <sys/select.h>
+ #include <sys/wait.h>
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0005-enable-out-of-source-tree-builds.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0005-enable-out-of-source-tree-builds.patch
new file mode 100644
index 0000000..c516f65
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0005-enable-out-of-source-tree-builds.patch
@@ -0,0 +1,228 @@
+From 3ec4eaf1688e413e8b5cb433148a3bc6e7987606 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 29 Aug 2019 15:10:03 -0700
+Subject: [PATCH] enable out of source tree builds
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/efi/Makefile.am      |  2 +-
+ lib/engine/Makefile.am   |  2 +-
+ lib/orom/Makefile.am     |  2 +-
+ lib/safeclib/Makefile.am |  2 +-
+ src/Makefile.am          | 16 ++++++++--------
+ tools/Makefile.am        | 10 +++++-----
+ ut/Makefile.am           | 36 ++++++++++++++++++------------------
+ 7 files changed, 35 insertions(+), 35 deletions(-)
+
+--- a/lib/efi/Makefile.am
++++ b/lib/efi/Makefile.am
+@@ -7,6 +7,6 @@ libefi_la_SOURCES =             \
+     efi.h
+ 
+ libefi_la_CPPFLAGS =            \
+-        -I$(top_srcdir)         \
++        -I$(top_builddir)       \
+         -I$(top_srcdir)/include \
+         -I$(top_srcdir)/lib
+--- a/lib/engine/Makefile.am
++++ b/lib/engine/Makefile.am
+@@ -123,6 +123,7 @@ libengine_la_SOURCES =          \
+         volume.h
+ 
+ libengine_la_CPPFLAGS =         \
++        -I$(top_builddir)       \
+         -I$(top_srcdir)         \
+         -I$(top_srcdir)/include \
+         -I$(top_srcdir)/lib
+--- a/lib/orom/Makefile.am
++++ b/lib/orom/Makefile.am
+@@ -7,6 +7,6 @@ liborom_la_SOURCES =            \
+     orom.h
+ 
+ liborom_la_CPPFLAGS =           \
+-        -I$(top_srcdir)         \
++        -I$(top_builddir)       \
+         -I$(top_srcdir)/include \
+         -I$(top_srcdir)/lib
+--- a/lib/safeclib/Makefile.am
++++ b/lib/safeclib/Makefile.am
+@@ -37,7 +37,7 @@ libsafec_la_SOURCES =		\
+ 	strtok_s.c
+ 
+ libsafec_la_CPPFLAGS =		\
+-        -I$(top_srcdir)			\
++        -I$(top_builddir)		\
+         -I$(top_srcdir)/include		\
+         -I$(top_srcdir)/lib		\
+ 	-Wno-unused-variable
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -5,7 +5,7 @@ AUTOMAKE_OPTIONS = nostdinc
+ lib_LTLIBRARIES = libssi.la
+ 
+ libssi_la_CPPFLAGS =                    \
+-        -I$(top_srcdir)                 \
++        -I$(top_builddir)               \
+         -I$(top_srcdir)/include         \
+         -I$(top_srcdir)/lib             \
+         -DBOOST_NO_USER_CONFIG
+@@ -46,10 +46,10 @@ libssi_la_SOURCES =
+         templates.h                     \
+         volume.cpp
+ 
+-libssi_la_LIBADD =                      \
+-        ../lib/efi/libefi.la            \
+-        ../lib/log/liblog.la            \
+-        ../lib/orom/liborom.la          \
+-        ../lib/mpb/libmpb.la            \
+-        ../lib/engine/libengine.la      \
+-        ../lib/safeclib/libsafec.la
++libssi_la_LIBADD =                                   \
++        $(top_builddir)/lib/efi/libefi.la            \
++        $(top_builddir)/lib/log/liblog.la            \
++        $(top_builddir)/lib/orom/liborom.la          \
++        $(top_builddir)/lib/mpb/libmpb.la            \
++        $(top_builddir)/lib/engine/libengine.la      \
++        $(top_builddir)/lib/safeclib/libsafec.la
+--- a/tools/Makefile.am
++++ b/tools/Makefile.am
+@@ -6,17 +6,18 @@ ssimsg_SOURCES =
+         ssimsg.cpp
+ 
+ ssimsg_CPPFLAGS =                       \
+-        -I$(top_srcdir)                 \
++        -I$(top_builddir)               \
+         -I$(top_srcdir)/include         \
+         -I$(top_srcdir)/lib
+ 
+-ssieventmonitor_SOURCES =                 \
++ssieventmonitor_SOURCES =               \
+         ssieventmonitor.cpp
+ 
+-ssieventmonitor_CPPFLAGS =                \
++ssieventmonitor_CPPFLAGS =              \
++        -I$(top_builddir)               \
+         -I$(top_srcdir)                 \
+         -I$(top_srcdir)/include         \
+         -I$(top_srcdir)/lib
+ 
+ ssieventmonitor_LDADD =			\
+-	$(top_srcdir)/lib/safeclib/libsafec.la
++	$(top_builddir)/lib/safeclib/libsafec.la
+--- a/ut/Makefile.am
++++ b/ut/Makefile.am
+@@ -8,81 +8,81 @@ ut_events_SOURCES = \
+ 	ut_events.cpp
+ 
+ ut_events_CPPFLAGS = \
+-	-I$(top_srcdir) \
++	-I$(top_builddir) \
+ 	-I$(top_srcdir)/include
+ 
+ ut_events_LDADD = \
+-	../src/libssi.la
++	$(top_builddir)/src/libssi.la
+ 
+ ut_volume_SOURCES = \
+ 	ut_volume.cpp
+ 
+ ut_volume_CPPFLAGS = \
+-	-I$(top_srcdir) \
++	-I$(top_builddir) \
+ 	-I$(top_srcdir)/include
+ 
+ ut_volume_LDADD = \
+-	../src/libssi.la
++	$(top_builddir)/src/libssi.la
+ 
+ ut_session_SOURCES = \
+ 	ut_session.cpp
+ 
+ ut_session_CPPFLAGS = \
+-	-g3 -I$(top_srcdir) \
++	-g3 -I$(top_builddir) \
+ 	-I$(top_srcdir)/include
+ 
+ ut_session_LDADD = \
+-	../src/libssi.la
++	$(top_builddir)/src/libssi.la
+ 
+ ut_info_SOURCES = \
+ 	ut_info.cpp
+ 
+ ut_info_CPPFLAGS = \
+-	-g3 -I$(top_srcdir) \
++	-g3 -I$(top_builddir) \
+ 	-I$(top_srcdir)/include
+ 
+ ut_info_LDADD = \
+-	../src/libssi.la
++	$(top_builddir)/src/libssi.la
+ 
+ ut_markasspare_SOURCES = \
+ 	ut_markasspare.cpp
+ 
+ ut_markasspare_CPPFLAGS = \
+-	-g3 -I$(top_srcdir) \
++	-g3 -I$(top_builddir) \
+ 	-I$(top_srcdir)/include
+ 
+ ut_markasspare_LDADD = \
+-	../src/libssi.la
++	$(top_builddir)/src/libssi.la
+ 
+ ut_migration_SOURCES = \
+ 	ut_migration.cpp
+ 
+ ut_migration_CPPFLAGS = \
+-	-g3 -I$(top_srcdir) \
++	-g3 -I$(top_builddir) \
+ 	-I$(top_srcdir)/include
+ 
+ ut_migration_LDADD = \
+-	../src/libssi.la
++	$(top_builddir)/src/libssi.la
+ 
+ ut_phy_SOURCES = \
+ 	ut_phy.cpp
+ 
+ ut_phy_CPPFLAGS = \
+-	-g3 -I$(top_srcdir) \
++	-g3 -I$(top_builddir) \
+ 	-I$(top_srcdir)/include
+ 
+ ut_phy_LDADD = \
+-	../src/libssi.la
++	$(top_builddir)/src/libssi.la
+ 
+ ut_initialize_volume_SOURCES = \
+ 	ut_initialize_volume.cpp
+ 
+ ut_initialize_volume_CPPFLAGS = \
+-	-g3 -I$(top_srcdir) \
++	-g3 -I$(top_builddir) \
+ 	-I$(top_srcdir)/include
+ 
+ ut_initialize_volume_LDADD = \
+-	../src/libssi.la
++	$(top_builddir)/src/libssi.la
+ 
+ ut_filesystem_SOURCES = \
+ 	ut_filesystem.cpp \
+@@ -92,7 +92,7 @@ ut_filesystem_SOURCES = \
+ 
+ ut_filesystem_CPPFLAGS = \
+ 	-iquote $(top_srcdir)/lib/engine \
+-	-I$(top_srcdir) \
++	-I$(top_builddir) \
+ 	-I$(top_srcdir)/include
+ 
+ ut_string_SOURCES = \
+@@ -103,6 +103,6 @@ ut_string_SOURCES = \
+ 
+ ut_string_CPPFLAGS = \
+ 	-iquote $(top_srcdir)/lib/engine \
+-	-I$(top_srcdir) \
++	-I$(top_builddir) \
+ 	-I$(top_srcdir)/include
+ 
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0005-engine-Define-SENTINEL.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0005-engine-Define-SENTINEL.patch
deleted file mode 100644
index 6f4dbf1..0000000
--- a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0005-engine-Define-SENTINEL.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From a2e3a2e332c406ea3c56a8d74b61978107df68e6 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Jun 2017 22:23:08 -0700
-Subject: [PATCH 5/6] engine: Define SENTINEL
-
-Fix warnings with gcc7
-test.cpp:12: warning: missing sentinel in function call
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/engine/utils.cpp | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/lib/engine/utils.cpp b/lib/engine/utils.cpp
-index 44579a1..8812a8c 100644
---- a/lib/engine/utils.cpp
-+++ b/lib/engine/utils.cpp
-@@ -35,7 +35,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- #include "filesystem.h"
- #include "utils.h"
- #include "log/log.h"
--
-+#define SENTINEL (const char *)0
- /**
-  * @brief capture shell output as binary data
-  *
-@@ -139,7 +139,7 @@ int shell(const String &s)
-          * Before switching into new executable close all non standard
-          * file handlers.*/
-         close_parent_fds();
--        execl("/bin/sh", "sh", "-c", cmd.get(), NULL);
-+        execl("/bin/sh", "sh", "-c", cmd.get(), SENTINEL);
-         /* If we're here then execl failed*/
-         exit(-1);
-         break;
--- 
-2.13.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0006-tools-Add-missing-includes-and-use-realpath-instead-.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0006-tools-Add-missing-includes-and-use-realpath-instead-.patch
deleted file mode 100644
index a7b70e3..0000000
--- a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0006-tools-Add-missing-includes-and-use-realpath-instead-.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From df1d56d6b6a6b15d0137619eb8a4b623de6c9633 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Jun 2017 22:28:59 -0700
-Subject: [PATCH 6/6] tools: Add missing includes and use realpath() instead of
- canonicalize_file_name
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- tools/ssieventmonitor.cpp | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/tools/ssieventmonitor.cpp b/tools/ssieventmonitor.cpp
-index 0553386..f04b8f0 100644
---- a/tools/ssieventmonitor.cpp
-+++ b/tools/ssieventmonitor.cpp
-@@ -18,7 +18,9 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- #include <unistd.h>
- #include <dirent.h>
- #include <errno.h>
--#include <sys/fcntl.h>
-+#include <limits.h>
-+#include <fcntl.h>
-+#include <libgen.h>
- #include <sys/select.h>
- #include <sys/wait.h>
- #include <sys/inotify.h>
-@@ -99,7 +101,7 @@ static int _exec_ssimsg(void)
-     int status;
-     switch (pid) {
- 	case 0: {
--	    cp = canonicalize_file_name("/proc/self/exe");
-+	    cp = realpath("/proc/self/exe", NULL);
- 	    if (cp) {
- 		strcpy(buffer, cp);
- 		free(cp);
--- 
-2.13.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/configure-cflags.patch b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/configure-cflags.patch
deleted file mode 100644
index d45be59..0000000
--- a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/configure-cflags.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Do not override flags thereby respect the flags coming from environment,
-e.g. we need some optimization level turned on when security flags are enabled
-without this change, the build would fail
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Index: ssiapi.1.0.1/configure.ac
-===================================================================
---- ssiapi.1.0.1.orig/configure.ac
-+++ ssiapi.1.0.1/configure.ac
-@@ -15,11 +15,6 @@ AC_SUBST(VERSION)
- AM_INIT_AUTOMAKE(ssi, ${VERSION})
- AM_CONFIG_HEADER(config.h)
- 
--dnl Set the language we use
--CPPFLAGS="-g3 -gdwarf-2 -Wall -Werror -D_GNU_SOURCE"
--CFLAGS="-std=gnu99"
--CXXFLAGS="-std=gnu++98"
--
- dnl Automake 1.11 - silent build rules
- m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
- 
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi_1.0.1.bb b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi_1.0.1.bb
deleted file mode 100644
index 5eb4696..0000000
--- a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi_1.0.1.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "Intel RSTe with Linux OS SSI API Library"
-
-DESCRIPTION = "Intel Rapid Storage Technology enterprise with Linux OS* Standard Storage Interface API Library. \
-The library allows user to manage storage devices including creating and managing Raid arrays on systems with Intel chipset."
-
-HOMEPAGE = "http://irstessi.sourceforge.net/"
-
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0413ff365e0bd733c4869a6797551c6f"
-
-DEPENDS += "sg3-utils"
-
-SRC_URI = "http://sourceforge.net/projects/irstessi/files/${BPN}.${PV}.tgz \
-           file://0001-Use-pragma-once-unconditionally.patch \
-           file://0002-Convert-macros-into-functions.patch \
-           file://0003-Replace-canonicalize_file_name-with-realpath-API.patch \
-           file://0004-engine-Fix-indentation-and-missing-semi-colon.patch \
-           file://0005-engine-Define-SENTINEL.patch \
-           file://0006-tools-Add-missing-includes-and-use-realpath-instead-.patch \
-           file://configure-cflags.patch \
-           file://0001-ssieventmonitor-ordered-comparison-between-pointers-.patch \
-           "
-SRC_URI[md5sum] = "02f16d7cbd30d28034093212906591f5"
-SRC_URI[sha256sum] = "e10d283b0f211afb8ebd0bde87c097769613d30a052cdf164753e35e803264c7"
-
-S ="${WORKDIR}/${BPN}.${PV}"
-
-inherit autotools-brokensep
-CXXFLAGS="-std=gnu++98 -D_GNU_SOURCE"
-
-do_configure_prepend(){
-    ./autogen.sh
-}
-
-RDEPENDS_${PN} += "mdadm"
diff --git a/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi_1.3.0.bb b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi_1.3.0.bb
new file mode 100644
index 0000000..eb08681
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi_1.3.0.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Intel RSTe with Linux OS SSI API Library"
+
+DESCRIPTION = "Intel Rapid Storage Technology enterprise with Linux OS* Standard Storage Interface API Library. \
+The library allows user to manage storage devices including creating and managing Raid arrays on systems with Intel chipset."
+
+HOMEPAGE = "http://irstessi.sourceforge.net/"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9d701a2fbb56039fd64afb2262008ddb"
+
+DEPENDS += "sg3-utils"
+
+SRC_URI = "http://sourceforge.net/projects/irstessi/files/${BPN}.${PV}.tgz \
+           file://0001-log-Avoid-shadowing-functions-from-std-lib.patch \
+           file://0002-boost-Backport-clang-support.patch \
+           file://0003-engine-Define-discover-const-String-path-in-base-cla.patch \
+           file://0004-Do-not-override-flags-coming-from-build-environment.patch \
+           file://0005-enable-out-of-source-tree-builds.patch \
+           file://0001-Don-t-use-__GNUC_PREREQ.patch \
+           file://0002-Use-stangard-int-types.patch \
+           file://0003-replace-canonicalize_file_name-with-realpath.patch \
+           file://0004-include-limits.h.patch \
+           file://0001-Include-libgen.h.patch \
+           "
+SRC_URI[md5sum] = "d06c9b426437a7697d77266e9835b520"
+SRC_URI[sha256sum] = "59daab29363d6e9f07c524029c4239653cfbbee6b0e57fd75df62499728dad8a"
+
+S ="${WORKDIR}/${BPN}.${PV}"
+
+inherit autotools
+
+do_configure_prepend(){
+    ${S}/autogen.sh
+}
+
+RDEPENDS_${PN} += "mdadm"
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Fix-issue-599.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Fix-issue-599.patch
deleted file mode 100644
index 2a9ea74..0000000
--- a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Fix-issue-599.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 1dd07113f2a7489444a8990a95be42e035f8e9df Mon Sep 17 00:00:00 2001
-From: Kurt Roeckx <kroeckx@debian.org>
-Date: Tue, 1 Nov 2016 12:57:35 +0100
-Subject: [PATCH] Fix issue #599
-Forwarded: https://github.com/zaphoyd/websocketpp/pull/600
-
----
- websocketpp/transport/asio/security/tls.hpp | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/websocketpp/transport/asio/security/tls.hpp b/websocketpp/transport/asio/security/tls.hpp
-index 7b32db8..a8aafec 100644
---- a/websocketpp/transport/asio/security/tls.hpp
-+++ b/websocketpp/transport/asio/security/tls.hpp
-@@ -355,13 +355,9 @@ protected:
-     template <typename ErrorCodeType>
-     lib::error_code translate_ec(ErrorCodeType ec) {
-         if (ec.category() == lib::asio::error::get_ssl_category()) {
--            if (ERR_GET_REASON(ec.value()) == SSL_R_SHORT_READ) {
--                return make_error_code(transport::error::tls_short_read);
--            } else {
-                 // We know it is a TLS related error, but otherwise don't know
-                 // more. Pass through as TLS generic.
-                 return make_error_code(transport::error::tls_error);
--            }
-         } else {
-             // We don't know any more information about this error so pass
-             // through
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Replace-make_shared-with-new-in-some-cases.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Replace-make_shared-with-new-in-some-cases.patch
new file mode 100644
index 0000000..0c8285d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Replace-make_shared-with-new-in-some-cases.patch
@@ -0,0 +1,78 @@
+From 080fc37949114184d4832f7acffe2613745833f3 Mon Sep 17 00:00:00 2001
+From: Stefan Floeren <42731906+stefan-floeren@users.noreply.github.com>
+Date: Tue, 16 Apr 2019 08:38:01 +0200
+Subject: [PATCH 1/2] Replace make_shared with new in some cases
+
+Replace make_shared for asio types that take a lib::ref as a parameter.
+This should fix the ASIO change (boostorg/asio@59066d8) for 1.70,
+while keeping it backwards compatible to older boost versions.
+---
+ websocketpp/transport/asio/connection.hpp    | 7 ++++---
+ websocketpp/transport/asio/endpoint.hpp      | 3 +--
+ websocketpp/transport/asio/security/none.hpp | 3 +--
+ websocketpp/transport/asio/security/tls.hpp  | 3 +--
+ 4 files changed, 7 insertions(+), 9 deletions(-)
+
+diff --git a/websocketpp/transport/asio/connection.hpp b/websocketpp/transport/asio/connection.hpp
+index 60f88a7..1ccda8f 100644
+--- a/websocketpp/transport/asio/connection.hpp
++++ b/websocketpp/transport/asio/connection.hpp
+@@ -311,9 +311,10 @@ public:
+      * needed.
+      */
+     timer_ptr set_timer(long duration, timer_handler callback) {
+-        timer_ptr new_timer = lib::make_shared<lib::asio::steady_timer>(
+-            lib::ref(*m_io_service),
+-            lib::asio::milliseconds(duration)
++        timer_ptr new_timer(
++            new lib::asio::steady_timer(
++                *m_io_service,
++                lib::asio::milliseconds(duration))
+         );
+ 
+         if (config::enable_multithreading) {
+diff --git a/websocketpp/transport/asio/endpoint.hpp b/websocketpp/transport/asio/endpoint.hpp
+index ddab2c7..4b719a9 100644
+--- a/websocketpp/transport/asio/endpoint.hpp
++++ b/websocketpp/transport/asio/endpoint.hpp
+@@ -195,8 +195,7 @@ public:
+ 
+         m_io_service = ptr;
+         m_external_io_service = true;
+-        m_acceptor = lib::make_shared<lib::asio::ip::tcp::acceptor>(
+-            lib::ref(*m_io_service));
++        m_acceptor.reset(new lib::asio::ip::tcp::acceptor(*m_io_service));
+ 
+         m_state = READY;
+         ec = lib::error_code();
+diff --git a/websocketpp/transport/asio/security/none.hpp b/websocketpp/transport/asio/security/none.hpp
+index 5c8293d..6c7d352 100644
+--- a/websocketpp/transport/asio/security/none.hpp
++++ b/websocketpp/transport/asio/security/none.hpp
+@@ -168,8 +168,7 @@ protected:
+             return socket::make_error_code(socket::error::invalid_state);
+         }
+ 
+-        m_socket = lib::make_shared<lib::asio::ip::tcp::socket>(
+-            lib::ref(*service));
++        m_socket.reset(new lib::asio::ip::tcp::socket(*service));
+ 
+         if (m_socket_init_handler) {
+             m_socket_init_handler(m_hdl, *m_socket);
+diff --git a/websocketpp/transport/asio/security/tls.hpp b/websocketpp/transport/asio/security/tls.hpp
+index c76fd9a..04ac379 100644
+--- a/websocketpp/transport/asio/security/tls.hpp
++++ b/websocketpp/transport/asio/security/tls.hpp
+@@ -193,8 +193,7 @@ protected:
+         if (!m_context) {
+             return socket::make_error_code(socket::error::invalid_tls_context);
+         }
+-        m_socket = lib::make_shared<socket_type>(
+-            _WEBSOCKETPP_REF(*service),lib::ref(*m_context));
++        m_socket.reset(new socket_type(*service, *m_context));
+ 
+         if (m_socket_init_handler) {
+             m_socket_init_handler(m_hdl, get_socket());
+-- 
+2.23.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0002-Fix-missed-entries-fix-testing.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0002-Fix-missed-entries-fix-testing.patch
new file mode 100644
index 0000000..962d089
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0002-Fix-missed-entries-fix-testing.patch
@@ -0,0 +1,66 @@
+From 12ab603ca962e83591985a585451d33544d75d56 Mon Sep 17 00:00:00 2001
+From: Stefan Floeren <42731906+stefan-floeren@users.noreply.github.com>
+Date: Wed, 17 Apr 2019 10:06:18 +0000
+Subject: [PATCH 2/2] Fix missed entries; fix testing
+
+---
+ CMakeLists.txt                            | 2 +-
+ websocketpp/transport/asio/connection.hpp | 3 +--
+ websocketpp/transport/asio/endpoint.hpp   | 7 ++-----
+ 3 files changed, 4 insertions(+), 8 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2786aba..951de97 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -202,7 +202,7 @@ if (BUILD_TESTS OR BUILD_EXAMPLES)
+ 	endif ()
+ 
+     if (NOT Boost_USE_STATIC_LIBS)
+-        add_definitions (/DBOOST_TEST_DYN_LINK)
++        add_definitions (-DBOOST_TEST_DYN_LINK)
+     endif ()
+ 
+     set (Boost_FIND_REQUIRED TRUE)
+diff --git a/websocketpp/transport/asio/connection.hpp b/websocketpp/transport/asio/connection.hpp
+index 1ccda8f..57dda74 100644
+--- a/websocketpp/transport/asio/connection.hpp
++++ b/websocketpp/transport/asio/connection.hpp
+@@ -462,8 +462,7 @@ protected:
+         m_io_service = io_service;
+ 
+         if (config::enable_multithreading) {
+-            m_strand = lib::make_shared<lib::asio::io_service::strand>(
+-                lib::ref(*io_service));
++            m_strand.reset(new lib::asio::io_service::strand(*io_service));
+         }
+ 
+         lib::error_code ec = socket_con_type::init_asio(io_service, m_strand,
+diff --git a/websocketpp/transport/asio/endpoint.hpp b/websocketpp/transport/asio/endpoint.hpp
+index 4b719a9..94509ad 100644
+--- a/websocketpp/transport/asio/endpoint.hpp
++++ b/websocketpp/transport/asio/endpoint.hpp
+@@ -687,9 +687,7 @@ public:
+      * @since 0.3.0
+      */
+     void start_perpetual() {
+-        m_work = lib::make_shared<lib::asio::io_service::work>(
+-            lib::ref(*m_io_service)
+-        );
++        m_work.reset(new lib::asio::io_service::work(*m_io_service));
+     }
+ 
+     /// Clears the endpoint's perpetual flag, allowing it to exit when empty
+@@ -853,8 +851,7 @@ protected:
+ 
+         // Create a resolver
+         if (!m_resolver) {
+-            m_resolver = lib::make_shared<lib::asio::ip::tcp::resolver>(
+-                lib::ref(*m_io_service));
++            m_resolver.reset(new lib::asio::ip::tcp::resolver(*m_io_service));
+         }
+ 
+         tcon->set_uri(u);
+-- 
+2.23.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/4cab5e5c0c5f19fcee7d37b4a38b156d63a150d4.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/4cab5e5c0c5f19fcee7d37b4a38b156d63a150d4.patch
deleted file mode 100644
index 530c960..0000000
--- a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/4cab5e5c0c5f19fcee7d37b4a38b156d63a150d4.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-From 4cab5e5c0c5f19fcee7d37b4a38b156d63a150d4 Mon Sep 17 00:00:00 2001
-From: Peter Thorson <git@zaphoyd.com>
-Date: Sun, 11 Jun 2017 16:13:25 -0500
-Subject: [PATCH] minor adjustments to recent extension negotiation related
- fixes, refactor a bit more extension negotiation code to be simpler
-
----
- websocketpp/impl/connection_impl.hpp |  6 +--
- websocketpp/processors/hybi13.hpp    | 92 ++++++++++++++++++------------------
- 2 files changed, 49 insertions(+), 49 deletions(-)
-
-Index: websocketpp-0.7.0/websocketpp/impl/connection_impl.hpp
-===================================================================
---- websocketpp-0.7.0.orig/websocketpp/impl/connection_impl.hpp
-+++ websocketpp-0.7.0/websocketpp/impl/connection_impl.hpp
-@@ -1222,17 +1222,17 @@
-     std::pair<lib::error_code,std::string> neg_results;
-     neg_results = m_processor->negotiate_extensions(m_request);
- 
--    if (neg_results.first == error::make_error_code(error::extension_parse_error)) {
-+    if (neg_results.first == processor::error::make_error_code(processor::error::extension_parse_error)) {
-         // There was a fatal error in extension parsing that should result in
-         // a failed connection attempt.
--        m_alog.write(log::alevel::info, "Bad request: " + neg_results.first.message());
-+        m_elog.write(log::elevel::info, "Bad request: " + neg_results.first.message());
-         m_response.set_status(http::status_code::bad_request);
-         return neg_results.first;
-     } else if (neg_results.first) {
-         // There was a fatal error in extension processing that is probably our
-         // fault. Consider extension negotiation to have failed and continue as
-         // if extensions were not supported
--        m_alog.write(log::alevel::info, 
-+        m_elog.write(log::elevel::info, 
-             "Extension negotiation failed: " + neg_results.first.message());
-     } else {
-         // extension negotiation succeeded, set response header accordingly
-Index: websocketpp-0.7.0/websocketpp/processors/hybi13.hpp
-===================================================================
---- websocketpp-0.7.0.orig/websocketpp/processors/hybi13.hpp
-+++ websocketpp-0.7.0/websocketpp/processors/hybi13.hpp
-@@ -97,11 +97,6 @@
-     /**
-      * This exists mostly because the code for requests and responses is
-      * identical and I can't have virtual template methods.
--     *
--     * NOTE: this method makes assumptions that the permessage-deflate
--     * extension is the only one supported. If additional extensions are
--     * ever supported it should be reviewed carefully. Most cases where
--     * that assumption is made are explicitly noted.
-      */
-     template <typename header_type>
-     err_str_pair negotiate_extensions_helper(header_type const & header) {
-@@ -130,55 +125,60 @@
- 
-         http::parameter_list::const_iterator it;
- 
-+        // look through the list of extension requests to find the first
-+        // one that we can accept.
-         if (m_permessage_deflate.is_implemented()) {
-             err_str_pair neg_ret;
-             for (it = p.begin(); it != p.end(); ++it) {
--                // look through each extension, if the key is permessage-deflate
--                if (it->first == "permessage-deflate") {
--                    // if we have already successfully negotiated this extension
--                    // then skip any other requests to negotiate the same one
--                    // with different parameters 
--                    if (m_permessage_deflate.is_enabled()) {
--                        continue;
--                    }
--                    
--                    
--                    neg_ret = m_permessage_deflate.negotiate(it->second);
--
--                    if (neg_ret.first) {
--                        // Figure out if this is an error that should halt all
--                        // extension negotiations or simply cause negotiation of
--                        // this specific extension to fail.
--                        //std::cout << "permessage-compress negotiation failed: "
--                        //          << neg_ret.first.message() << std::endl;
--                    } else {
--                        // Note: this list will need commas if WebSocket++ ever
--                        // supports more than one extension
--                        
--                        // Actually try to initialize the extension before we
--                        // deem negotiation complete
--                        ret.first = m_permessage_deflate.init(base::m_server);
--                        if (!ret.first) {
--
--                            // TODO: support multiple extensions.
--                            // right now, because there is only one extension 
--                            // supported, it failing to negotiate means we are
--                            // done with all negotiating. In the future if more
--                            // extensions are supported a better solution will
--                            // be needed here.
--                            break;
--                        } else {
--                            ret.second += neg_ret.second;
--
--                            // continue looking for more extensions
--                            continue;
--                        }
--                        
--                    }
-+                // not a permessage-deflate extension request, ignore
-+                if (it->first != "permessage-deflate") {
-+                    continue;
-+                }
-+
-+                // if we have already successfully negotiated this extension
-+                // then skip any other requests to negotiate the same one
-+                // with different parameters 
-+                if (m_permessage_deflate.is_enabled()) {
-+                    continue;
-+                }
-+                
-+                // attempt to negotiate this offer
-+                neg_ret = m_permessage_deflate.negotiate(it->second);
-+
-+                if (neg_ret.first) {
-+                    // negotiation offer failed. Do nothing. We will continue
-+                    // searching for a permessage-deflate config that succeeds
-+                    continue;
-+                }
-+
-+                // Negotiation tentatively succeeded
-+
-+                // Actually try to initialize the extension before we
-+                // deem negotiation complete
-+                lib::error_code ec = m_permessage_deflate.init(base::m_server);
-+
-+                if (ec) {
-+                    // Negotiation succeeded but initialization failed this is 
-+                    // an error that should stop negotiation of permessage 
-+                    // deflate. Return the reason for the init failure
-+
-+                    ret.first = ec;
-+                    break;
-+                } else {
-+                    // Successfully initialized, push the negotiated response into
-+                    // the reply and stop looking for additional permessage-deflate
-+                    // extensions
-+                    ret.second += neg_ret.second;
-+                    break;
-                 }
-             }
-         }
- 
-+        // support for future extensions would go here. Should check the value of 
-+        // ret.first before continuing. Might need to consider whether failure of
-+        // negotiation of an earlier extension should stop negotiation of subsequent
-+        // ones
-+
-         return ret;
-     }
- 
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/9ddb300d874a30db35e3ad58f188944bef0bf31b.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/9ddb300d874a30db35e3ad58f188944bef0bf31b.patch
deleted file mode 100644
index 94bfeb2..0000000
--- a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/9ddb300d874a30db35e3ad58f188944bef0bf31b.patch
+++ /dev/null
@@ -1,600 +0,0 @@
-## Description: add some description
-## Origin/Author: add some origin or author
-## Bug: bug URL
-From 9ddb300d874a30db35e3ad58f188944bef0bf31b Mon Sep 17 00:00:00 2001
-From: Peter Thorson <git@zaphoyd.com>
-Date: Sun, 11 Jun 2017 15:24:43 -0500
-Subject: [PATCH] Update permessage-deflate support to reflect that zlib
- doesn't support a 256 bit window. Improve extension negotiation error
- checking and documentation. fixes #596 fixes #653
-
----
- changelog.md                                       |   8 ++
- test/extension/permessage_deflate.cpp              | 153 +++++++++++++++++----
- .../extensions/permessage_deflate/enabled.hpp      |  94 ++++++++++---
- websocketpp/impl/connection_impl.hpp               |  10 +-
- websocketpp/processors/hybi13.hpp                  |  28 +++-
- 5 files changed, 247 insertions(+), 46 deletions(-)
-
-diff --git a/changelog.md b/changelog.md
-index bba753cb..de98edd2 100644
-#--- a/changelog.md
-#+++ b/changelog.md
-#@@ -17,6 +17,14 @@ HEAD
-# - Compatibility: Update `telemetry_client` to use a slightly more cross platform
-#   method of sleeping. Should work on windows now. Thank you Meir Yanovich for
-#   reporting.
-#+- Compatibility: Updated permessage-deflate support to reflect that the zlib
-#+  library does not actually support a sliding window size of 256 bits. 
-#+  WebSocket++ will no longer negotiate 256 bit deflate windows. If the user
-#+  of the library tries to request a 256 bit window a 512 bit window will be
-#+  specified instead (This was the previous behavior). #596 #653 Thank you 
-#+  Vinnie Falco and Gianfranco Costamagna for reporting.
-#+- Compatibility: Better error handling and logging in cases where extension
-#+  requests parse correctly but negotiation fails. 
-# - Bug: Store loggers in shared pointers to avoid crashes related to connections
-#   trying to write logs entries after their respective endpoint has been
-#   deallocated. Thank you Thalhammer for reporting and Jupp Müller for the 
-diff --git a/test/extension/permessage_deflate.cpp b/test/extension/permessage_deflate.cpp
-index 4cd3e7b6..805afcc3 100644
---- a/test/extension/permessage_deflate.cpp
-+++ b/test/extension/permessage_deflate.cpp
-@@ -186,15 +186,22 @@ BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_invalid ) {
- 
- BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_valid ) {
-     ext_vars v;
-+    
-+    // confirm that a request for a value of 8 is interpreted as 9
-     v.attr["server_max_window_bits"] = "8";
-+    v.esp = v.exts.negotiate(v.attr);
-+    BOOST_CHECK( v.exts.is_enabled() );
-+    BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
- 
-+    v.attr["server_max_window_bits"] = "9";
-     v.esp = v.exts.negotiate(v.attr);
-     BOOST_CHECK( v.exts.is_enabled() );
-     BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
--    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=8");
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
- 
--    v.attr["server_max_window_bits"] = "15";
- 
-+    v.attr["server_max_window_bits"] = "15";
-     v.esp = v.exts.negotiate(v.attr);
-     BOOST_CHECK( v.exts.is_enabled() );
-     BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-@@ -213,7 +220,7 @@ BOOST_AUTO_TEST_CASE( invalid_set_server_max_window_bits ) {
- 
- BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_decline ) {
-     ext_vars v;
--    v.attr["server_max_window_bits"] = "8";
-+    v.attr["server_max_window_bits"] = "9";
- 
-     v.ec = v.exts.set_server_max_window_bits(15,pmd_mode::decline);
-     v.esp = v.exts.negotiate(v.attr);
-@@ -223,7 +230,7 @@ BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_decline ) {
-     BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate");
- }
- 
--BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_accept ) {
-+BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_accept_8 ) {
-     ext_vars v;
-     v.attr["server_max_window_bits"] = "8";
- 
-@@ -232,10 +239,22 @@ BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_accept ) {
-     BOOST_CHECK( v.exts.is_enabled() );
-     BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-     BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
--    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=8");
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
- }
- 
--BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_largest ) {
-+BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_accept ) {
-+    ext_vars v;
-+    v.attr["server_max_window_bits"] = "9";
-+
-+    v.ec = v.exts.set_server_max_window_bits(15,pmd_mode::accept);
-+    v.esp = v.exts.negotiate(v.attr);
-+    BOOST_CHECK( v.exts.is_enabled() );
-+    BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
-+}
-+
-+BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_largest_8 ) {
-     ext_vars v;
-     v.attr["server_max_window_bits"] = "8";
- 
-@@ -244,10 +263,22 @@ BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_largest ) {
-     BOOST_CHECK( v.exts.is_enabled() );
-     BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-     BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
--    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=8");
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
- }
- 
--BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_smallest ) {
-+BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_largest ) {
-+    ext_vars v;
-+    v.attr["server_max_window_bits"] = "9";
-+
-+    v.ec = v.exts.set_server_max_window_bits(15,pmd_mode::largest);
-+    v.esp = v.exts.negotiate(v.attr);
-+    BOOST_CHECK( v.exts.is_enabled() );
-+    BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
-+}
-+
-+BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_smallest_8 ) {
-     ext_vars v;
-     v.attr["server_max_window_bits"] = "8";
- 
-@@ -256,7 +287,19 @@ BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_smallest ) {
-     BOOST_CHECK( v.exts.is_enabled() );
-     BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-     BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
--    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=8");
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
-+}
-+
-+BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_smallest ) {
-+    ext_vars v;
-+    v.attr["server_max_window_bits"] = "9";
-+
-+    v.ec = v.exts.set_server_max_window_bits(15,pmd_mode::smallest);
-+    v.esp = v.exts.negotiate(v.attr);
-+    BOOST_CHECK( v.exts.is_enabled() );
-+    BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
- }
- 
- // Negotiate server_max_window_bits
-@@ -292,7 +335,13 @@ BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_valid ) {
-     v.esp = v.exts.negotiate(v.attr);
-     BOOST_CHECK( v.exts.is_enabled() );
-     BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
--    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=8");
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
-+
-+    v.attr["client_max_window_bits"] = "9";
-+    v.esp = v.exts.negotiate(v.attr);
-+    BOOST_CHECK( v.exts.is_enabled() );
-+    BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
- 
-     v.attr["client_max_window_bits"] = "15";
-     v.esp = v.exts.negotiate(v.attr);
-@@ -311,7 +360,7 @@ BOOST_AUTO_TEST_CASE( invalid_set_client_max_window_bits ) {
-     BOOST_CHECK_EQUAL(v.ec,pmde::make_error_code(pmde::invalid_max_window_bits));
- }
- 
--BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_decline ) {
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_decline_8 ) {
-     ext_vars v;
-     v.attr["client_max_window_bits"] = "8";
- 
-@@ -323,7 +372,19 @@ BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_decline ) {
-     BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate");
- }
- 
--BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_accept ) {
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_decline ) {
-+    ext_vars v;
-+    v.attr["client_max_window_bits"] = "9";
-+
-+    v.ec = v.exts.set_client_max_window_bits(9,pmd_mode::decline);
-+    v.esp = v.exts.negotiate(v.attr);
-+    BOOST_CHECK( v.exts.is_enabled() );
-+    BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate");
-+}
-+
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_accept_8 ) {
-     ext_vars v;
-     v.attr["client_max_window_bits"] = "8";
- 
-@@ -332,10 +393,22 @@ BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_accept ) {
-     BOOST_CHECK( v.exts.is_enabled() );
-     BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-     BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
--    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=8");
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
- }
- 
--BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_largest ) {
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_accept ) {
-+    ext_vars v;
-+    v.attr["client_max_window_bits"] = "9";
-+
-+    v.ec = v.exts.set_client_max_window_bits(15,pmd_mode::accept);
-+    v.esp = v.exts.negotiate(v.attr);
-+    BOOST_CHECK( v.exts.is_enabled() );
-+    BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
-+}
-+
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_largest_8 ) {
-     ext_vars v;
-     v.attr["client_max_window_bits"] = "8";
- 
-@@ -344,10 +417,22 @@ BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_largest ) {
-     BOOST_CHECK( v.exts.is_enabled() );
-     BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-     BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
--    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=8");
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
- }
- 
--BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_smallest ) {
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_largest ) {
-+    ext_vars v;
-+    v.attr["client_max_window_bits"] = "9";
-+
-+    v.ec = v.exts.set_client_max_window_bits(15,pmd_mode::largest);
-+    v.esp = v.exts.negotiate(v.attr);
-+    BOOST_CHECK( v.exts.is_enabled() );
-+    BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
-+}
-+
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_smallest_8 ) {
-     ext_vars v;
-     v.attr["client_max_window_bits"] = "8";
- 
-@@ -356,7 +441,19 @@ BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_smallest ) {
-     BOOST_CHECK( v.exts.is_enabled() );
-     BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-     BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
--    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=8");
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
-+}
-+
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_smallest ) {
-+    ext_vars v;
-+    v.attr["client_max_window_bits"] = "9";
-+
-+    v.ec = v.exts.set_client_max_window_bits(15,pmd_mode::smallest);
-+    v.esp = v.exts.negotiate(v.attr);
-+    BOOST_CHECK( v.exts.is_enabled() );
-+    BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+    BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
- }
- 
- 
-@@ -507,7 +604,8 @@ BOOST_AUTO_TEST_CASE( compress_data ) {
-     std::string compress_out;
-     std::string decompress_out;
- 
--    v.exts.init(true);
-+    v.ec = v.exts.init(true);
-+    BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
- 
-     v.ec = v.exts.compress(compress_in,compress_out);
-     BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-@@ -520,7 +618,8 @@ BOOST_AUTO_TEST_CASE( compress_data ) {
- BOOST_AUTO_TEST_CASE( compress_data_multiple ) {
-     ext_vars v;
- 
--    v.exts.init(true);
-+    v.ec = v.exts.init(true);
-+    BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
- 
-     for (int i = 0; i < 2; i++) {
-         std::string compress_in = "Hello";
-@@ -545,11 +644,12 @@ BOOST_AUTO_TEST_CASE( compress_data_large ) {
- 
-     websocketpp::http::attribute_list alist;
- 
--    alist["server_max_window_bits"] = "8";
--    v.exts.set_server_max_window_bits(8,websocketpp::extensions::permessage_deflate::mode::smallest);
-+    alist["server_max_window_bits"] = "9";
-+    v.exts.set_server_max_window_bits(9,websocketpp::extensions::permessage_deflate::mode::smallest);
- 
-     v.exts.negotiate(alist);
--    v.exts.init(true);
-+    v.ec = v.exts.init(true);
-+    BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
- 
-     v.ec = v.exts.compress(compress_in,compress_out);
-     BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-@@ -573,7 +673,8 @@ BOOST_AUTO_TEST_CASE( compress_data_no_context_takeover ) {
-     v.exts.enable_server_no_context_takeover();
- 
-     v.exts.negotiate(alist);
--    v.exts.init(true);
-+    v.ec = v.exts.init(true);
-+    BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
- 
-     v.ec = v.exts.compress(compress_in,compress_out1);
-     BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-@@ -609,7 +710,8 @@ BOOST_AUTO_TEST_CASE( compress_empty ) {
-     std::string compress_out;
-     std::string decompress_out;
- 
--    v.exts.init(true);
-+    v.ec = v.exts.init(true);
-+    BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
- 
-     v.ec = v.exts.compress(compress_in,compress_out);
-     BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-@@ -640,7 +742,8 @@ BOOST_AUTO_TEST_CASE( decompress_data ) {
-     std::string out;
-     std::string reference = "Hello";
- 
--    v.exts.init(true);
-+    v.ec = v.exts.init(true);
-+    BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
- 
-     v.ec = v.exts.decompress(in,11,out);
- 
-diff --git a/websocketpp/extensions/permessage_deflate/enabled.hpp b/websocketpp/extensions/permessage_deflate/enabled.hpp
-index 1581f14c..f20a1b1d 100644
---- a/websocketpp/extensions/permessage_deflate/enabled.hpp
-+++ b/websocketpp/extensions/permessage_deflate/enabled.hpp
-@@ -46,7 +46,7 @@
- namespace websocketpp {
- namespace extensions {
- 
--/// Implementation of the draft permessage-deflate WebSocket extension
-+/// Implementation of RFC 7692, the permessage-deflate WebSocket extension
- /**
-  * ### permessage-deflate interface
-  *
-@@ -174,18 +174,30 @@ namespace websocketpp {
- namespace extensions {
- namespace permessage_deflate {
- 
--/// Default value for server_max_window_bits as defined by draft 17
-+/// Default value for server_max_window_bits as defined by RFC 7692
- static uint8_t const default_server_max_window_bits = 15;
--/// Minimum value for server_max_window_bits as defined by draft 17
-+/// Minimum value for server_max_window_bits as defined by RFC 7692
-+/**
-+ * NOTE: A value of 8 is not actually supported by zlib, the deflate
-+ * library that WebSocket++ uses. To preserve backwards compatibility
-+ * with RFC 7692 and previous versions of the library a value of 8
-+ * is accepted by the library but will always be negotiated as 9.
-+ */
- static uint8_t const min_server_max_window_bits = 8;
--/// Maximum value for server_max_window_bits as defined by draft 17
-+/// Maximum value for server_max_window_bits as defined by RFC 7692
- static uint8_t const max_server_max_window_bits = 15;
- 
--/// Default value for client_max_window_bits as defined by draft 17
-+/// Default value for client_max_window_bits as defined by RFC 7692
- static uint8_t const default_client_max_window_bits = 15;
--/// Minimum value for client_max_window_bits as defined by draft 17
-+/// Minimum value for client_max_window_bits as defined by RFC 7692
-+/**
-+ * NOTE: A value of 8 is not actually supported by zlib, the deflate
-+ * library that WebSocket++ uses. To preserve backwards compatibility
-+ * with RFC 7692 and previous versions of the library a value of 8
-+ * is accepted by the library but will always be negotiated as 9.
-+ */
- static uint8_t const min_client_max_window_bits = 8;
--/// Maximum value for client_max_window_bits as defined by draft 17
-+/// Maximum value for client_max_window_bits as defined by RFC 7692
- static uint8_t const max_client_max_window_bits = 15;
- 
- namespace mode {
-@@ -372,7 +384,7 @@ class enabled {
-     /**
-      * The bits setting is the base 2 logarithm of the maximum window size that
-      * the server must use to compress outgoing messages. The permitted range
--     * is 8 to 15 inclusive. 8 represents a 256 byte window and 15 a 32KiB
-+     * is 9 to 15 inclusive. 9 represents a 512 byte window and 15 a 32KiB
-      * window. The default setting is 15.
-      *
-      * Mode Options:
-@@ -386,6 +398,14 @@ class enabled {
-      * adjusted by the server. A server may unilaterally set this value without
-      * client support.
-      *
-+     * NOTE: The permessage-deflate spec specifies that a value of 8 is allowed.
-+     * Prior to version 0.8.0 a value of 8 was also allowed by this library.
-+     * zlib, the deflate compression library that WebSocket++ uses has always
-+     * silently adjusted a value of 8 to 9. In recent versions of zlib (1.2.9 
-+     * and greater) a value of 8 is now explicitly rejected. WebSocket++ 0.8.0
-+     * continues to perform the 8->9 conversion for backwards compatibility
-+     * purposes but this should be considered deprecated functionality.
-+     *
-      * @param bits The size to request for the outgoing window size
-      * @param mode The mode to use for negotiating this parameter
-      * @return A status code
-@@ -394,6 +414,12 @@ class enabled {
-         if (bits < min_server_max_window_bits || bits > max_server_max_window_bits) {
-             return error::make_error_code(error::invalid_max_window_bits);
-         }
-+
-+        // See note in doc comment above about what is happening here
-+        if (bits == 8) {
-+            bits = 9;
-+        }
-+
-         m_server_max_window_bits = bits;
-         m_server_max_window_bits_mode = mode;
- 
-@@ -403,8 +429,8 @@ class enabled {
-     /// Limit client LZ77 sliding window size
-     /**
-      * The bits setting is the base 2 logarithm of the window size that the
--     * client must use to compress outgoing messages. The permitted range is 8
--     * to 15 inclusive. 8 represents a 256 byte window and 15 a 32KiB window.
-+     * client must use to compress outgoing messages. The permitted range is 9
-+     * to 15 inclusive. 9 represents a 512 byte window and 15 a 32KiB window.
-      * The default setting is 15.
-      *
-      * Mode Options:
-@@ -417,6 +443,14 @@ class enabled {
-      * outgoing window size unilaterally. A server may only limit the client's
-      * window size if the remote client supports that feature.
-      *
-+     * NOTE: The permessage-deflate spec specifies that a value of 8 is allowed.
-+     * Prior to version 0.8.0 a value of 8 was also allowed by this library.
-+     * zlib, the deflate compression library that WebSocket++ uses has always
-+     * silently adjusted a value of 8 to 9. In recent versions of zlib (1.2.9 
-+     * and greater) a value of 8 is now explicitly rejected. WebSocket++ 0.8.0
-+     * continues to perform the 8->9 conversion for backwards compatibility
-+     * purposes but this should be considered deprecated functionality.
-+     *
-      * @param bits The size to request for the outgoing window size
-      * @param mode The mode to use for negotiating this parameter
-      * @return A status code
-@@ -425,6 +459,12 @@ class enabled {
-         if (bits < min_client_max_window_bits || bits > max_client_max_window_bits) {
-             return error::make_error_code(error::invalid_max_window_bits);
-         }
-+
-+        // See note in doc comment above about what is happening here
-+        if (bits == 8) {
-+            bits = 9;
-+        }
-+
-         m_client_max_window_bits = bits;
-         m_client_max_window_bits_mode = mode;
- 
-@@ -642,11 +682,17 @@ class enabled {
-      * client requested that we use.
-      *
-      * options:
--     * - decline (refuse to use the attribute)
--     * - accept (use whatever the client says)
--     * - largest (use largest possible value)
-+     * - decline (ignore value, offer our default instead)
-+     * - accept (use the value requested by the client)
-+     * - largest (use largest value acceptable to both)
-      * - smallest (use smallest possible value)
-      *
-+     * NOTE: As a value of 8 is no longer explicitly supported by zlib but might
-+     * be requested for negotiation by an older client/server, if the result of
-+     * the negotiation would be to send a value of 8, a value of 9 is offered
-+     * instead. This ensures that WebSocket++ will only ever negotiate connections
-+     * with compression settings explicitly supported by zlib.
-+     *
-      * @param [in] value The value of the attribute from the offer
-      * @param [out] ec A reference to the error code to return errors via
-      */
-@@ -678,6 +724,11 @@ class enabled {
-                 ec = make_error_code(error::invalid_mode);
-                 m_server_max_window_bits = default_server_max_window_bits;
-         }
-+
-+        // See note in doc comment
-+        if (m_server_max_window_bits == 8) {
-+            m_server_max_window_bits = 9;
-+        }
-     }
- 
-     /// Negotiate client_max_window_bits attribute
-@@ -687,11 +738,17 @@ class enabled {
-      * negotiation mode.
-      *
-      * options:
--     * - decline (refuse to use the attribute)
--     * - accept (use whatever the client says)
--     * - largest (use largest possible value)
-+     * - decline (ignore value, offer our default instead)
-+     * - accept (use the value requested by the client)
-+     * - largest (use largest value acceptable to both)
-      * - smallest (use smallest possible value)
-      *
-+     * NOTE: As a value of 8 is no longer explicitly supported by zlib but might
-+     * be requested for negotiation by an older client/server, if the result of
-+     * the negotiation would be to send a value of 8, a value of 9 is offered
-+     * instead. This ensures that WebSocket++ will only ever negotiate connections
-+     * with compression settings explicitly supported by zlib.
-+     *
-      * @param [in] value The value of the attribute from the offer
-      * @param [out] ec A reference to the error code to return errors via
-      */
-@@ -727,6 +784,11 @@ class enabled {
-                 ec = make_error_code(error::invalid_mode);
-                 m_client_max_window_bits = default_client_max_window_bits;
-         }
-+
-+        // See note in doc comment
-+        if (m_client_max_window_bits == 8) {
-+            m_client_max_window_bits = 9;
-+        }
-     }
- 
-     bool m_enabled;
-diff --git a/websocketpp/impl/connection_impl.hpp b/websocketpp/impl/connection_impl.hpp
-index 105911db..ae55c338 100644
---- a/websocketpp/impl/connection_impl.hpp
-+++ b/websocketpp/impl/connection_impl.hpp
-@@ -1222,12 +1222,18 @@ lib::error_code connection<config>::process_handshake_request() {
-     std::pair<lib::error_code,std::string> neg_results;
-     neg_results = m_processor->negotiate_extensions(m_request);
- 
--    if (neg_results.first) {
-+    if (neg_results.first == error::make_error_code(error::extension_parse_error)) {
-         // There was a fatal error in extension parsing that should result in
-         // a failed connection attempt.
--        m_alog.write(log::alevel::devel, "Bad request: " + neg_results.first.message());
-+        m_alog.write(log::alevel::info, "Bad request: " + neg_results.first.message());
-         m_response.set_status(http::status_code::bad_request);
-         return neg_results.first;
-+    } else if (neg_results.first) {
-+        // There was a fatal error in extension processing that is probably our
-+        // fault. Consider extension negotiation to have failed and continue as
-+        // if extensions were not supported
-+        m_alog.write(log::alevel::info, 
-+            "Extension negotiation failed: " + neg_results.first.message());
-     } else {
-         // extension negotiation succeeded, set response header accordingly
-         // we don't send an empty extensions header because it breaks many
-diff --git a/websocketpp/processors/hybi13.hpp b/websocketpp/processors/hybi13.hpp
-index 79486654..a95bc649 100644
---- a/websocketpp/processors/hybi13.hpp
-+++ b/websocketpp/processors/hybi13.hpp
-@@ -97,6 +97,11 @@ class hybi13 : public processor<config> {
-     /**
-      * This exists mostly because the code for requests and responses is
-      * identical and I can't have virtual template methods.
-+     *
-+     * NOTE: this method makes assumptions that the permessage-deflate
-+     * extension is the only one supported. If additional extensions are
-+     * ever supported it should be reviewed carefully. Most cases where
-+     * that assumption is made are explicitly noted.
-      */
-     template <typename header_type>
-     err_str_pair negotiate_extensions_helper(header_type const & header) {
-@@ -149,9 +154,26 @@ class hybi13 : public processor<config> {
-                     } else {
-                         // Note: this list will need commas if WebSocket++ ever
-                         // supports more than one extension
--                        ret.second += neg_ret.second;
--                        m_permessage_deflate.init(base::m_server);
--                        continue;
-+                        
-+                        // Actually try to initialize the extension before we
-+                        // deem negotiation complete
-+                        ret.first = m_permessage_deflate.init(base::m_server);
-+                        if (!ret.first) {
-+
-+                            // TODO: support multiple extensions.
-+                            // right now, because there is only one extension 
-+                            // supported, it failing to negotiate means we are
-+                            // done with all negotiating. In the future if more
-+                            // extensions are supported a better solution will
-+                            // be needed here.
-+                            break;
-+                        } else {
-+                            ret.second += neg_ret.second;
-+
-+                            // continue looking for more extensions
-+                            continue;
-+                        }
-+                        
-                     }
-                 }
-             }
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/disable-tests.patch b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/disable-tests.patch
deleted file mode 100644
index 342981d..0000000
--- a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/disable-tests.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-Description: Disable failing test_transport_asio_timers.
-Because of "address already in use" error
-/«PKGBUILDDIR»/test/transport/asio/timers.cpp(129): error in "tls_handshake_timeout": check ec == make_error_code(tls_handshake_timeout) failed [websocketpp.transport.asio.socket:8 != websocketpp.transport.asio.socket:5]
-Author: Gianfranco Costamagna <locutusofborg@debian.org>
-
---- websocketpp-0.7.0.orig/test/transport/CMakeLists.txt
-+++ websocketpp-0.7.0/test/transport/CMakeLists.txt
-@@ -1,24 +1,24 @@
- if (OPENSSL_FOUND)
- 
--# Test transport integration
--file (GLOB SOURCE integration.cpp)
--
--init_target (test_transport)
--build_test (${TARGET_NAME} ${SOURCE})
--link_boost ()
--link_openssl()
--final_target ()
--set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "test")
--
--# Test transport asio timers
--file (GLOB SOURCE asio/timers.cpp)
--
--init_target (test_transport_asio_timers)
--build_test (${TARGET_NAME} ${SOURCE})
--link_boost ()
--link_openssl()
--final_target ()
--set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "test")
-+## Test transport integration
-+#file (GLOB SOURCE integration.cpp)
-+#
-+#init_target (test_transport)
-+#build_test (${TARGET_NAME} ${SOURCE})
-+#link_boost ()
-+#link_openssl()
-+#final_target ()
-+#set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "test")
-+#
-+## Test transport asio timers
-+#file (GLOB SOURCE asio/timers.cpp)
-+#
-+#init_target (test_transport_asio_timers)
-+#build_test (${TARGET_NAME} ${SOURCE})
-+#link_boost ()
-+#link_openssl()
-+#final_target ()
-+#set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "test")
- 
- # Test transport asio security
- file (GLOB SOURCE asio/security.cpp)
diff --git a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb
index 75a5f88..5516217 100644
--- a/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb
@@ -5,7 +5,10 @@
 LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=4d168d763c111f4ffc62249870e4e0ea"
 DEPENDS = "openssl boost zlib"
 
-SRC_URI = "git://github.com/zaphoyd/websocketpp.git;protocol=https;branch=master"
+SRC_URI = "git://github.com/zaphoyd/websocketpp.git;protocol=https \
+           file://0001-Replace-make_shared-with-new-in-some-cases.patch \
+           file://0002-Fix-missed-entries-fix-testing.patch \
+          "
 
 # tag 0.8.1
 SRCREV= "c6d7e295bf5a0ab9b5f896720cc1a0e0fdc397a7"
diff --git a/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/change-finding-path-of-nss.patch b/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/change-finding-path-of-nss.patch
new file mode 100644
index 0000000..1cec47f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/change-finding-path-of-nss.patch
@@ -0,0 +1,67 @@
+From c1c980a95d85bcaf8802524d6148783522b300d7 Mon Sep 17 00:00:00 2001
+From: Yulong Pei <Yulong.pei@windriver.com>
+Date: Wed, 21 Jul 2010 22:33:43 +0800
+Subject: [PATCH] change finding path of nss and nspr
+
+Upstream-Status: Pending
+
+Signed-off-by: Yulong Pei <Yulong.pei@windriver.com>
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ configure.ac | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 951b3eb..1fdeb0f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -866,10 +866,10 @@ MOZILLA_MIN_VERSION="1.4"
+ NSS_CRYPTO_LIB="$XMLSEC_PACKAGE-nss"
+ NSPR_PACKAGE=mozilla-nspr
+ NSS_PACKAGE=mozilla-nss
+-NSPR_INCLUDE_MARKER="nspr/nspr.h"
++NSPR_INCLUDE_MARKER="nspr.h"
+ NSPR_LIB_MARKER="libnspr4$shrext"
+ NSPR_LIBS_LIST="-lnspr4 -lplds4 -lplc4"
+-NSS_INCLUDE_MARKER="nss/nss.h"
++NSS_INCLUDE_MARKER="nss3/nss.h"
+ NSS_LIB_MARKER="libnss3$shrext"
+ NSS_LIBS_LIST="-lnss3 -lsmime3"
+ 
+@@ -898,24 +898,24 @@ fi
+ dnl Priority 1: User specifies the path to installation
+ if test "z$NSPR_FOUND" = "zno" -a "z$with_nspr" != "z" -a "z$with_nspr" != "zyes" ; then
+     AC_MSG_CHECKING(for nspr library installation in "$with_nspr" folder)
+-    if test -f "$with_nspr/include/$NSPR_INCLUDE_MARKER" -a -f "$with_nspr/lib/$NSPR_LIB_MARKER" ; then
+-        NSPR_INCLUDE_PATH="$with_nspr/include"
+-        NSPR_LIB_PATH="$with_nspr/lib"
++    if test -f "$with_nspr/usr/include/$NSPR_INCLUDE_MARKER" -a -f "$with_nspr/${libdir}/$NSPR_LIB_MARKER" ; then
++        NSPR_INCLUDE_PATH="$with_nspr/usr/include"
++        NSPR_LIB_PATH="$with_nspr/${libdir}"
+         NSPR_FOUND="yes"
+         AC_MSG_RESULT([yes])
+     else
+-        AC_MSG_ERROR([not found: "$with_nspr/include/$NSPR_INCLUDE_MARKER" and/or "$with_nspr/lib/$NSPR_LIB_MARKER" files don't exist), typo?])
++        AC_MSG_ERROR([not found: "$with_nspr/usr/include/$NSPR_INCLUDE_MARKER" and/or "$with_nspr/${libdir}/$NSPR_LIB_MARKER" files don't exist), typo?])
+     fi
+ fi
+ if test "z$NSS_FOUND" = "zno" -a "z$with_nss" != "z" -a "z$with_nss" != "zyes" ; then
+     AC_MSG_CHECKING(for nss library installation in "$with_nss" folder)
+-    if test -f "$with_nss/include/$NSS_INCLUDE_MARKER" -a -f "$with_nss/lib/$NSS_LIB_MARKER" ; then
+-        NSS_INCLUDE_PATH="$with_nss/include"
+-        NSS_LIB_PATH="$with_nss/lib"
++    if test -f "$with_nss/usr/include/$NSS_INCLUDE_MARKER" -a -f "$with_nss/${libdir}/$NSS_LIB_MARKER" ; then
++        NSS_INCLUDE_PATH="$with_nss/usr/include/nss3"
++        NSS_LIB_PATH="$with_nss/${libdir}"
+         NSS_FOUND="yes"
+         AC_MSG_RESULT([yes])
+     else
+-        AC_MSG_ERROR([not found: "$with_nss/include/$NSS_INCLUDE_MARKER" and/or "$with_nss/lib/$NSS_LIB_MARKER" files don't exist), typo?])
++        AC_MSG_ERROR([not found: "$with_nss/usr/include/$NSS_INCLUDE_MARKER" and/or "$with_nss/${libdir}/$NSS_LIB_MARKER" files don't exist), typo?])
+     fi
+ fi
+ 
+-- 
+2.7.4
+
diff --git a/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/fix-ltmain.sh.patch b/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/fix-ltmain.sh.patch
new file mode 100644
index 0000000..af598fe
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/fix-ltmain.sh.patch
@@ -0,0 +1,26 @@
+From 847dc52f5a50e34ee4d6e3dc2c708711747a58ca Mon Sep 17 00:00:00 2001
+From: Yulong Pei <Yulong.pei@windriver.com>
+Date: Thu, 21 Jan 2010 14:11:20 +0800
+Subject: [PATCH] force to use our own libtool
+
+Upstream-Status: Inappropriate [ OE specific ]
+
+Signed-off-by: Yulong Pei <Yulong.pei@windriver.com>
+
+---
+ ltmain.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ltmain.sh b/ltmain.sh
+index 147d758..a61f16b 100644
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -6969,7 +6969,7 @@ func_mode_link ()
+ 	dir=$func_resolve_sysroot_result
+ 	# We need an absolute path.
+ 	case $dir in
+-	[\\/]* | [A-Za-z]:[\\/]*) ;;
++	=* | [\\/]* | [A-Za-z]:[\\/]*) ;;
+ 	*)
+ 	  absdir=`cd "$dir" && pwd`
+ 	  test -z "$absdir" && \
diff --git a/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/makefile-ptest.patch b/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/makefile-ptest.patch
new file mode 100644
index 0000000..d453569
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/makefile-ptest.patch
@@ -0,0 +1,40 @@
+From 83a1381e1d6bd1b5ec3df6f7c4bc1f4fe4f860b6 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Thu, 15 Jun 2017 14:44:01 +0800
+Subject: [PATCH] xmlsec1: add new recipe
+
+This enables the building of the examples directory
+and it's installed as ptest.
+
+Upstream-Status: Inappropriate [ OE ptest specific ]
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+
+---
+ examples/Makefile | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/examples/Makefile b/examples/Makefile
+index 89b1d61..c1cbcca 100644
+--- a/examples/Makefile
++++ b/examples/Makefile
+@@ -8,9 +8,17 @@ PROGRAMS = \
+ 	decrypt1 decrypt2 decrypt3 \
+ 	xmldsigverify
+ 
++ifndef CC
+ CC	= gcc
+-CFLAGS	+= -g $(shell xmlsec1-config --cflags) -DUNIX_SOCKETS
+-LDLIBS	+= -g $(shell xmlsec1-config --libs)
++endif
++
++CFLAGS  += -I../include -g $(shell PKG_CONFIG_PATH=.. pkg-config --cflags xmlsec1 ) -DUNIX_SOCKETS
++LDLIBS += -L../src/.libs -g $(shell PKG_CONFIG_PATH=.. pkg-config --libs xmlsec1 )
++
++DESTDIR = /usr/share/xmlsec1
++install-ptest:
++	if [ ! -d $(DESTDIR) ]; then mkdir -p $(DESTDIR); fi
++	cp * $(DESTDIR)
+ 
+ all: $(PROGRAMS)
+ 
diff --git a/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/run-ptest b/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/run-ptest
new file mode 100755
index 0000000..a203c38
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/run-ptest
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+check_return() {
+    if [ $? == 0 ]; then
+        echo -e "PASS: $1\n"
+    else
+        echo -e "FAIL: $1\n"
+    fi
+}
+
+echo "---------------------------------------------------"
+echo "Signing a template file..."
+./sign1 sign1-tmpl.xml rsakey.pem > sign1-res.xml
+./verify1 sign1-res.xml rsapub.pem
+check_return sign-tmpl
+
+echo "---------------------------------------------------"
+echo "Signing a dynamicaly created template..."
+./sign2 sign2-doc.xml rsakey.pem > sign2-res.xml
+./verify1 sign2-res.xml rsapub.pem
+check_return sign-dynamic-templ
+
+echo "---------------------------------------------------"
+echo "Signing with X509 certificate..."
+./sign3 sign3-doc.xml rsakey.pem rsacert.pem > sign3-res.xml
+./verify3 sign3-res.xml ca2cert.pem cacert.pem
+check_return sign-x509
+
+echo "---------------------------------------------------"
+echo "Verifying a signature with a single key..."
+./verify1 sign1-res.xml rsapub.pem
+./verify1 sign2-res.xml rsapub.pem
+check_return verify-single-key
+
+echo "---------------------------------------------------"
+echo "Verifying a signature with keys manager..."
+./verify2 sign1-res.xml rsapub.pem
+./verify2 sign2-res.xml rsapub.pem
+check_return verify-keys-manager
+
+echo "---------------------------------------------------"
+echo "Verifying a signature with X509 certificates..."
+./verify3 sign3-res.xml ca2cert.pem cacert.pem
+check_return verify-x509
+
+echo "---------------------------------------------------"
+echo "Verifying a signature with additional restrictions..."
+./verify4 verify4-res.xml ca2cert.pem cacert.pem
+check_return verify-res
+
+echo "---------------------------------------------------"
+echo "Encrypting data with a template file..."
+./encrypt1 encrypt1-tmpl.xml deskey.bin > encrypt1-res.xml
+./decrypt1 encrypt1-res.xml deskey.bin
+check_return encrypt-tmpl
+
+echo "---------------------------------------------------"
+echo "Encrypting data with a dynamicaly created template..."
+./encrypt2 encrypt2-doc.xml deskey.bin > encrypt2-res.xml
+./decrypt1 encrypt2-res.xml deskey.bin
+check_return encrypt-dynamic-tmpl
+
+echo "---------------------------------------------------"
+echo "Encrypting data with a session key..."
+./encrypt3 encrypt3-doc.xml rsakey.pem > encrypt3-res.xml
+./decrypt3 encrypt3-res.xml
+check_return encrypt-session-key
+
+echo "---------------------------------------------------"
+echo "Decrypting data with a single key..."
+./decrypt1 encrypt1-res.xml deskey.bin
+./decrypt1 encrypt2-res.xml deskey.bin
+check_return encrypt-single-key
+
+echo "---------------------------------------------------"
+echo "Decrypting data with keys manager..."
+./decrypt2 encrypt1-res.xml deskey.bin
+./decrypt2 encrypt2-res.xml deskey.bin
+check_return encrypt-keys-manager
+
+echo "---------------------------------------------------"
+echo "Writing a custom keys manager..."
+./decrypt3 encrypt1-res.xml
+./decrypt3 encrypt2-res.xml
+check_return write-keys-manager
diff --git a/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/xmlsec1-examples-allow-build-in-separate-dir.patch b/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/xmlsec1-examples-allow-build-in-separate-dir.patch
new file mode 100644
index 0000000..8b2533e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/xmlsec1-examples-allow-build-in-separate-dir.patch
@@ -0,0 +1,30 @@
+From 0c38c6864e7ba8f53a657d87894f24374a6a4932 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Tue, 30 Dec 2014 11:18:17 +0800
+Subject: [PATCH] examples: allow build in separate dir
+
+Upstream-Status: Inappropriate [ OE specific ]
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+
+---
+ examples/Makefile | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/examples/Makefile b/examples/Makefile
+index c1cbcca..3f1bd14 100644
+--- a/examples/Makefile
++++ b/examples/Makefile
+@@ -12,8 +12,10 @@ ifndef CC
+ CC	= gcc
+ endif
+ 
+-CFLAGS  += -I../include -g $(shell PKG_CONFIG_PATH=.. pkg-config --cflags xmlsec1 ) -DUNIX_SOCKETS
+-LDLIBS += -L../src/.libs -g $(shell PKG_CONFIG_PATH=.. pkg-config --libs xmlsec1 )
++top_srcdir = ..
++top_builddir = ..
++CFLAGS  += -I$(top_srcdir)/include -g $(shell PKG_CONFIG_PATH=$(top_srcdir) pkg-config --cflags xmlsec1 ) -DUNIX_SOCKETS
++LDLIBS += -L$(top_builddir)/src/.libs -g $(shell PKG_CONFIG_PATH=$(top_srcdir) pkg-config --libs xmlsec1 )
+ 
+ DESTDIR = /usr/share/xmlsec1
+ install-ptest:
diff --git a/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1_1.2.28.bb b/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1_1.2.28.bb
new file mode 100644
index 0000000..0a4c56a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1_1.2.28.bb
@@ -0,0 +1,64 @@
+SUMMARY = "XML Security Library is a C library based on LibXML2"
+DESCRIPTION = "\
+    XML Security Library is a C library based on \
+    LibXML2 and OpenSSL. The library was created with a goal to support major \
+    XML security standards "XML Digital Signature" and "XML Encryption". \
+    "
+HOMEPAGE = "http://www.aleksey.com/xmlsec/"
+DEPENDS = "libtool libxml2 libxslt zlib"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=352791d62092ea8104f085042de7f4d0"
+
+SECTION = "libs"
+
+SRC_URI = "http://www.aleksey.com/xmlsec/download/${BP}.tar.gz \
+    file://fix-ltmain.sh.patch \
+    file://change-finding-path-of-nss.patch \
+    file://makefile-ptest.patch \
+    file://xmlsec1-examples-allow-build-in-separate-dir.patch \
+    file://run-ptest \
+    "
+
+SRC_URI[md5sum] = "69b8d95c009a404462e19f335e650241"
+SRC_URI[sha256sum] = "13eec4811ea30e3f0e16a734d1dbf7f9d246a71d540b48d143a07b489f6222d4"
+
+inherit autotools-brokensep ptest pkgconfig
+
+CFLAGS += "-I${STAGING_INCDIR}/nspr4 -I${STAGING_INCDIR}/nss3"
+CPPFLAGS += "-I${STAGING_INCDIR}/nspr4 -I${STAGING_INCDIR}/nss3"
+
+PACKAGECONFIG ??= "gnutls libgcrypt nss openssl des"
+PACKAGECONFIG[gnutls] = ",,gnutls"
+PACKAGECONFIG[libgcrypt] = ",,libgcrypt"
+PACKAGECONFIG[nss] = "--with-nss=${STAGING_LIBDIR}/../.. --with-nspr=${STAGING_LIBDIR}/../..,,nss nspr"
+PACKAGECONFIG[openssl] = ",,openssl"
+PACKAGECONFIG[des] = ",--disable-des,,"
+
+# these can be dynamically loaded with xmlSecCryptoDLLoadLibrary()
+FILES_SOLIBSDEV = "${libdir}/libxmlsec1.so"
+FILES_${PN} += "${libdir}/libxmlsec1-*.so"
+INSANE_SKIP_${PN} = "dev-so"
+
+FILES_${PN}-dev += "${libdir}/xmlsec1Conf.sh"
+FILES_${PN}-dbg += "${PTEST_PATH}/.debug/*"
+
+RDEPENDS_${PN}-ptest += "${PN}-dev"
+INSANE_SKIP_${PN}-ptest += "dev-deps"
+
+PTEST_EXTRA_ARGS = "top_srcdir=${S} top_builddir=${B}"
+
+do_compile_ptest () {
+    oe_runmake -C ${S}/examples ${PTEST_EXTRA_ARGS} all
+}
+
+do_install_append() {
+    for i in ${bindir}/xmlsec1-config ${libdir}/xmlsec1Conf.sh \
+        ${libdir}/pkgconfig/xmlsec1-openssl.pc; do
+        sed -i -e "s@${RECIPE_SYSROOT}@@g" ${D}$i
+    done
+}
+
+do_install_ptest () {
+    oe_runmake -C ${S}/examples DESTDIR=${D}${PTEST_PATH} ${PTEST_EXTRA_ARGS} install-ptest
+}
diff --git a/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb b/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb
index 0929090..7e9971e 100644
--- a/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb
+++ b/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb
@@ -65,4 +65,4 @@
 RDEPENDS_${PN} +="bash"
 
 # http://errors.yoctoproject.org/Errors/Details/186956/
-EXCLUDE_FROM_WORLD_libc-musl = "1"
+COMPATIBLE_HOST_libc-musl = 'null'
diff --git a/meta-openembedded/meta-perl/recipes-perl/libenv/libenv-perl_1.04.bb b/meta-openembedded/meta-perl/recipes-perl/libenv/libenv-perl_1.04.bb
new file mode 100644
index 0000000..dd8e115
--- /dev/null
+++ b/meta-openembedded/meta-perl/recipes-perl/libenv/libenv-perl_1.04.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Perl module that imports environment variables as scalars or arrays"
+DESCRIPTION = "Perl maintains environment variables in a special hash named %ENV. \
+For when this access method is inconvenient, the Perl module Env allows environment \
+variables to be treated as scalar or array variables."
+
+HOMEPAGE = "http://search.cpan.org/~flora/Env/"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=76c1cbf18db56b3340d91cb947943bd3"
+
+SRC_URI = "http://search.cpan.org/CPAN/authors/id/F/FL/FLORA/Env-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "fdba5c0690e66972c96fee112cf5f25c"
+SRC_URI[sha256sum] = "d94a3d412df246afdc31a2199cbd8ae915167a3f4684f7b7014ce1200251ebb0"
+
+S = "${WORKDIR}/Env-${PV}"
+
+inherit cpan
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-alembic.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-alembic.inc
index bf3485c..7d11045 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-alembic.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-alembic.inc
@@ -2,8 +2,8 @@
 LICENSE = "BSD"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=28aaf14a6592d14dbfb2f4abd597aa27"
 
-SRC_URI[md5sum] = "b8603f4c9bac851570bd1798e8f23982"
-SRC_URI[sha256sum] = "cdb7d98bd5cbf65acd38d70b1c05573c432e6473a82f955cdea541b5c153b0cc"
+SRC_URI[md5sum] = "69fb6b25923d4f1e3c392447b342e358"
+SRC_URI[sha256sum] = "4a4811119efbdc5259d1f4c8f6de977b36ad3bcc919f59a29c2960c5ef9149e4"
 
 PYPI_PACKAGE = "alembic"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-alembic_1.0.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-alembic_1.1.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-alembic_1.0.11.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-alembic_1.1.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.9.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.9.16.bb
similarity index 63%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.9.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.9.16.bb
index 1b75e34..94db37a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.9.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-cmd2_0.9.16.bb
@@ -1,13 +1,15 @@
 SUMMARY = "Extra features for standard library's cmd module"
 HOMEPAGE = "http://packages.python.org/cmd2/"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=60bc6842001870a418935bd84570b676"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=01aeabea7ae1529a8e4b674b7107d6bc"
 
-SRC_URI[md5sum] = "bfe0900a2288283a40f0ee7533486a2f"
-SRC_URI[sha256sum] = "e7b6b4b76272a051c943c3c709cd760142af16fbc9218e0ed3c22b28ea38d0a8"
+SRC_URI[md5sum] = "df35bb2dca8f5e1f6090e1f0aa02960a"
+SRC_URI[sha256sum] = "4b78379d53aff811d1deac720bbe71661769822a5fb2d830cd730656d180fb3d"
 
 inherit pypi setuptools
 
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
 RDEPENDS_${PN} += "\
     ${PYTHON_PN}-doctest \
     ${PYTHON_PN}-pyparsing \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-daemon_2.1.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-daemon_2.1.2.bb
index ffb5beb..002da04 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-daemon_2.1.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-daemon_2.1.2.bb
@@ -8,8 +8,8 @@
                   python-resource \
 "
 
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+LICENSE = "Apache-2.0 & GPLv3"
+LIC_FILES_CHKSUM = "file://README;md5=2695c853a2cafc33e68a1d972889ebd2"
 
 inherit pypi setuptools
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio-tools.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio-tools.inc
index 91cc62f..1a15c48 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio-tools.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio-tools.inc
@@ -5,8 +5,8 @@
 DEPENDS_append = "${PYTHON_PN}-grpcio"
 RDEPENDS_${PN} = "${PYTHON_PN}-grpcio"
 
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=7145f7cdd263359b62d342a02f005515"
 
 inherit pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio.inc
index 7d3675c..c5762b2 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-grpcio.inc
@@ -17,8 +17,8 @@
                   ${PYTHON_PN}-six \
 "
 
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
 inherit pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-intervals.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-intervals.inc
index 1ecca35..a915e09 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-intervals.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-intervals.inc
@@ -2,8 +2,8 @@
 HOMEPAGE = "https://github.com/AlexandreDecan/python-intervals"
 SECTION = "devel/python"
 
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=05f1e16a8e59ce3e9a979e881816c2ab"
 
 PYPI_PACKAGE := "python-intervals"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc
index 6fdc024..8f5bdaa 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema.inc
@@ -2,10 +2,10 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=7a60a81c146ec25599a3e1dabb8610a8"
 
-SRC_URI[md5sum] = "50c6b69a373a8b55ff1e0ec6e78f13f4"
-SRC_URI[sha256sum] = "6ff5f3180870836cae40f06fa10419f557208175f13ad7bc26caa77beb1f6e02"
+SRC_URI[md5sum] = "2b44d00dccc96d7ba3839190263152eb"
+SRC_URI[sha256sum] = "8d4a2b7b6c2237e0199c8ea1a6d3e05bf118e289ae2b9d7ba444182a2959560d"
 
-DEPENDS += "${PYTHON_PN}-vcversioner-native"
+DEPENDS += "${PYTHON_PN}-vcversioner-native ${PYTHON_PN}-setuptools-scm-native"
 
 RDEPENDS_${PN} += " \
     ${PYTHON_PN}-core \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema_2.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema_3.0.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema_2.6.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-jsonschema_3.0.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-lockfile_0.12.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-lockfile_0.12.2.bb
index 9ad865d..20ea018 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-lockfile_0.12.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-lockfile_0.12.2.bb
@@ -5,7 +5,7 @@
 RDEPENDS_${PN} = "python-threading"
 
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2340dffbbfea534b58f1349984eeef72"
 
 inherit pypi setuptools
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-paste_3.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-paste_3.1.1.bb
similarity index 71%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-paste_3.1.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-paste_3.1.1.bb
index 6873b7d..90e7970 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-paste_3.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-paste_3.1.1.bb
@@ -5,8 +5,8 @@
 
 LIC_FILES_CHKSUM = "file://docs/license.txt;md5=1798f29d55080c60365e6283cb49779c"
 
-SRC_URI[md5sum] = "904ec5634f3f901cadf529711930a98b"
-SRC_URI[sha256sum] = "18323f22df5ab6998fdf4c5aa5a9f41d33ff949a87ad7b2ca48e72fbf50fa3e4"
+SRC_URI[md5sum] = "07132313bc62c7525402d31119161228"
+SRC_URI[sha256sum] = "baca402a089594db0cf1e9aae5c98bcf91588bbbaf848527257e246b960eb72f"
 
 PYPI_PACKAGE = "Paste"
 inherit pypi setuptools
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pint.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pint.inc
index 53f7783..2bc8e4a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pint.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pint.inc
@@ -3,7 +3,7 @@
 SECTION = "devel/python"
 
 LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=bccf824202692270a1e0829a62e3f47b"
 
 PYPI_PACKAGE := "Pint"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pip_19.2.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pip_19.2.3.bb
similarity index 75%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pip_19.2.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pip_19.2.3.bb
index 9a03727..506a9e2 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pip_19.2.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pip_19.2.3.bb
@@ -3,8 +3,8 @@
 LICENSE = "MIT & LGPL-2.1"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=8ba06d529c955048e5ddd7c45459eb2e"
 
-SRC_URI[md5sum] = "2ba0a3b76d39ccd90ca22bfa82fc635f"
-SRC_URI[sha256sum] = "e05103825871e210d50a44c7e448587b0ed99dd775d3ef586304c58f40224a53"
+SRC_URI[md5sum] = "f417444c66a0db1a82c8d9d2283a2f95"
+SRC_URI[sha256sum] = "e7a31f147974362e6c82d84b91c7f2bdf57e4d3163d3d454e6c3e71944d67135"
 
 inherit pypi setuptools
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc
index 320359a..c9bee62 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy.inc
@@ -1,9 +1,11 @@
 SUMMARY = "Plugin and hook calling mechanisms for python"
 HOMEPAGE = "https://github.com/pytest-dev/pluggy"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=338dad807ed9337bfaeb9979c3bfe20f"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1c8206d16fd5cc02fa9b0bb98955e5c2"
 
-SRC_URI[md5sum] = "ffdde7c3a5ba9a440404570366ffb6d5"
-SRC_URI[sha256sum] = "7f8ae7f5bdf75671a718d2daf0a64b7885f74510bcd98b1a0bb420eb9a9d0cff"
+SRC_URI[md5sum] = "e986647f5d786c0cc1bd065cf9bac658"
+SRC_URI[sha256sum] = "0825a152ac059776623854c1543d65a4ad408eb3d33ee114dff91e57ec6ae6fc"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
 
 inherit pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pluggy_0.12.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pluggy_0.6.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pluggy_0.12.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-protobuf.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-protobuf.inc
index ce95e66..5058d4b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-protobuf.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-protobuf.inc
@@ -3,7 +3,7 @@
 SECTION = "devel/python"
 
 LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=19e8f490f9526b1de84f8d949cfcfd4e"
 
 inherit pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest.inc
index 4c32dfb..49ef790 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest.inc
@@ -1,13 +1,13 @@
 SUMMARY = "Simple powerful teting with python"
 HOMEPAGE = "http://pytest.org"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c39b24965f4aef64222cb35de9d47cc4"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=640061b8cee64b308a4d2f9f556c12f2"
 
-SRC_URI[md5sum] = "1b83a25d45fad893f430fc5031653c56"
-SRC_URI[sha256sum] = "117bad36c1a787e1a8a659df35de53ba05f9f3398fb9e4ac17e80ad5903eb8c5"
+SRC_URI[md5sum] = "662313b4f539f5b66d2fb77791458e82"
+SRC_URI[sha256sum] = "c3d5020755f70c82eceda3feaf556af9a341334414a8eca521a18f463bcead88"
 
 SRC_URI_append = " file://0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch \
-                   file://pytest_version_fix.patch "
+                   "
 
 inherit update-alternatives
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch
index 06dfcdf..c29fb12 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch
@@ -1,7 +1,7 @@
-From 24a901fd17926e8e05be4ed2e01b0113a2e3a852 Mon Sep 17 00:00:00 2001
-From: Derek Straka <derek@asterius.io>
-Date: Tue, 19 Dec 2017 11:36:39 -0500
-Subject: [PATCH] [PATCH 1/1] setup.py: remove the setup_requires for
+From ff784f4803ab33f5e3389e40d038d52d1e211843 Mon Sep 17 00:00:00 2001
+From: Yuan Chao <yuanc.fnst@cn.fujitsu.com>
+Date: Wed, 28 Aug 2019 16:12:27 +0900
+Subject: [PATCH] [PATCH] setup.py: remove the setup_requires for
  setuptools-scm
 
 The setup_requires argument forces the download of the egg file for setuptools-scm
@@ -12,21 +12,25 @@
 Upstream-Status: Inappropriate [oe specific]
 
 Signed-off-by: Derek Straka <derek@asterius.io>
+
+Signed-off-by: Yuan Chao <yuanc.fnst@cn.fujitsu.com>
 ---
- setup.py | 1 -
- 1 file changed, 1 deletion(-)
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/setup.py b/setup.py
-index 3eb38ef..1163202 100644
+index adbafb5..75fdd09 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -82,7 +82,6 @@ def main():
-         keywords="test unittest",
-         cmdclass={'test': PyTest},
-         # the following should be enabled for release
--        setup_requires=['setuptools-scm'],
-         python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*',
-         install_requires=install_requires,
-         extras_require=extras_require,
+@@ -19,7 +19,7 @@ INSTALL_REQUIRES = [
+ def main():
+     setup(
+         use_scm_version={"write_to": "src/_pytest/_version.py"},
+-        setup_requires=["setuptools-scm", "setuptools>=40.0"],
++        setup_requires=["setuptools>=40.0"],
+         package_dir={"": "src"},
+         extras_require={
+             "testing": [
 -- 
-2.7.4
+2.17.1
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest/pytest_version_fix.patch b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest/pytest_version_fix.patch
deleted file mode 100644
index b373d93..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest/pytest_version_fix.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-Upstream-Status: Inappropriate (OE specific) 
-
-python-pytest: remove fetch during do_compile phase
-commit: c974fbf9ebf185552ab65301e07af44f36517abf 
-
-introduced an issue by making the version 0.0.0
-this fixes that
-
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
-Index: pytest-3.2.2/setup.py
-===================================================================
---- pytest-3.2.2.orig/setup.py
-+++ pytest-3.2.2/setup.py
-@@ -1,5 +1,6 @@
- import os
- import sys
-+import re
- import setuptools
- import pkg_resources
- from setuptools import setup, Command
-@@ -22,6 +23,18 @@ classifiers = [
- with open('README.rst') as fd:
-     long_description = fd.read()
- 
-+def read(*names, **kwargs):
-+    with open(os.path.join( *names), 'r') as fp:
-+        return fp.read()
-+
-+def find_version(*file_paths):
-+    version_file = read(*file_paths)
-+    version_match = re.search(r"^version = ['\']([^'\"]*)['\']",
-+                              version_file, re.M)
-+
-+    if version_match:
-+        return version_match.group(1)
-+    raise RuntimeError("Unable to find version string.")
- 
- def get_environment_marker_support_level():
-     """
-@@ -59,9 +72,7 @@ def main():
-         name='pytest',
-         description='pytest: simple powerful testing with Python',
-         long_description=long_description,
--        use_scm_version={
--            'write_to': '_pytest/_version.py',
--        },
-+	version=find_version("_pytest", "_version.py"),
-         url='http://pytest.org',
-         license='MIT license',
-         platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pytest_3.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pytest_5.1.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pytest_3.4.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pytest_5.1.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml.inc
index afce543..e9ae85e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml.inc
@@ -2,14 +2,14 @@
 HOMEPAGE = "http://www.pyyaml.org"
 SECTION = "devel/python"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5591701d32590f9fa94f3bfee820b634"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a76b4c69bfcf82313bbdc0393b04438a"
 DEPENDS = "libyaml ${PYTHON_PN}-cython-native ${PYTHON_PN}"
 
 PYPI_PACKAGE = "PyYAML"
 inherit pypi
 
-SRC_URI[md5sum] = "b78b96636d68ac581c0e2f38158c224f"
-SRC_URI[sha256sum] = "3ef3092145e9b70e3ddd2c7ad59bdd0252a94dfe3949721633e41344de00a6bf"
+SRC_URI[md5sum] = "20f87ab421b0271dbf371dc5c1cddb5c"
+SRC_URI[sha256sum] = "01adf0b6c6f61bd11af6e10ca52b7d4057dd0be0343eb9283c878cf3af56aee4"
 
 RDEPENDS_${PN} += "\
     ${PYTHON_PN}-datetime \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_3.13.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_5.1.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_3.13.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-pyyaml_5.1.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-robotframework-seriallibrary.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-robotframework-seriallibrary.inc
index 9f07b65..bfcb023 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-robotframework-seriallibrary.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-robotframework-seriallibrary.inc
@@ -1,7 +1,7 @@
 SUMMARY = "Robot Framework test library for serial connection"
 HOMEPAGE = "https://github.com/whosaysni/robotframework-seriallibrary"
 LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=7145f7cdd263359b62d342a02f005515"
 
 SRC_URI[md5sum] = "b7c9565d54c30df7cd3f3c0e29adffa3"
 SRC_URI[sha256sum] = "256ad60fc0b7df4be44d82c302f5ed8fad4935cda99e4b45942e3c88179d1e19"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-scrypt.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-scrypt.inc
index 783d05b..aff86a5 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-scrypt.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-scrypt.inc
@@ -1,6 +1,6 @@
 DESCRIPTION = "Bindings for the scrypt key derivation function library"
 LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-2-Clause;md5=8bef8e6712b1be5aa76af1ebde9d6378"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=168ff75417f75a83e63c8875292d44dc"
 HOMEPAGE="https://bitbucket.org/mhallin/py-scrypt/overview"
 
 FILESEXTRAPATHS_prepend := "${THISDIR}/python-scrypt:"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc
index 005aaad..d70104d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-twisted.inc
@@ -5,10 +5,10 @@
 
 #twisted/topfiles/NEWS:655: - Relicensed: Now under the MIT license, rather than LGPL.
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d136e8cf7b52f2e64079186ae2060d8a"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1743f12d8b8f5aec625c0569a058f0a6"
 
-SRC_URI[sha256sum] = "fa2c04c2d68a9be7fc3975ba4947f653a57a656776f24be58ff0fe4b9aaf3e52"
-SRC_URI[md5sum] = "528b7856938edc2a752c244aebd94981"
+SRC_URI[sha256sum] = "d5db93026568f60cacdc0615fcd21d46f694a6bfad0ef3ff53cde2b4bb85a39d"
+SRC_URI[md5sum] = "5e9296a952430d288cdcdc6ad9eb5ee8"
 
 PYPI_PACKAGE = "Twisted"
 PYPI_PACKAGE_EXT = "tar.bz2"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-twisted_19.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-twisted_19.7.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-twisted_19.2.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-twisted_19.7.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-typing.inc b/meta-openembedded/meta-python/recipes-devtools/python/python-typing.inc
index b392b75..ab8ee81 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-typing.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-typing.inc
@@ -3,7 +3,7 @@
 LICENSE = "PSF"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=64fc2b30b67d0a8423c250e0386ed72f"
 
-SRC_URI[md5sum] = "8a3e4b822bac02b9b33c97e7d4f1521c"
-SRC_URI[sha256sum] = "53765ec4f83a2b720214727e319607879fec4acde22c4fbb54fa2604e79e44ce"
+SRC_URI[md5sum] = "0a1ebd4af65b4769e33459004eb20345"
+SRC_URI[sha256sum] = "91dfe6f3f706ee8cc32d38edbbf304e9b7583fb37108fef38229617f8b3eba23"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-typing_3.7.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-typing_3.7.4.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python-typing_3.7.4.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python-typing_3.7.4.1.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
index 9df4520..6b44482 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python-xxhash.inc
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-xxhash.inc
@@ -1,7 +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"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5a8d76283514a1b7e6a414aba38629b5"
 
-SRC_URI[md5sum] = "a4289aa01839f3ea1fb98929d9131001"
-SRC_URI[sha256sum] = "fe21f23a9d05428c75461790b670f2bf15f50a632d6c171a7e7b588269c619e6"
+SRC_URI[md5sum] = "2e6c0bd69a540e15ff2222d6cb8da466"
+SRC_URI[sha256sum] = "6b5af8c37ff12745ae77f28e695c0d3a3327932fd229824e49382377e940fdf1"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.0.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.1.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.0.11.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-alembic_1.1.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_2.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_3.0.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_2.6.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-jsonschema_3.0.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.12.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.6.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pluggy_0.12.0.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.32.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.32.1.bb
new file mode 100644
index 0000000..6d80c10
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyatspi_2.32.1.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Python bindings for DBus AT-SPI2 accessibility"
+DESCRIPTION = "AT-SPI2 is a protocol over DBus, toolkit widgets use to provide content to screen readers such as Orca"
+SECTION = "devel/python"
+HOMEPAGE = "https://www.freedesktop.org/wiki/Accessibility/AT-SPI2/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e9f288ba982d60518f375b5898283886 \
+                    file://COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
+DEPENDS = "python3-dbus-native glib-2.0 dbus-glib libxml2 atk gtk+ python3-pygobject"
+
+SRC_URI = "git://github.com/GNOME/pyatspi2.git;protocol=https;branch=gnome-3-32"
+SRCREV = "dc4565208fca00da06b972915a080ad3c63f640d"
+S = "${WORKDIR}/git" 
+
+inherit pkgconfig autotools python3native
+
+FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}/pyatspi/*"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.6.0.bb
new file mode 100644
index 0000000..89d718d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pystemd_0.6.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Python bindings for interacting with systemd over DBus"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI[md5sum] = "c5472be419f53f53f5da089ca8c981c0"
+SRC_URI[sha256sum] = "b1fc072c87e3766711f64caf86fd633dca393e20c8a0a37a5058dd70a21d8a14"
+
+DEPENDS = "systemd"
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+inherit pypi setuptools3 distro_features_check
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_3.4.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_5.1.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_3.4.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pytest_5.1.1.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_3.13.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_5.1.2.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_3.13.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyyaml_5.1.2.bb
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_19.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_19.7.0.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_19.2.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-twisted_19.7.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.4.1.bb
similarity index 100%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_1.3.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-xxhash_1.4.1.bb
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-datetime-setter/files/fix-inner-dependency.patch b/meta-openembedded/meta-xfce/recipes-apps/xfce4-datetime-setter/files/fix-inner-dependency.patch
new file mode 100644
index 0000000..9cccb89
--- /dev/null
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-datetime-setter/files/fix-inner-dependency.patch
@@ -0,0 +1,28 @@
+It fails to compile xfce4-datetime-setter occasionally when system load is high:
+
+| ../git/xfce/main.c:42:10: fatal error: cc-datetime-resources.h: No such file or directory
+|    42 | #include "cc-datetime-resources.h"
+|       |          ^~~~~~~~~~~~~~~~~~~~~~~~~
+| compilation terminated.
+
+Update datetime_panel_dep to make sure cc-datetime-resources.h be generated
+before including.
+
+Upstream-Status: Submitted [https://github.com/schnitzeltony/xfce4-datetime-setter/pull/2]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+diff --git a/panels/datetime/meson.build b/panels/datetime/meson.build
+index c5bf39c..241e177 100644
+--- a/panels/datetime/meson.build
++++ b/panels/datetime/meson.build
+@@ -175,7 +175,8 @@ datetime_panel_lib = static_library(
+ 
+ datetime_panel_dep = declare_dependency(
+   include_directories: [ common_inc, include_directories('.') ],
+-  link_with: datetime_panel_lib
++  link_with: datetime_panel_lib,
++  sources: resources
+ )
+ 
+ subdir('po-timezones')
diff --git a/meta-openembedded/meta-xfce/recipes-apps/xfce4-datetime-setter/xfce4-datetime-setter_3.32.2.bb b/meta-openembedded/meta-xfce/recipes-apps/xfce4-datetime-setter/xfce4-datetime-setter_3.32.2.bb
index d643585..4d128ac 100644
--- a/meta-openembedded/meta-xfce/recipes-apps/xfce4-datetime-setter/xfce4-datetime-setter_3.32.2.bb
+++ b/meta-openembedded/meta-xfce/recipes-apps/xfce4-datetime-setter/xfce4-datetime-setter_3.32.2.bb
@@ -6,13 +6,16 @@
 
 DEPENDS = "glib-2.0-native libxfce4ui"
 
-SRC_URI = "git://github.com/schnitzeltony/xfce4-datetime-setter.git;protocol=https"
+SRC_URI = "git://github.com/schnitzeltony/xfce4-datetime-setter.git;protocol=https \
+           file://fix-inner-dependency.patch \
+"
 SRCREV = "5c7a73a3824b03b91719e05e2604b97c7a72d50f"
 
 S = "${WORKDIR}/git"
 
 inherit gettext meson distro_features_check
-REQUIRED_DISTRO_FEATURES = "systemd"
+
+REQUIRED_DISTRO_FEATURES = "systemd x11"
 
 FILES_${PN} += "${datadir}/icons/hicolor"
 
diff --git a/meta-openembedded/meta-xfce/recipes-multimedia/packagegroups/packagegroup-xfce-multimedia.bb b/meta-openembedded/meta-xfce/recipes-multimedia/packagegroups/packagegroup-xfce-multimedia.bb
index 19a6e2b..c30c799 100644
--- a/meta-openembedded/meta-xfce/recipes-multimedia/packagegroups/packagegroup-xfce-multimedia.bb
+++ b/meta-openembedded/meta-xfce/recipes-multimedia/packagegroups/packagegroup-xfce-multimedia.bb
@@ -1,6 +1,4 @@
 SUMMARY = "All packages multimedia packages available for XFCE"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
 
 inherit packagegroup
 
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb b/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb
index 140de41..daee73e 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb
@@ -1,7 +1,5 @@
 SUMMARY = "All packages required for a base installation of XFCE"
 SECTION = "x11/wm"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
 PR = "r5"
 
 inherit packagegroup distro_features_check
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb b/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb
index a22a2e0..527f81f 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb
@@ -1,7 +1,5 @@
 SUMMARY = "All packages for full XFCE installation"
 SECTION = "x11/wm"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
 
 PR = "r10"