From e07a68da661a4cd71d189b241316517c122f4209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Sun, 24 Feb 2019 02:55:06 +0100 Subject: [PATCH] ucommon: add my current patchset --- dev-libs/ucommon/patches/ucommon-git.patchset | 143 ++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 dev-libs/ucommon/patches/ucommon-git.patchset diff --git a/dev-libs/ucommon/patches/ucommon-git.patchset b/dev-libs/ucommon/patches/ucommon-git.patchset new file mode 100644 index 000000000..350379338 --- /dev/null +++ b/dev-libs/ucommon/patches/ucommon-git.patchset @@ -0,0 +1,143 @@ +From d4b74d78e5483b18a6d74212682b1324fe35d1c1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= +Date: Sun, 24 Feb 2019 02:20:34 +0100 +Subject: [PATCH 1/3] test for mlock (Haiku does not have it) + +--- + cmake/config.cmake | 1 + + configure.ac | 6 +++++- + corelib/mapped.cpp | 4 ++++ + 3 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/cmake/config.cmake b/cmake/config.cmake +index d887f13a..e04b0d45 100644 +--- a/cmake/config.cmake ++++ b/cmake/config.cmake +@@ -58,6 +58,7 @@ check_function_exists(waitpid HAVE_WAITPID) + check_function_exists(wait4 HAVE_WAIT4) + check_function_exists(setgroups HAVE_SETGROUPS) + check_function_exists(strlcpy HAVE_STRLCPY) ++check_function_exists(mlocl HAVE_MLOCK) + + check_include_files(sys/stat.h HAVE_SYS_STAT_H) + check_include_files(strings.h HAVE_STRINGS_H) +diff --git a/configure.ac b/configure.ac +index 9bcaca5e..77bc9265 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -255,6 +255,10 @@ AC_CHECK_LIB($clib, stristr, [ + AC_DEFINE(HAVE_STRISTR, [1], [string istr]) + ]) + ++AC_CHECK_LIB($clib, mlock, [ ++ AC_DEFINE(HAVE_MLOCK, [1], [mlock]) ++]) ++ + AC_CHECK_LIB($clib, sysconf, [ + AC_DEFINE(HAVE_SYSCONF, [1], [system config]) + ]) +@@ -347,7 +351,7 @@ if test "$threading" = "none" ; then + fi + fi + +-for func in ftok shm_open nanosleep clock_nanosleep clock_gettime strerror_r localtime_r gmtime_r posix_fadvise ftruncate pwrite setgroups setpgrp setlocale gettext execvp atexit realpath symlink readlink waitpid wait4 endgrent strlcpy; do ++for func in ftok shm_open nanosleep clock_nanosleep clock_gettime strerror_r localtime_r gmtime_r posix_fadvise ftruncate pwrite setgroups setpgrp setlocale gettext execvp atexit realpath symlink readlink waitpid wait4 endgrent strlcpy mlock; do + found="no" + AC_CHECK_FUNC($func,[ + found=$func +diff --git a/corelib/mapped.cpp b/corelib/mapped.cpp +index f23e2f8c..87839df1 100644 +--- a/corelib/mapped.cpp ++++ b/corelib/mapped.cpp +@@ -354,7 +354,9 @@ void MappedMemory::create(const char *fn, size_t len) + ::close(fd); + if(map != (caddr_t)MAP_FAILED) { + size = mapsize = len; ++#ifdef HAVE_MLOCK + mlock(map, mapsize); ++#endif + #if INSERT_OFFSET > 0 + if(prot & PROT_WRITE) { + size -= INSERT_OFFSET; +@@ -377,7 +379,9 @@ void MappedMemory::release() + if(size) { + if(use_mapping) { + map -= INSERT_OFFSET; ++#ifdef HAVE_MLOCK + munlock(map, mapsize); ++#endif + munmap(map, mapsize); + } + else +-- +2.19.1 + + +From 070bfcfe30f6ae94449bf2ab12cf3a73a13d2595 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= +Date: Sun, 24 Feb 2019 02:41:23 +0100 +Subject: [PATCH 2/3] use libnetwork on Haiku + +--- + cmake/ucommon.cmake | 4 ++++ + configure.ac | 3 +++ + 2 files changed, 7 insertions(+) + +diff --git a/cmake/ucommon.cmake b/cmake/ucommon.cmake +index 134c115c..f921f17a 100644 +--- a/cmake/ucommon.cmake ++++ b/cmake/ucommon.cmake +@@ -17,6 +17,10 @@ if (NOT UCOMMON_CONFIGURED) + set(UCOMMON_LIBS ${UCOMMON_LIBS} nsl socket) + endif() + ++ if(CMAKE_SYSTEM_NAME MATCHES "Haiku") ++ set(UCOMMON_LIBS ${UCOMMON_LIBS} network) ++ endif() ++ + if(CMAKE_COMPILER_IS_GNUCXX) + set(UCOMMON_VISIBILITY_FLAG "-fvisibility=hidden") + if(MINGW OR MSYS OR CMAKE_SYSTEM MATCHES "Windows") +diff --git a/configure.ac b/configure.ac +index 77bc9265..455c31fe 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -110,6 +110,9 @@ osf*|cygwin*|mingw*) + darwin*) + MODULE_FLAGS="-dynamic -bundle -undefined suppress -flat_namespace -read_only_relocs suppress" + ;; ++haiku*) ++ UCOMMON_LIBC="-lnetwork" ++ ;; + esac + + AC_ARG_ENABLE(posix-timers, +-- +2.19.1 + + +From d8c6e7fc8a2f5a2caecf78e3fc1c56debdb3fd73 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= +Date: Sun, 24 Feb 2019 02:41:45 +0100 +Subject: [PATCH 3/3] use ifr_name (Haiku doesn't have named unions in ifreq) + +--- + corelib/socket.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/corelib/socket.cpp b/corelib/socket.cpp +index 077fe930..4db6bf0b 100644 +--- a/corelib/socket.cpp ++++ b/corelib/socket.cpp +@@ -3027,7 +3027,7 @@ int Socket::bindto(socket_t so, const char *host, const char *svc, int protocol) + if(host && !strchr(host, '.') && !strchr(host, ':')) { + struct ifreq ifr; + memset(&ifr, 0, sizeof(ifr)); +- strncpy(ifr.ifr_ifrn.ifrn_name, host, IFNAMSIZ); ++ strncpy(ifr.ifr_name, host, IFNAMSIZ); + ifr.ifr_name[IFNAMSIZ - 1] = '\0'; + setsockopt(so, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr)); + host = NULL; +-- +2.19.1 +