nodejs: retire older recipes. (#10802)

Recipes on-tree require cmd:node >= 16 or 20 already.
This commit is contained in:
OscarL
2024-08-13 03:19:46 -03:00
committed by GitHub
parent d87d1854cd
commit 1d9f09c05c
4 changed files with 0 additions and 1507 deletions

View File

@@ -1,90 +0,0 @@
SUMMARY="A JavaScript runtime built on Chrome's V8 Engine"
DESCRIPTION="Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. \
As an asynchronous event driven JavaScript runtime, Node is designed to build scalable \
network applications. In the following \"hello world\" example, many connections can be \
handled concurrently. Upon each connection the callback is fired, but if there is no work \
to be done, Node will sleep."
HOMEPAGE="https://nodejs.org/"
COPYRIGHT="2006-2019 The Node.js Foundation"
LICENSE="BSD (2-clause)"
REVISION="2"
SOURCE_URI="https://nodejs.org/dist/v$portVersion/node-v$portVersion.tar.xz"
SOURCE_DIR="node-v$portVersion"
CHECKSUM_SHA256="cc6a23b44870679a94bd8f3c8d4e1f4b77bb2712a36888ab87463459e6785f6b"
PATCHES="nodejs-$portVersion.patchset"
ARCHITECTURES="all !x86_gcc2 ?x86"
SECONDARY_ARCHITECTURES="!x86"
PROVIDES="
nodejs12$secondaryArchSuffix = $portVersion
cmd:node = $portVersion compat >= 12
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libcares$secondaryArchSuffix
lib:libcrypto$secondaryArchSuffix
lib:libexecinfo$secondaryArchSuffix
lib:libnghttp2$secondaryArchSuffix
lib:libssl$secondaryArchSuffix
lib:libuv$secondaryArchSuffix
lib:libz$secondaryArchSuffix
"
REPLACES="nodejs"
PROVIDES_devel="
nodejs12${secondaryArchSuffix}_devel
"
REQUIRES_devel="
nodejs12$secondaryArchSuffix == $portVersion base
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libcares$secondaryArchSuffix
devel:libexecinfo$secondaryArchSuffix
devel:libnghttp2$secondaryArchSuffix
devel:libssl$secondaryArchSuffix >= 1.1
devel:libuv$secondaryArchSuffix
devel:libz$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:find
cmd:gcc$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:make
cmd:ninja
cmd:python2
cmd:which
"
BUILD()
{
./configure --with-intl=none --dest-os=haiku \
--shared-cares --shared-libuv --shared-nghttp2 --shared-openssl \
--shared-zlib \
--prefix=$prefix --without-npm
make $jobArgs
}
INSTALL()
{
make install
mkdir -p $(dirname $docDir $includeDir $manDir)
mv $prefix/include $includeDir
mv $prefix/share/man $manDir
mv $prefix/share/doc $docDir
packageEntries devel \
$developDir
strip $prefix/bin/node
rm -rf $prefix/share
}
TEST()
{
make test-only
}

View File

@@ -1,89 +0,0 @@
SUMMARY="A JavaScript runtime built on Chrome's V8 Engine"
DESCRIPTION="Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. \
As an asynchronous event driven JavaScript runtime, Node is designed to build scalable \
network applications. In the following \"hello world\" example, many connections can be \
handled concurrently. Upon each connection the callback is fired, but if there is no work \
to be done, Node will sleep."
HOMEPAGE="https://nodejs.org/"
COPYRIGHT="2006-2019 The Node.js Foundation"
LICENSE="BSD (2-clause)"
REVISION="1"
SOURCE_URI="https://nodejs.org/dist/v$portVersion/node-v$portVersion.tar.xz"
SOURCE_DIR="node-v$portVersion"
CHECKSUM_SHA256="3fa1d71adddfab2f5e3e41874b4eddbdf92b65cade4a43922fb1e437afcf89ed"
PATCHES="nodejs-$portVersion.patchset"
ARCHITECTURES="all !x86_gcc2 ?x86"
SECONDARY_ARCHITECTURES="!x86"
PROVIDES="
nodejs14$secondaryArchSuffix = $portVersion
cmd:node = $portVersion compat >= 14
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libcares$secondaryArchSuffix
lib:libcrypto$secondaryArchSuffix
lib:libexecinfo$secondaryArchSuffix
lib:libnghttp2$secondaryArchSuffix
lib:libssl$secondaryArchSuffix
lib:libuv$secondaryArchSuffix
lib:libz$secondaryArchSuffix
"
PROVIDES_devel="
nodejs14${secondaryArchSuffix}_devel
"
REQUIRES_devel="
nodejs14$secondaryArchSuffix == $portVersion base
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libcares$secondaryArchSuffix
devel:libexecinfo$secondaryArchSuffix
devel:libnghttp2$secondaryArchSuffix >= 14.19
devel:libssl$secondaryArchSuffix >= 1.1
devel:libuv$secondaryArchSuffix
devel:libz$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:find
cmd:gcc$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:make
cmd:ninja
cmd:python3.9
cmd:which
"
BUILD()
{
./configure --with-intl=none --dest-os=haiku \
--shared-cares --shared-libuv --shared-nghttp2 --shared-openssl \
--shared-zlib \
--prefix=$prefix --without-npm
make $jobArgs
}
INSTALL()
{
make install
mkdir -p $(dirname $docDir $includeDir $manDir)
mv $prefix/include $includeDir
mv $prefix/share/man $manDir
mv $prefix/share/doc $docDir
packageEntries devel \
$developDir
strip $prefix/bin/node
rm -rf $prefix/share
}
TEST()
{
make test-only
}

View File

@@ -1,673 +0,0 @@
From 7de02430ac25bb4f390c05634abfeb61ee9ca1b0 Mon Sep 17 00:00:00 2001
From: Calvin Hill <calvin@hakobaito.co.uk>
Date: Wed, 22 May 2019 11:23:37 +0000
Subject: Initial Haiku support for Node.js
diff --git a/common.gypi b/common.gypi
index 34bf547..de9ab19 100644
--- a/common.gypi
+++ b/common.gypi
@@ -138,6 +138,9 @@
['target_arch in "ppc64 s390x"', {
'v8_enable_backtrace': 1,
}],
+ ['OS=="haiku"', {
+ 'clang%': 0,
+ }],
],
},
@@ -166,6 +169,10 @@
'cflags': [ '-fPIC' ],
'ldflags': [ '-fPIC' ]
}],
+ ['OS == "haiku"', {
+ 'cflags': [ '-fPIC' ],
+ 'ldflags': [ '-fPIC']
+ }],
],
'msvs_settings': {
'VCCLCompilerTool': {
@@ -226,6 +233,10 @@
'cflags': [ '-fPIC' ],
'ldflags': [ '-fPIC' ]
}],
+ ['OS == "haiku"', {
+ 'cflags': [ '-fPIC' ],
+ 'ldflags': [ '-fPIC']
+ }],
],
'msvs_settings': {
'VCCLCompilerTool': {
@@ -364,7 +375,7 @@
'cflags': [ '-pthread' ],
'ldflags': [ '-pthread' ],
}],
- [ 'OS in "linux freebsd openbsd solaris android aix cloudabi"', {
+ [ 'OS in "linux freebsd openbsd solaris android aix cloudabi haiku"', {
'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ],
'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++1y' ],
'defines': [ '__STDC_FORMAT_MACROS' ],
@@ -378,6 +389,10 @@
'cflags': [ '-I/usr/local/include' ],
'ldflags': [ '-Wl,-z,wxneeded' ],
}],
+ ['OS=="haiku"', {
+ 'cflags': [ '-fPIC' ],
+ 'ldflags': [ '-fPIC' ],
+ }],
],
'conditions': [
[ 'target_arch=="ia32"', {
@@ -537,6 +552,12 @@
'OPENSSL_NO_PINSHARED'
],
}],
+ ['OS=="haiku"', {
+ 'ldflags': [ '-lroot', '-lbsd', '-lstdc++', '-lnetwork', '-Wl,-Bsymbolic', '-Wl,--export-dynamic', '-fPIC' ],
+ 'ldflags!': [ '-pthreads', '-pthread', '-rdynamic' ],
+ 'clang%': 0,
+ '%v8_use_snapshot':0,
+ }],
['node_shared_openssl!="true"', {
# `OPENSSL_THREADS` is defined via GYP for openSSL for all architectures.
'defines': [
diff --git a/configure.py b/configure.py
index e6485a7..2663035 100755
--- a/configure.py
+++ b/configure.py
@@ -47,7 +47,7 @@ from fetch_deps import FetchDeps
parser = optparse.OptionParser()
valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux',
- 'android', 'aix', 'cloudabi')
+ 'android', 'aix', 'cloudabi', 'haiku')
valid_arch = ('arm', 'arm64', 'ia32', 'mips', 'mipsel', 'mips64el', 'ppc',
'ppc64', 'x32','x64', 'x86', 'x86_64', 's390x')
valid_arm_float_abi = ('soft', 'softfp', 'hard')
diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/openssl-cl.gypi b/deps/openssl/config/archs/linux-x86_64/no-asm/openssl-cl.gypi
index 76984d4..eda4459 100644
--- a/deps/openssl/config/archs/linux-x86_64/no-asm/openssl-cl.gypi
+++ b/deps/openssl/config/archs/linux-x86_64/no-asm/openssl-cl.gypi
@@ -8,11 +8,9 @@
],
'openssl_cflags_linux-x86_64': [
'-Wall -O3',
- '-pthread -m64',
- '-Wall -O3',
+ '-m64',
],
'openssl_ex_libs_linux-x86_64': [
- '-ldl -pthread',
],
'openssl_cli_srcs_linux-x86_64': [
'openssl/apps/asn1pars.c',
diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/openssl.gypi b/deps/openssl/config/archs/linux-x86_64/no-asm/openssl.gypi
index 11d3aa6..aba5d54 100644
--- a/deps/openssl/config/archs/linux-x86_64/no-asm/openssl.gypi
+++ b/deps/openssl/config/archs/linux-x86_64/no-asm/openssl.gypi
@@ -692,11 +692,10 @@
],
'openssl_cflags_linux-x86_64': [
'-Wall -O3',
- '-pthread -m64',
+ '-m64',
'-Wall -O3',
],
- 'openssl_ex_libs_linux-x86_64': [
- '-ldl -pthread',
+ 'openssl_ex_libs_linux-x86_64': [
],
},
'include_dirs': [
diff --git a/deps/openssl/openssl/crypto/rand/rand_unix.c b/deps/openssl/openssl/crypto/rand/rand_unix.c
index 43f1069..63b38f2 100644
--- a/deps/openssl/openssl/crypto/rand/rand_unix.c
+++ b/deps/openssl/openssl/crypto/rand/rand_unix.c
@@ -372,7 +372,7 @@ static ssize_t syscall_random(void *buf, size_t buflen)
* Note: Sometimes getentropy() can be provided but not implemented
* internally. So we need to check errno for ENOSYS
*/
-# if defined(__GNUC__) && __GNUC__>=2 && defined(__ELF__) && !defined(__hpux)
+# if defined(__GNUC__) && __GNUC__>=2 && defined(__ELF__) && !defined(__hpux) && !defined(__HAIKU__)
extern int getentropy(void *buffer, size_t length) __attribute__((weak));
if (getentropy != NULL) {
diff --git a/deps/openssl/openssl_common.gypi b/deps/openssl/openssl_common.gypi
index d866630..52558d8 100644
--- a/deps/openssl/openssl_common.gypi
+++ b/deps/openssl/openssl_common.gypi
@@ -56,7 +56,14 @@
'ENGINESDIR="/dev/null"',
'__EXTENSIONS__'
],
- }, {
+ },'OS=="haiku"', {
+ '!ldflags': ['-pthread', '-pthreads'],
+ 'defines': [
+ 'OPENSSLDIR="/boot/system/data/ssl/"',
+ 'ENGINESDIR="/dev/null"',
+ 'TERMIOS',
+ ],
+ },{
# linux and others
'cflags': ['-Wno-missing-field-initializers',],
'defines': [
diff --git a/node.gypi b/node.gypi
index 116c1c7..9d5e5f3 100644
--- a/node.gypi
+++ b/node.gypi
@@ -257,6 +257,16 @@
'NODE_PLATFORM="sunos"',
],
}],
+ [ 'OS=="haiku"', {
+ 'libraries': [
+ '-lroot',
+ '-lnetwork',
+ '-lbsd',
+ ],
+ 'defines': [
+ 'NODE_PLATFORM="haiku"',
+ ],
+ }],
[ '(OS=="freebsd" or OS=="linux") and node_shared=="false"'
' and force_load=="true"', {
'ldflags': [
diff --git a/src/node.cc b/src/node.cc
index 46e8f74..b0452a7 100644
--- a/src/node.cc
+++ b/src/node.cc
@@ -554,7 +554,7 @@ inline void PlatformInit() {
if (nr == SIGKILL || nr == SIGSTOP)
continue;
act.sa_handler = (nr == SIGPIPE || nr == SIGXFSZ) ? SIG_IGN : SIG_DFL;
- CHECK_EQ(0, sigaction(nr, &act, nullptr));
+ //CHECK_EQ(0, sigaction(nr, &act, nullptr));
}
#endif // !NODE_SHARED_MODE
diff --git a/src/node_os.cc b/src/node_os.cc
index b6fbb12..f97528b 100644
--- a/src/node_os.cc
+++ b/src/node_os.cc
@@ -34,7 +34,7 @@
#include <array>
#include <cerrno>
#include <cstring>
-
+#include <iostream>
namespace node {
namespace os {
@@ -120,7 +120,17 @@ static void GetCPUInfo(const FunctionCallbackInfo<Value>& args) {
// [model, speed, (5 entries of cpu_times), model2, speed2, ...]
std::vector<Local<Value>> result(count * 7);
for (int i = 0, j = 0; i < count; i++) {
+ /*
uv_cpu_info_t* ci = cpu_infos + i;
+
+ std::cout << ci->speed << std::endl;
+ std::cout << ci->model << std::endl;
+ std::cout << ci->cpu_times.user << std::endl;
+ std::cout << ci->cpu_times.nice << std::endl;
+ std::cout << ci->cpu_times.sys << std::endl;
+ std::cout << ci->cpu_times.idle << std::endl;
+ std::cout << ci->cpu_times.irq << std::endl;
+
result[j++] = OneByteString(isolate, ci->model);
result[j++] = Number::New(isolate, ci->speed);
result[j++] = Number::New(isolate, ci->cpu_times.user);
@@ -128,10 +138,11 @@ static void GetCPUInfo(const FunctionCallbackInfo<Value>& args) {
result[j++] = Number::New(isolate, ci->cpu_times.sys);
result[j++] = Number::New(isolate, ci->cpu_times.idle);
result[j++] = Number::New(isolate, ci->cpu_times.irq);
+ */
}
uv_free_cpu_info(cpu_infos, count);
- args.GetReturnValue().Set(Array::New(isolate, result.data(), result.size()));
+ // args.GetReturnValue().Set(Array::New(isolate, result.data(), result.size()));
}
diff --git a/src/node_report.cc b/src/node_report.cc
index c93e03a..a4f57df 100644
--- a/src/node_report.cc
+++ b/src/node_report.cc
@@ -686,16 +686,16 @@ static void PrintSystemInformation(JSONWriter* writer) {
{"core_file_size_blocks", RLIMIT_CORE},
{"data_seg_size_kbytes", RLIMIT_DATA},
{"file_size_blocks", RLIMIT_FSIZE},
-#if !(defined(_AIX) || defined(__sun))
+#if !(defined(_AIX) || defined(__sun) || defined(__HAIKU__))
{"max_locked_memory_bytes", RLIMIT_MEMLOCK},
#endif
-#ifndef __sun
+#if !(defined(__sun) || defined(__HAIKU__))
{"max_memory_size_kbytes", RLIMIT_RSS},
#endif
{"open_files", RLIMIT_NOFILE},
{"stack_size_bytes", RLIMIT_STACK},
{"cpu_time_seconds", RLIMIT_CPU},
-#ifndef __sun
+#if !(defined(__sun) || defined(__HAIKU__))
{"max_user_processes", RLIMIT_NPROC},
#endif
#ifndef __OpenBSD__
diff --git a/tools/utils.py b/tools/utils.py
index 9734836..94e4d8c 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -57,6 +57,8 @@ def GuessOS():
return 'win32'
elif id == 'FreeBSD':
return 'freebsd'
+ elif id == 'Haiku':
+ return 'haiku'
elif id == 'OpenBSD':
return 'openbsd'
elif id == 'SunOS':
--
2.30.2
From cdf8b535978b7be49f5d93473b52c16f95fa8cd5 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sat, 27 Mar 2021 21:40:26 +0100
Subject: v8 Haiku patches
diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn
index 5c226f4..f46c2a8 100644
--- a/deps/v8/BUILD.gn
+++ b/deps/v8/BUILD.gn
@@ -682,7 +682,7 @@ config("toolchain") {
}
}
- if (is_clang) {
+ if (is_clang && !is_haiku) {
cflags += [ "-Wmissing-field-initializers" ]
if (v8_current_cpu != "mips" && v8_current_cpu != "mipsel") {
@@ -3607,6 +3607,11 @@ v8_component("v8_libbase") {
"src/base/debug/stack_trace_fuchsia.cc",
"src/base/platform/platform-fuchsia.cc",
]
+ } else if (is_haiku) {
+ sources += [
+ "src/base/debug/stack_trace_posix.cc",
+ "src/base/platform/platform-haiku.cc",
+ ]
} else if (is_mac || is_ios) {
sources += [
"src/base/debug/stack_trace_posix.cc",
@@ -4045,6 +4050,13 @@ if (is_fuchsia && !build_with_chromium) {
group("v8_fuzzers") {
testonly = true
+
+ if(host_os == "haiku"){
+ data_deps = []
+ }
+
+ if (host_os != "haiku") {
+
data_deps = [
":v8_simple_json_fuzzer",
":v8_simple_multi_return_fuzzer",
@@ -4056,6 +4068,8 @@ group("v8_fuzzers") {
":v8_simple_wasm_compile_fuzzer",
":v8_simple_wasm_fuzzer",
]
+ }
+
}
if (is_component_build) {
diff --git a/deps/v8/include/v8config.h b/deps/v8/include/v8config.h
index 7670c0e..646c599 100644
--- a/deps/v8/include/v8config.h
+++ b/deps/v8/include/v8config.h
@@ -61,6 +61,7 @@
// V8_OS_CYGWIN - Cygwin
// V8_OS_DRAGONFLYBSD - DragonFlyBSD
// V8_OS_FREEBSD - FreeBSD
+// V8_OS_HAIKU - Haiku
// V8_OS_FUCHSIA - Fuchsia
// V8_OS_LINUX - Linux
// V8_OS_MACOSX - Mac OS X
@@ -100,6 +101,9 @@
# define V8_OS_BSD 1
# define V8_OS_FREEBSD 1
# define V8_OS_POSIX 1
+#elif defined(__HAIKU__)
+# define V8_OS_HAIKU 1
+# define V8_OS_POSIX 1
#elif defined(__Fuchsia__)
# define V8_OS_FUCHSIA 1
# define V8_OS_POSIX 1
diff --git a/deps/v8/src/base/debug/stack_trace_posix.cc b/deps/v8/src/base/debug/stack_trace_posix.cc
index ed602af..58b3b5d 100644
--- a/deps/v8/src/base/debug/stack_trace_posix.cc
+++ b/deps/v8/src/base/debug/stack_trace_posix.cc
@@ -25,14 +25,15 @@
#include <string>
#include <vector>
-#if V8_LIBC_GLIBC || V8_LIBC_BSD || V8_LIBC_UCLIBC || V8_OS_SOLARIS
+#if V8_LIBC_GLIBC || V8_LIBC_BSD || V8_LIBC_UCLIBC || V8_OS_SOLARIS || V8_OS_HAIKU
#define HAVE_EXECINFO_H 1
#endif
-#if HAVE_EXECINFO_H
+#if defined(HAVE_EXECINFO_H)
#include <cxxabi.h>
#include <execinfo.h>
#endif
+
#if V8_OS_MACOSX
#include <AvailabilityMacros.h>
#endif
diff --git a/deps/v8/src/base/export-template.h b/deps/v8/src/base/export-template.h
index 861cfe4..8c6d885 100644
--- a/deps/v8/src/base/export-template.h
+++ b/deps/v8/src/base/export-template.h
@@ -83,6 +83,7 @@
// definition sites instead.
#define EXPORT_TEMPLATE_DECLARE_MSVC_HACK(export, _)
#define EXPORT_TEMPLATE_DEFINE_MSVC_HACK(export, _) export
+#define EXPORT_TEMPLATE_TEST_MSVC_HACK_DEFAULT(...) true
// EXPORT_TEMPLATE_STYLE is an internal helper macro that identifies which
// export style needs to be used for the provided FOO_EXPORT macro definition.
@@ -159,5 +160,5 @@ EXPORT_TEMPLATE_TEST(DEFAULT, __declspec(dllimport));
#undef EXPORT_TEMPLATE_TEST
#undef EXPORT_TEMPLATE_TEST_DEFAULT_DEFAULT
#undef EXPORT_TEMPLATE_TEST_MSVC_HACK_MSVC_HACK
-
+#undef EXPORT_TEMPLATE_TEST_MSVC_HACK_DEFAULT
#endif // V8_BASE_EXPORT_TEMPLATE_H_
diff --git a/deps/v8/src/base/platform/platform-haiku.cc b/deps/v8/src/base/platform/platform-haiku.cc
new file mode 100644
index 0000000..7367510
--- /dev/null
+++ b/deps/v8/src/base/platform/platform-haiku.cc
@@ -0,0 +1,50 @@
+// Copyright 2012 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Platform-specific code for Haiku goes here. For the POSIX-compatible
+// parts, the implementation is in platform-posix.cc.
+
+#include <pthread.h>
+#include <semaphore.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/resource.h>
+#include <sys/time.h>
+
+#include <errno.h>
+#include <fcntl.h> // open
+#include <stdarg.h>
+#include <strings.h> // index
+#include <sys/mman.h> // mmap & munmap
+#include <sys/stat.h> // open
+#include <sys/types.h> // mmap & munmap
+#include <unistd.h> // sysconf
+
+#include <cmath>
+
+#undef MAP_TYPE
+
+#include "src/base/macros.h"
+#include "src/base/platform/platform-posix-time.h"
+#include "src/base/platform/platform-posix.h"
+#include "src/base/platform/platform.h"
+
+namespace v8 {
+namespace base {
+
+TimezoneCache* OS::CreateTimezoneCache() {
+ return new PosixDefaultTimezoneCache();
+}
+
+std::vector<OS::SharedLibraryAddress> OS::GetSharedLibraryAddresses() {
+ return std::vector<SharedLibraryAddress>();
+}
+
+void OS::SignalCodeMovingGC() {}
+
+void OS::AdjustSchedulingParams() {}
+
+} // namespace base
+} // namespace v8
diff --git a/deps/v8/src/base/platform/platform-posix.cc b/deps/v8/src/base/platform/platform-posix.cc
index c50cdd7..477bde5 100644
--- a/deps/v8/src/base/platform/platform-posix.cc
+++ b/deps/v8/src/base/platform/platform-posix.cc
@@ -60,7 +60,7 @@
#include <sys/resource.h>
#endif
-#if !defined(_AIX) && !defined(V8_OS_FUCHSIA)
+#if !defined(_AIX) && !defined(V8_OS_FUCHSIA) && !defined(__HAIKU__)
#include <sys/syscall.h>
#endif
@@ -76,6 +76,14 @@ extern int madvise(caddr_t, size_t, int);
#endif
#endif
+#if defined(__HAIKU__)
+extern "C" int posix_madvise(void*, size_t, int);
+#endif
+
+#if defined(__HAIKU__)
+#define MADV_FREE POSIX_MADV_DONTNEED
+#endif
+
#ifndef MADV_FREE
#define MADV_FREE MADV_DONTNEED
#endif
@@ -127,7 +135,7 @@ int GetProtectionFromMemoryPermission(OS::MemoryPermission access) {
int GetFlagsForMemoryPermission(OS::MemoryPermission access) {
int flags = MAP_PRIVATE | MAP_ANONYMOUS;
if (access == OS::MemoryPermission::kNoAccess) {
-#if !V8_OS_AIX && !V8_OS_FREEBSD && !V8_OS_QNX
+#if !V8_OS_AIX && !V8_OS_FREEBSD && !V8_OS_QNX && !V8_OS_HAIKU
flags |= MAP_NORESERVE;
#endif // !V8_OS_AIX && !V8_OS_FREEBSD && !V8_OS_QNX
#if V8_OS_QNX
@@ -362,6 +370,8 @@ bool OS::DiscardSystemPages(void* address, size_t size) {
int ret = madvise(address, size, MADV_FREE_REUSABLE);
#elif defined(_AIX) || defined(V8_OS_SOLARIS)
int ret = madvise(reinterpret_cast<caddr_t>(address), size, MADV_FREE);
+#elif defined(__HAIKU__)
+ int ret = posix_madvise(address, size, MADV_FREE);
#else
int ret = madvise(address, size, MADV_FREE);
#endif
@@ -373,6 +383,8 @@ bool OS::DiscardSystemPages(void* address, size_t size) {
// imply runtime support.
#if defined(_AIX) || defined(V8_OS_SOLARIS)
ret = madvise(reinterpret_cast<caddr_t>(address), size, MADV_DONTNEED);
+#elif defined(__HAIKU__)
+ ret = posix_madvise(address, size, MADV_FREE);
#else
ret = madvise(address, size, MADV_DONTNEED);
#endif
diff --git a/deps/v8/src/libsampler/sampler.cc b/deps/v8/src/libsampler/sampler.cc
index e445dfc..77fa74c 100644
--- a/deps/v8/src/libsampler/sampler.cc
+++ b/deps/v8/src/libsampler/sampler.cc
@@ -12,7 +12,7 @@
#include <sys/time.h>
#include <atomic>
-#if !V8_OS_QNX && !V8_OS_AIX
+#if !V8_OS_QNX && !V8_OS_AIX && !V8_OS_HAIKU
#include <sys/syscall.h> // NOLINT
#endif
@@ -20,7 +20,7 @@
#include <mach/mach.h>
// OpenBSD doesn't have <ucontext.h>. ucontext_t lives in <signal.h>
// and is a typedef for struct sigcontext. There is no uc_mcontext.
-#elif !V8_OS_OPENBSD
+#elif !V8_OS_OPENBSD && !V8_OS_HAIKU
#include <ucontext.h>
#endif
@@ -481,6 +481,16 @@ void SignalHandler::FillRegisterState(void* context, RegisterState* state) {
state->sp = reinterpret_cast<void*>(mcontext.mc_r13);
state->fp = reinterpret_cast<void*>(mcontext.mc_r11);
#endif // V8_HOST_ARCH_*
+#elif V8_OS_HAIKU
+#if V8_HOST_ARCH_IA32
+ state->pc = reinterpret_cast<void*>(mcontext.eip);
+ state->sp = reinterpret_cast<void*>(mcontext.esp);
+ state->fp = reinterpret_cast<void*>(mcontext.ebp);
+#elif V8_HOST_ARCH_X64
+ state->pc = reinterpret_cast<void*>(mcontext.rip);
+ state->sp = reinterpret_cast<void*>(mcontext.rsp);
+ state->fp = reinterpret_cast<void*>(mcontext.rbp);
+#endif // V8_HOST_ARCH_*
#elif V8_OS_NETBSD
#if V8_HOST_ARCH_IA32
state->pc = reinterpret_cast<void*>(mcontext.__gregs[_REG_EIP]);
diff --git a/deps/v8/tools/mb/mb.py b/deps/v8/tools/mb/mb.py
index f66f82a..f20ff24 100755
--- a/deps/v8/tools/mb/mb.py
+++ b/deps/v8/tools/mb/mb.py
@@ -855,12 +855,15 @@ class MetaBuildWrapper(object):
subdir, exe = 'linux64', 'gn'
elif self.platform == 'darwin':
subdir, exe = 'mac', 'gn'
+ elif self.platform == 'haiku1':
+ subdir, exe = 'haiku','gn'
+ gn_path = "/bin/gn"
else:
subdir, exe = 'win', 'gn.exe'
arch = platform.machine()
if (arch.startswith('s390') or arch.startswith('ppc') or
- self.platform.startswith('aix')):
+ self.platform.startswith('aix') or self.platform.startswith('haiku')):
# use gn in PATH
gn_path = 'gn'
else:
--
2.30.2
From cea68cd380b21e5cc0986582cb5d9c81e11f16d9 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sun, 28 Mar 2021 10:37:44 +0200
Subject: v8 gyp build for Haiku
diff --git a/tools/v8_gypfiles/features.gypi b/tools/v8_gypfiles/features.gypi
index 602d606..5f9a0f6 100644
--- a/tools/v8_gypfiles/features.gypi
+++ b/tools/v8_gypfiles/features.gypi
@@ -46,6 +46,11 @@
}, {
'is_fuchsia': 0,
}],
+ ['OS == "haiku"', {
+ 'is_haiku': 1,
+ }, {
+ 'is_haiku': 0,
+ }],
['OS=="android"', { # GYP reverts OS to linux so use `-D OS=android`
'is_android': 1,
}, {
diff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp
index 26b8e56..f480c04 100644
--- a/tools/v8_gypfiles/v8.gyp
+++ b/tools/v8_gypfiles/v8.gyp
@@ -991,6 +991,17 @@
'<(V8_ROOT)/src/base/platform/platform-fuchsia.cc',
]
}],
+ ['is_haiku', {
+ 'link_settings': {
+ 'libraries': [
+ '-lexecinfo',
+ ]
+ },
+ 'sources': [
+ '<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
+ '<(V8_ROOT)/src/base/platform/platform-haiku.cc',
+ ]
+ }],
['OS == "mac" or OS == "ios"', {
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
--
2.30.2
From e08620dab2d8116fc6f5c009f624bf2870eb8d94 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Fri, 15 Oct 2021 14:11:45 +0200
Subject: ares compat
diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc
index d54e7c6..0643dd3 100644
--- a/src/cares_wrap.cc
+++ b/src/cares_wrap.cc
@@ -39,7 +39,7 @@
# include <netdb.h>
#endif // __POSIX__
-# include <ares_nameser.h>
+# include <arpa/nameser.h>
// OpenBSD does not define these
#ifndef AI_ALL
--
2.30.2
From c1b5978747709c2ce6516c1771354545d6c53060 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Lal?= <kapouer@melix.org>
Date: Mon, 5 Jul 2021 00:22:46 +0200
Subject: [PATCH] build: uvwasi honours node_shared_libuv
Fix #39248.
---
deps/uvwasi/uvwasi.gyp | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/deps/uvwasi/uvwasi.gyp b/deps/uvwasi/uvwasi.gyp
index d4189eeee2fc..5822f8d59bd9 100644
--- a/deps/uvwasi/uvwasi.gyp
+++ b/deps/uvwasi/uvwasi.gyp
@@ -18,9 +18,6 @@
'src/wasi_rights.c',
'src/wasi_serdes.c',
],
- 'dependencies': [
- '../uv/uv.gyp:libuv',
- ],
'direct_dependent_settings': {
'include_dirs': ['include']
},
@@ -31,6 +28,11 @@
'_POSIX_C_SOURCE=200112',
],
}],
+ [ 'node_shared_libuv=="false"', {
+ 'dependencies': [
+ '../uv/uv.gyp:libuv',
+ ],
+ }],
],
}
]

View File

@@ -1,655 +0,0 @@
From 32f439c802b1fa9fd8cc76f2f70b0ba1e2fe70ed Mon Sep 17 00:00:00 2001
From: Calvin Hill <calvin@hakobaito.co.uk>
Date: Wed, 22 May 2019 11:23:37 +0000
Subject: Initial Haiku support for Node.js
diff --git a/common.gypi b/common.gypi
index b16f643..d6b422c 100644
--- a/common.gypi
+++ b/common.gypi
@@ -264,6 +264,9 @@
'_target_name!="<(node_core_target_name)")', {
'cflags!': ['-Werror'],
}],
+ ['OS=="haiku"', {
+ 'clang%': 0,
+ }],
],
'msvs_settings': {
'VCCLCompilerTool': {
@@ -292,6 +295,10 @@
['target_arch=="arm64"', {
'TargetMachine' : 0, # NotSet. MACHINE:ARM64 is inferred from the input files.
}],
+ ['OS == "haiku"', {
+ 'cflags': [ '-fPIC' ],
+ 'ldflags': [ '-fPIC']
+ }],
],
'GenerateDebugInformation': 'true',
'SuppressStartupBanner': 'true',
@@ -352,6 +359,10 @@
['_type!="static_library"', {
'xcode_settings': {'OTHER_LDFLAGS': ['-fsanitize=address']},
}],
+ ['OS == "haiku"', {
+ 'cflags': [ '-fPIC' ],
+ 'ldflags': [ '-fPIC']
+ }],
],
}],
['v8_enable_pointer_compression == 1', {
@@ -379,7 +390,7 @@
'cflags': [ '-pthread' ],
'ldflags': [ '-pthread' ],
}],
- [ 'OS in "linux freebsd openbsd solaris android aix cloudabi"', {
+ [ 'OS in "linux freebsd openbsd solaris android aix cloudabi haiku"', {
'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ],
'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++1y' ],
'defines': [ '__STDC_FORMAT_MACROS' ],
@@ -393,6 +404,10 @@
'cflags': [ '-I/usr/local/include' ],
'ldflags': [ '-Wl,-z,wxneeded' ],
}],
+ ['OS=="haiku"', {
+ 'cflags': [ '-fPIC' ],
+ 'ldflags': [ '-fPIC' ],
+ }],
],
'conditions': [
[ 'target_arch=="ia32"', {
@@ -552,6 +567,12 @@
'OPENSSL_NO_PINSHARED'
],
}],
+ ['OS=="haiku"', {
+ 'ldflags': [ '-lroot', '-lbsd', '-lstdc++', '-lnetwork', '-Wl,-Bsymbolic', '-Wl,--export-dynamic', '-fPIC' ],
+ 'ldflags!': [ '-pthreads', '-pthread', '-rdynamic' ],
+ 'clang%': 0,
+ '%v8_use_snapshot':0,
+ }],
['node_shared_openssl!="true"', {
# `OPENSSL_THREADS` is defined via GYP for openSSL for all architectures.
'defines': [
diff --git a/configure.py b/configure.py
index 30cf672..06475d2 100755
--- a/configure.py
+++ b/configure.py
@@ -54,7 +54,7 @@ from fetch_deps import FetchDeps
parser = optparse.OptionParser()
valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux',
- 'android', 'aix', 'cloudabi')
+ 'android', 'aix', 'cloudabi', 'haiku')
valid_arch = ('arm', 'arm64', 'ia32', 'mips', 'mipsel', 'mips64el', 'ppc',
'ppc64', 'x32','x64', 'x86', 'x86_64', 's390x')
valid_arm_float_abi = ('soft', 'softfp', 'hard')
diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/openssl-cl.gypi b/deps/openssl/config/archs/linux-x86_64/no-asm/openssl-cl.gypi
index 76984d4..eda4459 100644
--- a/deps/openssl/config/archs/linux-x86_64/no-asm/openssl-cl.gypi
+++ b/deps/openssl/config/archs/linux-x86_64/no-asm/openssl-cl.gypi
@@ -8,11 +8,9 @@
],
'openssl_cflags_linux-x86_64': [
'-Wall -O3',
- '-pthread -m64',
- '-Wall -O3',
+ '-m64',
],
'openssl_ex_libs_linux-x86_64': [
- '-ldl -pthread',
],
'openssl_cli_srcs_linux-x86_64': [
'openssl/apps/asn1pars.c',
diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/openssl.gypi b/deps/openssl/config/archs/linux-x86_64/no-asm/openssl.gypi
index 11d3aa6..aba5d54 100644
--- a/deps/openssl/config/archs/linux-x86_64/no-asm/openssl.gypi
+++ b/deps/openssl/config/archs/linux-x86_64/no-asm/openssl.gypi
@@ -692,11 +692,10 @@
],
'openssl_cflags_linux-x86_64': [
'-Wall -O3',
- '-pthread -m64',
+ '-m64',
'-Wall -O3',
],
- 'openssl_ex_libs_linux-x86_64': [
- '-ldl -pthread',
+ 'openssl_ex_libs_linux-x86_64': [
],
},
'include_dirs': [
diff --git a/deps/openssl/openssl/crypto/rand/rand_unix.c b/deps/openssl/openssl/crypto/rand/rand_unix.c
index 43f1069..63b38f2 100644
--- a/deps/openssl/openssl/crypto/rand/rand_unix.c
+++ b/deps/openssl/openssl/crypto/rand/rand_unix.c
@@ -372,7 +372,7 @@ static ssize_t syscall_random(void *buf, size_t buflen)
* Note: Sometimes getentropy() can be provided but not implemented
* internally. So we need to check errno for ENOSYS
*/
-# if defined(__GNUC__) && __GNUC__>=2 && defined(__ELF__) && !defined(__hpux)
+# if defined(__GNUC__) && __GNUC__>=2 && defined(__ELF__) && !defined(__hpux) && !defined(__HAIKU__)
extern int getentropy(void *buffer, size_t length) __attribute__((weak));
if (getentropy != NULL) {
diff --git a/deps/openssl/openssl_common.gypi b/deps/openssl/openssl_common.gypi
index d866630..52558d8 100644
--- a/deps/openssl/openssl_common.gypi
+++ b/deps/openssl/openssl_common.gypi
@@ -56,7 +56,14 @@
'ENGINESDIR="/dev/null"',
'__EXTENSIONS__'
],
- }, {
+ },'OS=="haiku"', {
+ '!ldflags': ['-pthread', '-pthreads'],
+ 'defines': [
+ 'OPENSSLDIR="/boot/system/data/ssl/"',
+ 'ENGINESDIR="/dev/null"',
+ 'TERMIOS',
+ ],
+ },{
# linux and others
'cflags': ['-Wno-missing-field-initializers',],
'defines': [
diff --git a/node.gypi b/node.gypi
index 43dbda7..dc9933d 100644
--- a/node.gypi
+++ b/node.gypi
@@ -256,6 +256,16 @@
'NODE_PLATFORM="sunos"',
],
}],
+ [ 'OS=="haiku"', {
+ 'libraries': [
+ '-lroot',
+ '-lnetwork',
+ '-lbsd',
+ ],
+ 'defines': [
+ 'NODE_PLATFORM="haiku"',
+ ],
+ }],
[ '(OS=="freebsd" or OS=="linux") and node_shared=="false"'
' and force_load=="true"', {
'ldflags': [
diff --git a/src/node.cc b/src/node.cc
index e0e74d8..9f18f95 100644
--- a/src/node.cc
+++ b/src/node.cc
@@ -612,7 +612,7 @@ inline void PlatformInit() {
if (nr == SIGKILL || nr == SIGSTOP)
continue;
act.sa_handler = (nr == SIGPIPE || nr == SIGXFSZ) ? SIG_IGN : SIG_DFL;
- CHECK_EQ(0, sigaction(nr, &act, nullptr));
+ //CHECK_EQ(0, sigaction(nr, &act, nullptr));
}
#endif // !NODE_SHARED_MODE
diff --git a/src/node_os.cc b/src/node_os.cc
index 3cde809..fac4b87 100644
--- a/src/node_os.cc
+++ b/src/node_os.cc
@@ -34,7 +34,7 @@
#include <array>
#include <cerrno>
#include <cstring>
-
+#include <iostream>
namespace node {
namespace os {
@@ -115,7 +115,17 @@ static void GetCPUInfo(const FunctionCallbackInfo<Value>& args) {
std::vector<Local<Value>> result;
result.reserve(count * 7);
for (int i = 0; i < count; i++) {
+ /*
uv_cpu_info_t* ci = cpu_infos + i;
+
+ std::cout << ci->speed << std::endl;
+ std::cout << ci->model << std::endl;
+ std::cout << ci->cpu_times.user << std::endl;
+ std::cout << ci->cpu_times.nice << std::endl;
+ std::cout << ci->cpu_times.sys << std::endl;
+ std::cout << ci->cpu_times.idle << std::endl;
+ std::cout << ci->cpu_times.irq << std::endl;
+
result.emplace_back(OneByteString(isolate, ci->model));
result.emplace_back(Number::New(isolate, ci->speed));
result.emplace_back(Number::New(isolate, ci->cpu_times.user));
@@ -123,10 +133,11 @@ static void GetCPUInfo(const FunctionCallbackInfo<Value>& args) {
result.emplace_back(Number::New(isolate, ci->cpu_times.sys));
result.emplace_back(Number::New(isolate, ci->cpu_times.idle));
result.emplace_back(Number::New(isolate, ci->cpu_times.irq));
+ */
}
uv_free_cpu_info(cpu_infos, count);
- args.GetReturnValue().Set(Array::New(isolate, result.data(), result.size()));
+// args.GetReturnValue().Set(Array::New(isolate, result.data(), result.size()));
}
diff --git a/src/node_report.cc b/src/node_report.cc
index a91d16d..fdaaa3a 100644
--- a/src/node_report.cc
+++ b/src/node_report.cc
@@ -690,16 +690,16 @@ static void PrintSystemInformation(JSONWriter* writer) {
{"core_file_size_blocks", RLIMIT_CORE},
{"data_seg_size_kbytes", RLIMIT_DATA},
{"file_size_blocks", RLIMIT_FSIZE},
-#if !(defined(_AIX) || defined(__sun))
+#if !(defined(_AIX) || defined(__sun) || defined(__HAIKU__))
{"max_locked_memory_bytes", RLIMIT_MEMLOCK},
#endif
-#ifndef __sun
+#if !(defined(__sun) || defined(__HAIKU__))
{"max_memory_size_kbytes", RLIMIT_RSS},
#endif
{"open_files", RLIMIT_NOFILE},
{"stack_size_bytes", RLIMIT_STACK},
{"cpu_time_seconds", RLIMIT_CPU},
-#ifndef __sun
+#if !(defined(__sun) || defined(__HAIKU__))
{"max_user_processes", RLIMIT_NPROC},
#endif
#ifndef __OpenBSD__
diff --git a/tools/utils.py b/tools/utils.py
index b8963e0..f8b7954 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -59,6 +59,8 @@ def GuessOS():
return 'win32'
elif id == 'FreeBSD':
return 'freebsd'
+ elif id == 'Haiku':
+ return 'haiku'
elif id == 'OpenBSD':
return 'openbsd'
elif id == 'SunOS':
--
2.30.2
From 9c960a2d1f8d476cf66bb81464f08a7e5aa739e7 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sat, 27 Mar 2021 14:01:44 +0100
Subject: Haiku v8 patches
diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn
index a8100ad..533beba 100644
--- a/deps/v8/BUILD.gn
+++ b/deps/v8/BUILD.gn
@@ -260,7 +260,7 @@ if (v8_enable_snapshot_native_code_counters == "") {
if (v8_enable_pointer_compression == "") {
# TODO(v8:v7703): temporarily enable pointer compression on arm64 and on x64
v8_enable_pointer_compression =
- v8_current_cpu == "arm64" || v8_current_cpu == "x64"
+ (v8_current_cpu == "arm64" || v8_current_cpu == "x64") && !is_haiku
}
if (v8_enable_fast_torque == "") {
v8_enable_fast_torque = v8_enable_fast_mksnapshot
@@ -794,7 +794,7 @@ config("toolchain") {
}
}
- if (is_clang) {
+ if (is_clang && !is_haiku) {
cflags += [ "-Wmissing-field-initializers" ]
if (v8_current_cpu != "mips" && v8_current_cpu != "mipsel") {
@@ -3892,6 +3892,11 @@ v8_component("v8_libbase") {
"src/base/debug/stack_trace_fuchsia.cc",
"src/base/platform/platform-fuchsia.cc",
]
+ } else if (is_haiku) {
+ sources += [
+ "src/base/debug/stack_trace_posix.cc",
+ "src/base/platform/platform-haiku.cc",
+ ]
} else if (is_mac || is_ios) {
sources += [
"src/base/debug/stack_trace_posix.cc",
@@ -4436,6 +4441,13 @@ if (is_fuchsia && !build_with_chromium) {
group("v8_fuzzers") {
testonly = true
+
+ if(host_os == "haiku"){
+ data_deps = []
+ }
+
+ if (host_os != "haiku") {
+
data_deps = [
":v8_simple_json_fuzzer",
":v8_simple_multi_return_fuzzer",
@@ -4447,6 +4459,8 @@ group("v8_fuzzers") {
":v8_simple_wasm_compile_fuzzer",
":v8_simple_wasm_fuzzer",
]
+ }
+
}
if (is_component_build) {
diff --git a/deps/v8/include/v8config.h b/deps/v8/include/v8config.h
index 9825232..4a07457 100644
--- a/deps/v8/include/v8config.h
+++ b/deps/v8/include/v8config.h
@@ -61,6 +61,7 @@
// V8_OS_CYGWIN - Cygwin
// V8_OS_DRAGONFLYBSD - DragonFlyBSD
// V8_OS_FREEBSD - FreeBSD
+// V8_OS_HAIKU - Haiku
// V8_OS_FUCHSIA - Fuchsia
// V8_OS_LINUX - Linux
// V8_OS_MACOSX - Mac OS X
@@ -100,6 +101,9 @@
# define V8_OS_BSD 1
# define V8_OS_FREEBSD 1
# define V8_OS_POSIX 1
+#elif defined(__HAIKU__)
+# define V8_OS_HAIKU 1
+# define V8_OS_POSIX 1
#elif defined(__Fuchsia__)
# define V8_OS_FUCHSIA 1
# define V8_OS_POSIX 1
diff --git a/deps/v8/src/base/debug/stack_trace_posix.cc b/deps/v8/src/base/debug/stack_trace_posix.cc
index ed602af..58b3b5d 100644
--- a/deps/v8/src/base/debug/stack_trace_posix.cc
+++ b/deps/v8/src/base/debug/stack_trace_posix.cc
@@ -25,14 +25,15 @@
#include <string>
#include <vector>
-#if V8_LIBC_GLIBC || V8_LIBC_BSD || V8_LIBC_UCLIBC || V8_OS_SOLARIS
+#if V8_LIBC_GLIBC || V8_LIBC_BSD || V8_LIBC_UCLIBC || V8_OS_SOLARIS || V8_OS_HAIKU
#define HAVE_EXECINFO_H 1
#endif
-#if HAVE_EXECINFO_H
+#if defined(HAVE_EXECINFO_H)
#include <cxxabi.h>
#include <execinfo.h>
#endif
+
#if V8_OS_MACOSX
#include <AvailabilityMacros.h>
#endif
diff --git a/deps/v8/src/base/export-template.h b/deps/v8/src/base/export-template.h
index 861cfe4..8c6d885 100644
--- a/deps/v8/src/base/export-template.h
+++ b/deps/v8/src/base/export-template.h
@@ -83,6 +83,7 @@
// definition sites instead.
#define EXPORT_TEMPLATE_DECLARE_MSVC_HACK(export, _)
#define EXPORT_TEMPLATE_DEFINE_MSVC_HACK(export, _) export
+#define EXPORT_TEMPLATE_TEST_MSVC_HACK_DEFAULT(...) true
// EXPORT_TEMPLATE_STYLE is an internal helper macro that identifies which
// export style needs to be used for the provided FOO_EXPORT macro definition.
@@ -159,5 +160,5 @@ EXPORT_TEMPLATE_TEST(DEFAULT, __declspec(dllimport));
#undef EXPORT_TEMPLATE_TEST
#undef EXPORT_TEMPLATE_TEST_DEFAULT_DEFAULT
#undef EXPORT_TEMPLATE_TEST_MSVC_HACK_MSVC_HACK
-
+#undef EXPORT_TEMPLATE_TEST_MSVC_HACK_DEFAULT
#endif // V8_BASE_EXPORT_TEMPLATE_H_
diff --git a/deps/v8/src/base/platform/platform-haiku.cc b/deps/v8/src/base/platform/platform-haiku.cc
new file mode 100644
index 0000000..c4f0ae3
--- /dev/null
+++ b/deps/v8/src/base/platform/platform-haiku.cc
@@ -0,0 +1,59 @@
+// Copyright 2012 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Platform-specific code for Haiku goes here. For the POSIX-compatible
+// parts, the implementation is in platform-posix.cc.
+
+#include <pthread.h>
+#include <semaphore.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <sys/resource.h>
+#include <sys/time.h>
+#include <sys/types.h>
+
+#include <fcntl.h> // open
+#include <sys/mman.h> // mmap & munmap
+#include <sys/stat.h> // open
+#include <unistd.h> // sysconf
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <strings.h> // index
+
+#include <cmath>
+
+#include <OS.h>
+
+#undef MAP_TYPE
+
+#include "src/base/macros.h"
+#include "src/base/platform/platform-posix-time.h"
+#include "src/base/platform/platform-posix.h"
+#include "src/base/platform/platform.h"
+
+namespace v8 {
+namespace base {
+
+TimezoneCache* OS::CreateTimezoneCache() {
+ return new PosixDefaultTimezoneCache();
+}
+
+std::vector<OS::SharedLibraryAddress> OS::GetSharedLibraryAddresses() {
+ return std::vector<SharedLibraryAddress>();
+}
+
+void OS::SignalCodeMovingGC() {}
+
+void OS::AdjustSchedulingParams() {}
+
+// static
+void* Stack::GetStackStart() {
+ thread_info threadInfo;
+ get_thread_info(find_thread(NULL), &threadInfo);
+ return threadInfo.stack_base;
+}
+
+} // namespace base
+} // namespace v8
diff --git a/deps/v8/src/base/platform/platform-posix.cc b/deps/v8/src/base/platform/platform-posix.cc
index e5aa4de..dbf3c65 100644
--- a/deps/v8/src/base/platform/platform-posix.cc
+++ b/deps/v8/src/base/platform/platform-posix.cc
@@ -61,7 +61,7 @@
#include <sys/resource.h>
#endif
-#if !defined(_AIX) && !defined(V8_OS_FUCHSIA)
+#if !defined(_AIX) && !defined(V8_OS_FUCHSIA) && !defined(__HAIKU__)
#include <sys/syscall.h>
#endif
@@ -77,6 +77,14 @@ extern int madvise(caddr_t, size_t, int);
#endif
#endif
+#if defined(__HAIKU__)
+extern "C" int posix_madvise(void*, size_t, int);
+#endif
+
+#if defined(__HAIKU__)
+#define MADV_FREE POSIX_MADV_DONTNEED
+#endif
+
#ifndef MADV_FREE
#define MADV_FREE MADV_DONTNEED
#endif
@@ -429,6 +437,8 @@ bool OS::DiscardSystemPages(void* address, size_t size) {
int ret = madvise(address, size, MADV_FREE_REUSABLE);
#elif defined(_AIX) || defined(V8_OS_SOLARIS)
int ret = madvise(reinterpret_cast<caddr_t>(address), size, MADV_FREE);
+#elif defined(__HAIKU__)
+ int ret = posix_madvise(address, size, MADV_FREE);
#else
int ret = madvise(address, size, MADV_FREE);
#endif
@@ -440,6 +450,8 @@ bool OS::DiscardSystemPages(void* address, size_t size) {
// imply runtime support.
#if defined(_AIX) || defined(V8_OS_SOLARIS)
ret = madvise(reinterpret_cast<caddr_t>(address), size, MADV_DONTNEED);
+#elif defined(__HAIKU__)
+ ret = posix_madvise(address, size, MADV_FREE);
#else
ret = madvise(address, size, MADV_DONTNEED);
#endif
@@ -987,7 +999,7 @@ void Thread::SetThreadLocal(LocalStorageKey key, void* value) {
// keep this version in POSIX as most Linux-compatible derivatives will
// support it. MacOS and FreeBSD are different here.
#if !defined(V8_OS_FREEBSD) && !defined(V8_OS_MACOSX) && !defined(_AIX) && \
- !defined(V8_OS_SOLARIS)
+ !defined(V8_OS_SOLARIS) && !defined(V8_OS_HAIKU)
// static
void* Stack::GetStackStart() {
diff --git a/deps/v8/src/libsampler/sampler.cc b/deps/v8/src/libsampler/sampler.cc
index 0443657..10026b6 100644
--- a/deps/v8/src/libsampler/sampler.cc
+++ b/deps/v8/src/libsampler/sampler.cc
@@ -12,7 +12,7 @@
#include <sys/time.h>
#include <atomic>
-#if !V8_OS_QNX && !V8_OS_AIX
+#if !V8_OS_QNX && !V8_OS_AIX && !V8_OS_HAIKU
#include <sys/syscall.h> // NOLINT
#endif
@@ -20,7 +20,7 @@
#include <mach/mach.h>
// OpenBSD doesn't have <ucontext.h>. ucontext_t lives in <signal.h>
// and is a typedef for struct sigcontext. There is no uc_mcontext.
-#elif !V8_OS_OPENBSD
+#elif !V8_OS_OPENBSD && !V8_OS_HAIKU
#include <ucontext.h>
#endif
@@ -490,6 +490,16 @@ void SignalHandler::FillRegisterState(void* context, RegisterState* state) {
state->sp = reinterpret_cast<void*>(mcontext.__gregs[_REG_SP]);
state->fp = reinterpret_cast<void*>(mcontext.__gregs[_REG_FP]);
#endif // V8_HOST_ARCH_*
+#elif V8_OS_HAIKU
+#if V8_HOST_ARCH_IA32
+ state->pc = reinterpret_cast<void*>(mcontext.eip);
+ state->sp = reinterpret_cast<void*>(mcontext.esp);
+ state->fp = reinterpret_cast<void*>(mcontext.ebp);
+#elif V8_HOST_ARCH_X64
+ state->pc = reinterpret_cast<void*>(mcontext.rip);
+ state->sp = reinterpret_cast<void*>(mcontext.rsp);
+ state->fp = reinterpret_cast<void*>(mcontext.rbp);
+#endif // V8_HOST_ARCH_*
#elif V8_OS_NETBSD
#if V8_HOST_ARCH_IA32
state->pc = reinterpret_cast<void*>(mcontext.__gregs[_REG_EIP]);
diff --git a/deps/v8/tools/mb/mb.py b/deps/v8/tools/mb/mb.py
index f3e4615..c3649ba 100755
--- a/deps/v8/tools/mb/mb.py
+++ b/deps/v8/tools/mb/mb.py
@@ -869,12 +869,15 @@ class MetaBuildWrapper(object):
subdir, exe = 'linux64', 'gn'
elif self.platform == 'darwin':
subdir, exe = 'mac', 'gn'
+ elif self.platform == 'haiku1':
+ subdir, exe = 'haiku','gn'
+ gn_path = "/bin/gn"
else:
subdir, exe = 'win', 'gn.exe'
arch = platform.machine()
if (arch.startswith('s390') or arch.startswith('ppc') or
- self.platform.startswith('aix')):
+ self.platform.startswith('aix') or self.platform.startswith('haiku')):
# use gn in PATH
gn_path = 'gn'
else:
--
2.30.2
From d36ede92f62b5386f21bb20f2bcd95f5f88793e3 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sat, 27 Mar 2021 18:23:32 +0100
Subject: v8 gyp build for Haiku
diff --git a/tools/v8_gypfiles/features.gypi b/tools/v8_gypfiles/features.gypi
index b24e0b3..c2a7ecb 100644
--- a/tools/v8_gypfiles/features.gypi
+++ b/tools/v8_gypfiles/features.gypi
@@ -46,6 +46,11 @@
}, {
'is_fuchsia': 0,
}],
+ ['OS == "haiku"', {
+ 'is_haiku': 1,
+ }, {
+ 'is_haiku': 0,
+ }],
['OS=="android"', { # GYP reverts OS to linux so use `-D OS=android`
'is_android': 1,
}, {
diff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp
index 48ec392..5e3c90c 100644
--- a/tools/v8_gypfiles/v8.gyp
+++ b/tools/v8_gypfiles/v8.gyp
@@ -1085,6 +1085,17 @@
'<(V8_ROOT)/src/base/platform/platform-fuchsia.cc',
]
}],
+ ['is_haiku', {
+ 'link_settings': {
+ 'libraries': [
+ '-lexecinfo',
+ ]
+ },
+ 'sources': [
+ '<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
+ '<(V8_ROOT)/src/base/platform/platform-haiku.cc',
+ ]
+ }],
['OS == "mac" or OS == "ios"', {
'sources': [
'<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
--
2.30.2
From b5ab564aba7d6d0158cbf3c1224632bcec2e2483 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Fri, 15 Oct 2021 14:42:17 +0200
Subject: ares compat
diff --git a/src/cares_wrap.h b/src/cares_wrap.h
index 60f99e6..44e254b 100644
--- a/src/cares_wrap.h
+++ b/src/cares_wrap.h
@@ -22,7 +22,7 @@
# include <netdb.h>
#endif // __POSIX__
-# include <ares_nameser.h>
+# include <arpa/nameser.h>
namespace node {
namespace cares_wrap {
--
2.30.2