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/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;