void-packages/srcpkgs/sysprof/patches/musl.patch

158 lines
5.2 KiB
Diff

From 1d2de32e97bf5569cc33ee9a90c873e1bbd2b1e6 Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
Date: Sun, 6 Sep 2020 18:21:37 +0200
Subject: [PATCH] fix build on musl
---
.../sysprof-capture-cursor.c | 1 +
.../sysprof-capture-reader.c | 1 +
src/libsysprof-capture/sysprof-capture-util.c | 1 +
.../sysprof-capture-writer-cat.c | 1 +
src/libsysprof-capture/sysprof-collector.c | 1 +
src/libsysprof-capture/sysprof-compat.h | 28 +++++++++++++++++++
src/libsysprof-capture/sysprof-platform.c | 1 +
7 files changed, 34 insertions(+)
create mode 100644 src/libsysprof-capture/sysprof-compat.h
diff --git src/libsysprof-capture/sysprof-capture-cursor.c src/libsysprof-capture/sysprof-capture-cursor.c
index 24563f0..bb77a60 100644
--- a/src/libsysprof-capture/sysprof-capture-cursor.c
+++ b/src/libsysprof-capture/sysprof-capture-cursor.c
@@ -59,6 +59,7 @@
#include <assert.h>
#include <stdlib.h>
+#include "sysprof-compat.h"
#include "sysprof-capture-condition.h"
#include "sysprof-capture-cursor.h"
#include "sysprof-capture-reader.h"
diff --git src/libsysprof-capture/sysprof-capture-reader.c src/libsysprof-capture/sysprof-capture-reader.c
index 67c6b28..252d006 100644
--- a/src/libsysprof-capture/sysprof-capture-reader.c
+++ b/src/libsysprof-capture/sysprof-capture-reader.c
@@ -68,6 +68,7 @@
#include <sys/types.h>
#include <unistd.h>
+#include "sysprof-compat.h"
#include "sysprof-capture-reader.h"
#include "sysprof-capture-util-private.h"
#include "sysprof-capture-writer.h"
diff --git src/libsysprof-capture/sysprof-capture-util.c src/libsysprof-capture/sysprof-capture-util.c
index 0bbea06..0e5f7e7 100644
--- a/src/libsysprof-capture/sysprof-capture-util.c
+++ b/src/libsysprof-capture/sysprof-capture-util.c
@@ -56,6 +56,7 @@
#include "config.h"
+#include <stdint.h>
#include <assert.h>
#include <errno.h>
#include <unistd.h>
diff --git src/libsysprof-capture/sysprof-capture-writer-cat.c src/libsysprof-capture/sysprof-capture-writer-cat.c
index 66171b9..9febbbb 100644
--- a/src/libsysprof-capture/sysprof-capture-writer-cat.c
+++ b/src/libsysprof-capture/sysprof-capture-writer-cat.c
@@ -63,6 +63,7 @@
#include <stdlib.h>
#include <unistd.h>
+#include "sysprof-compat.h"
#include "sysprof-capture.h"
#include "sysprof-macros-internal.h"
diff --git src/libsysprof-capture/sysprof-collector.c src/libsysprof-capture/sysprof-collector.c
index 1d7a0d6..7af6c96 100644
--- a/src/libsysprof-capture/sysprof-collector.c
+++ b/src/libsysprof-capture/sysprof-collector.c
@@ -73,6 +73,7 @@
#include "mapped-ring-buffer.h"
+#include "sysprof-compat.h"
#include "sysprof-capture-util-private.h"
#include "sysprof-collector.h"
#include "sysprof-macros-internal.h"
diff --git src/libsysprof-capture/sysprof-compat.h src/libsysprof-capture/sysprof-compat.h
new file mode 100644
index 0000000..ae9bf10
--- /dev/null
+++ b/src/libsysprof-capture/sysprof-compat.h
@@ -0,0 +1,28 @@
+/* added by q66 @ void to fix build on musl */
+
+#pragma once
+
+#ifndef __GLIBC__
+
+#include <stdlib.h>
+#include <errno.h>
+
+/* from glibc */
+#ifndef TEMP_FAILURE_RETRY
+# define TEMP_FAILURE_RETRY(expression) \
+ (__extension__ \
+ ({ long int __result; \
+ do __result = (long int) (expression); \
+ while (__result == -1L && errno == EINTR); \
+ __result; }))
+#endif
+
+static inline void *reallocarray(void *p, size_t nmemb, size_t sz) {
+ if (sz && (nmemb > ((size_t)-1 / sz))) {
+ errno = ENOMEM;
+ return NULL;
+ }
+ return realloc(p, nmemb * sz);
+}
+
+#endif
diff --git src/libsysprof-capture/sysprof-platform.c src/libsysprof-capture/sysprof-platform.c
index a80ab89..05bd590 100644
--- a/src/libsysprof-capture/sysprof-platform.c
+++ b/src/libsysprof-capture/sysprof-platform.c
@@ -60,6 +60,7 @@
#include <sys/syscall.h>
#include <unistd.h>
+#include "sysprof-compat.h"
#include "sysprof-capture-util-private.h"
#include "sysprof-platform.h"
--
2.28.0
From here onward, blame sgn
Index: meson.build
===================================================================
--- a/meson.build
+++ b/meson.build
@@ -69,6 +69,7 @@ config_h.set('LOCALEDIR', 'PACKAGE_LOCAL
config_h.set('HAVE_EXECINFO_H', cc.has_header('execinfo.h'))
config_h.set('HAVE_STRLCPY', cc.has_function('strlcpy'))
+config_h.set('HAVE_REALLOCARRAY', cc.has_function('reallocarray'))
if get_option('libunwind')
libunwind_dep = dependency('libunwind-generic', required: false)
Index: src/libsysprof-capture/sysprof-compat.h
===================================================================
--- a/src/libsysprof-capture/sysprof-compat.h 2021-02-05 23:39:58.352258624 +0100
+++ b/src/libsysprof-capture/sysprof-compat.h 2021-02-05 23:47:07.662841454 +0100
@@ -17,6 +17,7 @@
__result; }))
#endif
+#ifndef HAVE_REALLOCARRAY
static inline void *reallocarray(void *p, size_t nmemb, size_t sz) {
if (sz && (nmemb > ((size_t)-1 / sz))) {
errno = ENOMEM;
@@ -24,5 +25,5 @@
}
return realloc(p, nmemb * sz);
}
-
+#endif
#endif