From c5cdb3b918840a3d6d8f1f8af933dda5d98b4000 Mon Sep 17 00:00:00 2001
From: Andrei Gherzan <andrei.gherzan@huawei.com>
Date: Mon, 23 Aug 2021 14:30:26 +0100
Subject: [PATCH] networkmanager: Fix builds with musl

On musl, build would fail with:

| In file included from
../NetworkManager-1.22.10/shared/systemd/src/basic/env-util.c:11:
|
../NetworkManager-1.22.10/shared/systemd/src/basic/alloc-util.h:100:35:
error: static declaration of 'reallocarray' follows non-static
declaration
|   100 | _alloc_(2, 3) static inline void *reallocarray(void *p, size_t
need, size_t size) {
|       |                                   ^~~~~~~~~~~~
| In file included from
../NetworkManager-1.22.10/shared/nm-default.h:184,
|                  from
../NetworkManager-1.22.10/shared/systemd/sd-adapt-shared/nm-sd-adapt-shared.h:9,
|                  from
../NetworkManager-1.22.10/shared/systemd/src/basic/env-util.c:3:
|
[...]/build-linux/tmp/work/aarch64-poky-linux-musl/networkmanager/1.22.10-r0/recipe-sysroot/usr/include/stdlib.h:148:7:
note: previous declaration of 'reallocarray' with type 'void *(void *,
size_t,  size_t)' {aka 'void *(void *, long unsigned
 int,  long unsigned int)'}
|   148 | void *reallocarray (void *, size_t, size_t);
|       |       ^~~~~~~~~~~~

This is because musl does't provide reallocarray as part of malloc.h but
only as part of stdlib.h. Configure script was modified to check for its
definition in stdlib.h as well (backported patch).

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
Signed-off-by: Bernhard Rosenkraenzer <bernhard.rosenkraenzer.ext@huawei.com> [adapt filename in .bbappend to match the actual patch filename]
---
 .../fix-reallocarray-check.patch              | 24 +++++++++++++++++++
 .../fix-reallocarray-check.patch.license      |  3 +++
 .../networkmanager_1.22.10.bbappend           |  7 ++++++
 3 files changed, 34 insertions(+)
 create mode 100644 meta-ohos-staging/recipes-connectivity/networkmanager/networkmanager-1.22.10/fix-reallocarray-check.patch
 create mode 100644 meta-ohos-staging/recipes-connectivity/networkmanager/networkmanager-1.22.10/fix-reallocarray-check.patch.license
 create mode 100644 meta-ohos-staging/recipes-connectivity/networkmanager/networkmanager_1.22.10.bbappend

diff --git a/meta-ohos-staging/recipes-connectivity/networkmanager/networkmanager-1.22.10/fix-reallocarray-check.patch b/meta-ohos-staging/recipes-connectivity/networkmanager/networkmanager-1.22.10/fix-reallocarray-check.patch
new file mode 100644
index 00000000..9fd0a172
--- /dev/null
+++ b/meta-ohos-staging/recipes-connectivity/networkmanager/networkmanager-1.22.10/fix-reallocarray-check.patch
@@ -0,0 +1,24 @@
+From c992f460c74bee491f831a21326f51c907376ebf Mon Sep 17 00:00:00 2001
+From: Leo <thinkabit.ukim@gmail.com>
+Date: Thu, 10 Dec 2020 08:10:40 -0300
+Subject: [PATCH] build: check for reallocarray in stdlib.h
+
+Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
+Upstream-status: Backport
+
+---
+ configure.ac | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/configure.ac b/configure.ac
+index f86cda69ac0..8fd65d13713 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -83,6 +83,7 @@ AC_CHECK_DECLS([
+ 	reallocarray],
+ 	[], [], [[
+ #include <malloc.h>
++#include <stdlib.h>
+ ]])
+ 
+ AC_CHECK_DECLS([
diff --git a/meta-ohos-staging/recipes-connectivity/networkmanager/networkmanager-1.22.10/fix-reallocarray-check.patch.license b/meta-ohos-staging/recipes-connectivity/networkmanager/networkmanager-1.22.10/fix-reallocarray-check.patch.license
new file mode 100644
index 00000000..98a0b3f4
--- /dev/null
+++ b/meta-ohos-staging/recipes-connectivity/networkmanager/networkmanager-1.22.10/fix-reallocarray-check.patch.license
@@ -0,0 +1,3 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
diff --git a/meta-ohos-staging/recipes-connectivity/networkmanager/networkmanager_1.22.10.bbappend b/meta-ohos-staging/recipes-connectivity/networkmanager/networkmanager_1.22.10.bbappend
new file mode 100644
index 00000000..8baf5c25
--- /dev/null
+++ b/meta-ohos-staging/recipes-connectivity/networkmanager/networkmanager_1.22.10.bbappend
@@ -0,0 +1,7 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"
+
+SRC_URI_append = " file://fix-reallocarray-check.patch"
-- 
GitLab