4 changed files with 620 additions and 0 deletions
@ -0,0 +1,29 @@ |
|||||||
|
|
||||||
|
#include <stdio.h> |
||||||
|
#include <stdlib.h> |
||||||
|
#include <string.h> |
||||||
|
#include <unistd.h> |
||||||
|
#include <errno.h> |
||||||
|
|
||||||
|
#define NAME "node12" |
||||||
|
|
||||||
|
#define WRAP PREFIX "/bin/" NAME |
||||||
|
#define REAL PREFIX "/libexec/" NAME "/node" |
||||||
|
|
||||||
|
int main(int argn, char **argv) |
||||||
|
{ |
||||||
|
char *path; |
||||||
|
|
||||||
|
argv[0] = REAL; |
||||||
|
if ((path = getenv("NODE")) != NULL) |
||||||
|
if (strcmp(path, NAME) != 0 && strcmp(path, WRAP) != 0) |
||||||
|
argv[0] = path; |
||||||
|
|
||||||
|
if (execvp(argv[0], argv) == -1) { |
||||||
|
fprintf(stderr, "node: ERROR: failed to execute \"%s\": %s\n", argv[0], strerror(errno)); |
||||||
|
exit(1); |
||||||
|
} |
||||||
|
|
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
@ -0,0 +1,390 @@ |
|||||||
|
Index: common.gypi
|
||||||
|
--- common.gypi.orig 2020-02-11 16:18:16.000000000 +0100
|
||||||
|
+++ common.gypi 2020-02-11 22:42:06.666241000 +0100
|
||||||
|
@@ -195,7 +195,7 @@
|
||||||
|
}],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
- 'cflags': [ '-O3' ],
|
||||||
|
+ 'cflags': [ '-O2' ],
|
||||||
|
'conditions': [
|
||||||
|
['OS=="solaris"', {
|
||||||
|
# pull in V8's postmortem metadata
|
||||||
|
@@ -359,7 +359,7 @@
|
||||||
|
'ldflags': [ '-pthread' ],
|
||||||
|
}],
|
||||||
|
[ 'OS in "linux freebsd openbsd solaris android aix cloudabi"', {
|
||||||
|
- 'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ],
|
||||||
|
+ 'cflags': [ '-Wno-unused-parameter', ],
|
||||||
|
'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++1y' ],
|
||||||
|
'defines': [ '__STDC_FORMAT_MACROS' ],
|
||||||
|
'ldflags': [ '-rdynamic' ],
|
||||||
|
@@ -458,10 +458,7 @@
|
||||||
|
'-fno-strict-aliasing',
|
||||||
|
],
|
||||||
|
'WARNING_CFLAGS': [
|
||||||
|
- '-Wall',
|
||||||
|
- '-Wendif-labels',
|
||||||
|
- '-W',
|
||||||
|
- '-Wno-unused-parameter',
|
||||||
|
+ '-Wno-unused-parameter'
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'target_conditions': [
|
||||||
|
Index: deps/uv/common.gypi
|
||||||
|
--- deps/uv/common.gypi.orig 2020-02-11 16:18:18.000000000 +0100
|
||||||
|
+++ deps/uv/common.gypi 2020-02-11 22:42:06.666408000 +0100
|
||||||
|
@@ -46,7 +46,7 @@
|
||||||
|
'Release': {
|
||||||
|
'defines': [ 'NDEBUG' ],
|
||||||
|
'cflags': [
|
||||||
|
- '-O3',
|
||||||
|
+ '-O2',
|
||||||
|
],
|
||||||
|
'msvs_settings': {
|
||||||
|
'VCCLCompilerTool': {
|
||||||
|
Index: deps/uv/uv.gyp
|
||||||
|
--- deps/uv/uv.gyp.orig 2020-02-11 16:18:18.000000000 +0100
|
||||||
|
+++ deps/uv/uv.gyp 2020-02-11 22:42:06.666567000 +0100
|
||||||
|
@@ -178,7 +178,7 @@
|
||||||
|
'src/unix/udp.c',
|
||||||
|
],
|
||||||
|
'link_settings': {
|
||||||
|
- 'libraries': [ '-lm' ],
|
||||||
|
+ 'libraries': [ '-lz', '-lm' ],
|
||||||
|
'conditions': [
|
||||||
|
['OS=="solaris"', {
|
||||||
|
'ldflags': [ '-pthreads' ],
|
||||||
|
Index: deps/v8/src/base/platform/platform-freebsd.cc
|
||||||
|
--- deps/v8/src/base/platform/platform-freebsd.cc.orig 2020-02-11 16:18:18.000000000 +0100
|
||||||
|
+++ deps/v8/src/base/platform/platform-freebsd.cc 2020-02-11 22:42:06.666704000 +0100
|
||||||
|
@@ -27,6 +27,7 @@
|
||||||
|
#include <strings.h> // index
|
||||||
|
|
||||||
|
#include <cmath>
|
||||||
|
+#include <cstdio>
|
||||||
|
|
||||||
|
#undef MAP_TYPE
|
||||||
|
|
||||||
|
Index: deps/v8/src/builtins/base.tq
|
||||||
|
--- deps/v8/src/builtins/base.tq.orig 2020-02-11 16:18:18.000000000 +0100
|
||||||
|
+++ deps/v8/src/builtins/base.tq 2020-02-11 22:42:06.667354000 +0100
|
||||||
|
@@ -477,9 +477,6 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
extern class JSArray extends JSObject {
|
||||||
|
- IsEmpty(): bool {
|
||||||
|
- return this.length == 0;
|
||||||
|
- }
|
||||||
|
length: Number;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -493,15 +490,6 @@
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
-macro NewJSArray(implicit context: Context)(): JSArray {
|
||||||
|
- return new JSArray{
|
||||||
|
- map: GetFastPackedSmiElementsJSArrayMap(),
|
||||||
|
- properties_or_hash: kEmptyFixedArray,
|
||||||
|
- elements: kEmptyFixedArray,
|
||||||
|
- length: 0
|
||||||
|
- };
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
// A HeapObject with a JSArray map, and either fast packed elements, or fast
|
||||||
|
// holey elements when the global NoElementsProtector is not invalidated.
|
||||||
|
transient type FastJSArray extends JSArray;
|
||||||
|
@@ -2969,10 +2957,6 @@
|
||||||
|
return UnsafeCast<Map>(
|
||||||
|
LoadNativeContext(context)[JS_ARRAY_PACKED_ELEMENTS_MAP_INDEX]);
|
||||||
|
}
|
||||||
|
-macro GetFastPackedSmiElementsJSArrayMap(implicit context: Context)(): Map {
|
||||||
|
- return UnsafeCast<Map>(
|
||||||
|
- LoadNativeContext(context)[JS_ARRAY_PACKED_SMI_ELEMENTS_MAP_INDEX]);
|
||||||
|
-}
|
||||||
|
macro GetProxyRevocableResultMap(implicit context: Context)(): Map {
|
||||||
|
return UnsafeCast<Map>(
|
||||||
|
LoadNativeContext(context)[PROXY_REVOCABLE_RESULT_MAP_INDEX]);
|
||||||
|
@@ -3508,11 +3492,6 @@
|
||||||
|
unreachable;
|
||||||
|
}
|
||||||
|
|
||||||
|
-macro VerifiedUnreachable(): never {
|
||||||
|
- StaticAssert(false);
|
||||||
|
- unreachable;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
macro Float64IsSomeInfinity(value: float64): bool {
|
||||||
|
if (value == V8_INFINITY) {
|
||||||
|
return true;
|
||||||
|
Index: deps/v8/src/wasm/wasm-result.cc
|
||||||
|
--- deps/v8/src/wasm/wasm-result.cc.orig 2020-02-11 16:18:19.000000000 +0100
|
||||||
|
+++ deps/v8/src/wasm/wasm-result.cc 2020-02-11 22:42:06.667477000 +0100
|
||||||
|
@@ -2,6 +2,8 @@
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
+#include <cstdarg>
|
||||||
|
+
|
||||||
|
#include "src/wasm/wasm-result.h"
|
||||||
|
|
||||||
|
#include "src/execution/isolate-inl.h"
|
||||||
|
Index: lib/dns.js
|
||||||
|
--- lib/dns.js.orig 2020-02-11 16:18:20.000000000 +0100
|
||||||
|
+++ lib/dns.js 2020-02-11 22:42:06.667607000 +0100
|
||||||
|
@@ -146,6 +146,10 @@
|
||||||
|
req.hostname = hostname;
|
||||||
|
req.oncomplete = all ? onlookupall : onlookup;
|
||||||
|
|
||||||
|
+ /* FreeBSD getaddrinfo(3) knows AI_V4MAPPED, but dislikes it */
|
||||||
|
+ if (process.platform === "freebsd")
|
||||||
|
+ hints &= ~(exports.V4MAPPED);
|
||||||
|
+
|
||||||
|
const err = cares.getaddrinfo(
|
||||||
|
req, toASCII(hostname), family, hints, verbatim
|
||||||
|
);
|
||||||
|
Index: lib/internal/modules/cjs/loader.js
|
||||||
|
--- lib/internal/modules/cjs/loader.js.orig 2020-02-11 16:18:20.000000000 +0100
|
||||||
|
+++ lib/internal/modules/cjs/loader.js 2020-02-11 22:42:06.667826000 +0100
|
||||||
|
@@ -1259,7 +1259,10 @@
|
||||||
|
path.resolve(process.execPath, '..') :
|
||||||
|
path.resolve(process.execPath, '..', '..');
|
||||||
|
|
||||||
|
- let paths = [path.resolve(prefixDir, 'lib', 'node')];
|
||||||
|
+ let paths = [
|
||||||
|
+ path.resolve(prefixDir, '..', 'lib', 'node', 'usr'),
|
||||||
|
+ path.resolve(prefixDir, '..', 'lib', 'node', 'pkg')
|
||||||
|
+ ];
|
||||||
|
|
||||||
|
if (homeDir) {
|
||||||
|
paths.unshift(path.resolve(homeDir, '.node_libraries'));
|
||||||
|
Index: src/inspector/node_string.h
|
||||||
|
--- src/inspector/node_string.h.orig 2020-02-11 16:18:20.000000000 +0100
|
||||||
|
+++ src/inspector/node_string.h 2020-02-11 22:42:06.667949000 +0100
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
#ifndef SRC_INSPECTOR_NODE_STRING_H_
|
||||||
|
#define SRC_INSPECTOR_NODE_STRING_H_
|
||||||
|
|
||||||
|
+#include "env.h"
|
||||||
|
#include "util.h"
|
||||||
|
#include "v8-inspector.h"
|
||||||
|
|
||||||
|
Index: src/inspector_socket_server.cc
|
||||||
|
--- src/inspector_socket_server.cc.orig 2020-02-11 16:18:20.000000000 +0100
|
||||||
|
+++ src/inspector_socket_server.cc 2020-02-11 22:42:06.668099000 +0100
|
||||||
|
@@ -20,7 +20,7 @@
|
||||||
|
bool include_protocol);
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
-static const uint8_t PROTOCOL_JSON[] = {
|
||||||
|
+static uint8_t PROTOCOL_JSON[] = {
|
||||||
|
#include "v8_inspector_protocol_json.h" // NOLINT(build/include_order)
|
||||||
|
};
|
||||||
|
|
||||||
|
Index: src/node_constants.cc
|
||||||
|
--- src/node_constants.cc.orig 2020-02-11 16:18:20.000000000 +0100
|
||||||
|
+++ src/node_constants.cc 2020-02-11 22:42:06.668295000 +0100
|
||||||
|
@@ -36,10 +36,10 @@
|
||||||
|
|
||||||
|
|
||||||
|
#if HAVE_OPENSSL
|
||||||
|
-#include <openssl/ec.h>
|
||||||
|
-#include <openssl/ssl.h>
|
||||||
|
+#include "openssl/ec.h"
|
||||||
|
+#include "openssl/ssl.h"
|
||||||
|
#ifndef OPENSSL_NO_ENGINE
|
||||||
|
-#include <openssl/engine.h>
|
||||||
|
+#include "openssl/engine.h"
|
||||||
|
#endif // !OPENSSL_NO_ENGINE
|
||||||
|
#endif // HAVE_OPENSSL
|
||||||
|
|
||||||
|
Index: src/node_crypto.cc
|
||||||
|
--- src/node_crypto.cc.orig 2020-02-11 16:18:20.000000000 +0100
|
||||||
|
+++ src/node_crypto.cc 2020-02-11 22:42:06.669048000 +0100
|
||||||
|
@@ -38,17 +38,17 @@
|
||||||
|
#include "util-inl.h"
|
||||||
|
#include "v8.h"
|
||||||
|
|
||||||
|
-#include <openssl/ec.h>
|
||||||
|
-#include <openssl/ecdh.h>
|
||||||
|
+#include "openssl/ec.h"
|
||||||
|
+#include "openssl/ecdh.h"
|
||||||
|
#ifndef OPENSSL_NO_ENGINE
|
||||||
|
-# include <openssl/engine.h>
|
||||||
|
+# include "openssl/engine.h"
|
||||||
|
#endif // !OPENSSL_NO_ENGINE
|
||||||
|
-#include <openssl/evp.h>
|
||||||
|
-#include <openssl/pem.h>
|
||||||
|
-#include <openssl/x509v3.h>
|
||||||
|
-#include <openssl/hmac.h>
|
||||||
|
-#include <openssl/rand.h>
|
||||||
|
-#include <openssl/pkcs12.h>
|
||||||
|
+#include "openssl/evp.h"
|
||||||
|
+#include "openssl/pem.h"
|
||||||
|
+#include "openssl/x509v3.h"
|
||||||
|
+#include "openssl/hmac.h"
|
||||||
|
+#include "openssl/rand.h"
|
||||||
|
+#include "openssl/pkcs12.h"
|
||||||
|
|
||||||
|
#include <cerrno>
|
||||||
|
#include <climits> // INT_MAX
|
||||||
|
Index: src/node_crypto.h
|
||||||
|
--- src/node_crypto.h.orig 2020-02-11 22:42:06.669274000 +0100
|
||||||
|
+++ src/node_crypto.h 2020-02-11 22:47:55.771975000 +0100
|
||||||
|
@@ -33,12 +33,13 @@
|
||||||
|
|
||||||
|
#include "v8.h"
|
||||||
|
|
||||||
|
-#include <openssl/err.h>
|
||||||
|
-#include <openssl/ssl.h>
|
||||||
|
-#include <openssl/bn.h>
|
||||||
|
-#include <openssl/dh.h>
|
||||||
|
-#include <openssl/ec.h>
|
||||||
|
-#include <openssl/rsa.h>
|
||||||
|
+#include "openssl/err.h"
|
||||||
|
+#include "openssl/ssl.h"
|
||||||
|
+#include "openssl/evp.h"
|
||||||
|
+#include "openssl/bn.h"
|
||||||
|
+#include "openssl/dh.h"
|
||||||
|
+#include "openssl/ec.h"
|
||||||
|
+#include "openssl/rsa.h"
|
||||||
|
|
||||||
|
namespace node {
|
||||||
|
namespace crypto {
|
||||||
|
Index: src/node_metadata.cc
|
||||||
|
--- src/node_metadata.cc.orig 2020-02-11 16:18:20.000000000 +0100
|
||||||
|
+++ src/node_metadata.cc 2020-02-11 22:42:06.669460000 +0100
|
||||||
|
@@ -9,7 +9,7 @@
|
||||||
|
#include "zlib.h"
|
||||||
|
|
||||||
|
#if HAVE_OPENSSL
|
||||||
|
-#include <openssl/opensslv.h>
|
||||||
|
+#include "openssl/opensslv.h"
|
||||||
|
#endif // HAVE_OPENSSL
|
||||||
|
|
||||||
|
#ifdef NODE_HAVE_I18N_SUPPORT
|
||||||
|
Index: src/tls_wrap.h
|
||||||
|
--- src/tls_wrap.h.orig 2020-02-11 16:18:20.000000000 +0100
|
||||||
|
+++ src/tls_wrap.h 2020-02-11 22:42:06.669581000 +0100
|
||||||
|
@@ -30,7 +30,7 @@
|
||||||
|
#include "stream_wrap.h"
|
||||||
|
#include "v8.h"
|
||||||
|
|
||||||
|
-#include <openssl/ssl.h>
|
||||||
|
+#include "openssl/ssl.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
Index: src/tracing/traced_value.cc
|
||||||
|
--- src/tracing/traced_value.cc.orig 2020-02-11 16:18:21.000000000 +0100
|
||||||
|
+++ src/tracing/traced_value.cc 2020-02-11 22:42:06.669714000 +0100
|
||||||
|
@@ -3,6 +3,7 @@
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#include "tracing/traced_value.h"
|
||||||
|
+#include "base_object.h"
|
||||||
|
|
||||||
|
#if defined(NODE_HAVE_I18N_SUPPORT)
|
||||||
|
#include <unicode/utf8.h>
|
||||||
|
Index: src/util.h
|
||||||
|
--- src/util.h.orig 2020-02-11 16:18:21.000000000 +0100
|
||||||
|
+++ src/util.h 2020-02-11 22:42:06.669874000 +0100
|
||||||
|
@@ -152,14 +152,23 @@
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
+#undef CHECK_EQ
|
||||||
|
#define CHECK_EQ(a, b) CHECK((a) == (b))
|
||||||
|
+#undef CHECK_GE
|
||||||
|
#define CHECK_GE(a, b) CHECK((a) >= (b))
|
||||||
|
+#undef CHECK_GT
|
||||||
|
#define CHECK_GT(a, b) CHECK((a) > (b))
|
||||||
|
+#undef CHECK_LE
|
||||||
|
#define CHECK_LE(a, b) CHECK((a) <= (b))
|
||||||
|
+#undef CHECK_LT
|
||||||
|
#define CHECK_LT(a, b) CHECK((a) < (b))
|
||||||
|
+#undef CHECK_NE
|
||||||
|
#define CHECK_NE(a, b) CHECK((a) != (b))
|
||||||
|
+#undef CHECK_NULL
|
||||||
|
#define CHECK_NULL(val) CHECK((val) == nullptr)
|
||||||
|
+#undef CHECK_NOT_NULL
|
||||||
|
#define CHECK_NOT_NULL(val) CHECK((val) != nullptr)
|
||||||
|
+#undef CHECK_IMPLIES
|
||||||
|
#define CHECK_IMPLIES(a, b) CHECK(!(a) || (b))
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
@@ -187,6 +196,7 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
+#undef UNREACHABLE
|
||||||
|
#define UNREACHABLE(...) \
|
||||||
|
ERROR_AND_ABORT("Unreachable code reached" __VA_OPT__(": ") __VA_ARGS__)
|
||||||
|
|
||||||
|
Index: tools/install.py
|
||||||
|
--- tools/install.py.orig 2020-02-11 16:18:21.000000000 +0100
|
||||||
|
+++ tools/install.py 2020-02-11 22:42:06.670000000 +0100
|
||||||
|
@@ -151,10 +151,7 @@
|
||||||
|
action(['deps/v8/tools/gdbinit'], 'share/doc/node/')
|
||||||
|
action(['deps/v8/tools/lldb_commands.py'], 'share/doc/node/')
|
||||||
|
|
||||||
|
- if 'freebsd' in sys.platform or 'openbsd' in sys.platform:
|
||||||
|
- action(['doc/node.1'], 'man/man1/')
|
||||||
|
- else:
|
||||||
|
- action(['doc/node.1'], 'share/man/man1/')
|
||||||
|
+ action(['doc/node.1'], 'man/man1/')
|
||||||
|
|
||||||
|
if 'true' == variables.get('node_install_npm'): npm_files(action)
|
||||||
|
|
||||||
|
Index: tools/v8_gypfiles/toolchain.gypi
|
||||||
|
--- tools/v8_gypfiles/toolchain.gypi.orig 2020-02-11 16:18:22.000000000 +0100
|
||||||
|
+++ tools/v8_gypfiles/toolchain.gypi 2020-02-11 22:42:06.670218000 +0100
|
||||||
|
@@ -1123,12 +1123,6 @@
|
||||||
|
['OS=="solaris"', {
|
||||||
|
'defines': [ '__C99FEATURES__=1' ], # isinf() etc.
|
||||||
|
}],
|
||||||
|
- ['OS=="freebsd" or OS=="openbsd"', {
|
||||||
|
- 'cflags': [ '-I/usr/local/include' ],
|
||||||
|
- }],
|
||||||
|
- ['OS=="netbsd"', {
|
||||||
|
- 'cflags': [ '-I/usr/pkg/include' ],
|
||||||
|
- }],
|
||||||
|
['OS=="aix"', {
|
||||||
|
'defines': [
|
||||||
|
# Support for malloc(0)
|
||||||
|
@@ -1296,8 +1290,8 @@
|
||||||
|
# Don't use -O3 with sanitizers.
|
||||||
|
['asan==0 and msan==0 and lsan==0 \
|
||||||
|
and tsan==0 and ubsan==0 and ubsan_vptr==0', {
|
||||||
|
- 'cflags': ['-O3'],
|
||||||
|
- 'cflags!': ['-O2'],
|
||||||
|
+ 'cflags': ['-O2'],
|
||||||
|
+ 'cflags!': ['-O3'],
|
||||||
|
}, {
|
||||||
|
'cflags': ['-O2'],
|
||||||
|
'cflags!': ['-O3'],
|
||||||
|
@@ -1345,8 +1339,8 @@
|
||||||
|
# Don't use -O3 with sanitizers.
|
||||||
|
['asan==0 and msan==0 and lsan==0 \
|
||||||
|
and tsan==0 and ubsan==0 and ubsan_vptr==0', {
|
||||||
|
- 'cflags': ['-O3'],
|
||||||
|
- 'cflags!': ['-O2'],
|
||||||
|
+ 'cflags': ['-O2'],
|
||||||
|
+ 'cflags!': ['-O3'],
|
||||||
|
}, {
|
||||||
|
'cflags': ['-O2'],
|
||||||
|
'cflags!': ['-O3'],
|
||||||
|
Index: tools/v8_gypfiles/v8.gyp
|
||||||
|
--- tools/v8_gypfiles/v8.gyp.orig 2020-02-11 16:18:22.000000000 +0100
|
||||||
|
+++ tools/v8_gypfiles/v8.gyp 2020-02-11 22:42:06.670435000 +0100
|
||||||
|
@@ -86,8 +86,7 @@
|
||||||
|
"<(V8_ROOT)/src/builtins/typed-array-some.tq",
|
||||||
|
"<(V8_ROOT)/src/builtins/typed-array-subarray.tq",
|
||||||
|
"<(V8_ROOT)/src/builtins/typed-array.tq",
|
||||||
|
- "<(V8_ROOT)/third_party/v8/builtins/array-sort.tq",
|
||||||
|
- "<(V8_ROOT)/test/torque/test-torque.tq",
|
||||||
|
+ "<(V8_ROOT)/third_party/v8/builtins/array-sort.tq"
|
||||||
|
],
|
||||||
|
'torque_output_root': '<(SHARED_INTERMEDIATE_DIR)/torque-output-root',
|
||||||
|
'torque_files_replaced': ['<!@pymod_do_main(ForEachReplace ".tq" "-tq-csa" <@(torque_files))'],
|
||||||
@ -0,0 +1,198 @@ |
|||||||
|
## |
||||||
|
## node12.spec -- OpenPKG RPM Package Specification |
||||||
|
## Copyright (c) 2000-2020 OpenPKG Project <http://openpkg.org/> |
||||||
|
## |
||||||
|
## Permission to use, copy, modify, and distribute this software for |
||||||
|
## any purpose with or without fee is hereby granted, provided that |
||||||
|
## the above copyright notice and this permission notice appear in all |
||||||
|
## copies. |
||||||
|
## |
||||||
|
## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED |
||||||
|
## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
||||||
|
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
||||||
|
## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR |
||||||
|
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||||
|
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
||||||
|
## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
||||||
|
## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
||||||
|
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
||||||
|
## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
||||||
|
## SUCH DAMAGE. |
||||||
|
## |
||||||
|
|
||||||
|
# package version |
||||||
|
%define V_opkg 12.16.1 |
||||||
|
%define V_dist 12.16.1 |
||||||
|
|
||||||
|
# package information |
||||||
|
Name: node12 |
||||||
|
Summary: Node JavaScript Run-Time (V12) |
||||||
|
URL: http://nodejs.org/ |
||||||
|
Vendor: Node Foundation |
||||||
|
Packager: OpenPKG Project |
||||||
|
Distribution: OpenPKG Community |
||||||
|
Class: PLUS |
||||||
|
Group: Web |
||||||
|
License: MIT/BSD |
||||||
|
Version: %{V_opkg} |
||||||
|
Release: 20200305 |
||||||
|
|
||||||
|
# package options |
||||||
|
%option with_icu yes |
||||||
|
%option with_node no |
||||||
|
|
||||||
|
# list of sources |
||||||
|
Source0: https://nodejs.org/download/release/v%{V_dist}/node-v%{V_dist}.tar.xz |
||||||
|
Source1: node.c |
||||||
|
Patch0: node12.patch |
||||||
|
|
||||||
|
# build information |
||||||
|
BuildPreReq: OpenPKG, openpkg >= 20160101, make, gcc, gcc::with_cxx = yes, python2, pkgconfig |
||||||
|
PreReq: OpenPKG, openpkg >= 20160101 |
||||||
|
BuildPreReq: openssl11, libexecinfo, zlib, ares, libuv, nghttp2 |
||||||
|
PreReq: openssl11, libexecinfo, zlib, ares, libuv, nghttp2 |
||||||
|
%if "%{with_icu}" == "yes" |
||||||
|
BuildPreReq: icu |
||||||
|
PreReq: icu |
||||||
|
%endif |
||||||
|
%if "%{with_node}" == "yes" |
||||||
|
Provides: node = %{version} |
||||||
|
%endif |
||||||
|
|
||||||
|
%description |
||||||
|
Node.js (V12) provides an easy way to build scalable network |
||||||
|
servers in JavaScript. It is an event-driven I/O environment based |
||||||
|
on Google V8 JavaScript virtual machine version 7.7.299.13. |
||||||
|
|
||||||
|
%track |
||||||
|
prog node12 = { |
||||||
|
version = %{V_dist} |
||||||
|
url = https://nodejs.org/download/release/ |
||||||
|
regex = v(12\.\d+\.\d+)/ |
||||||
|
} |
||||||
|
|
||||||
|
%prep |
||||||
|
%setup -q -n node-v%{V_dist} |
||||||
|
%patch -p0 |
||||||
|
|
||||||
|
%build |
||||||
|
# provide local tool wrapper scripts as we cannot |
||||||
|
# reliably pass the includes via configure variables |
||||||
|
cflags="-I`pwd`/deps/v8" |
||||||
|
cflags="$cflags -I`pwd`/deps/v8/include" |
||||||
|
%if "%{with_icu}" != "yes" |
||||||
|
cflags="$cflags -I`pwd`/deps/icu-small/source/common" |
||||||
|
%endif |
||||||
|
cflags="$cflags -I`pwd`/deps/llhttp/include" |
||||||
|
cflags="$cflags -I`pwd`/deps/http_parser" |
||||||
|
cflags="$cflags %{l_cppflags openssl11 .}" |
||||||
|
ldflags="%{l_ldflags openssl11 .}" |
||||||
|
mkdir tool |
||||||
|
for tool in gcc g++ c%{l_nil}c c++; do |
||||||
|
( echo "#!/bin/sh" |
||||||
|
echo "exec %{l_prefix}/bin/$tool $cflags $ldflags \${1+\"\$@\"}" |
||||||
|
) >tool/$tool |
||||||
|
chmod a+x tool/$tool |
||||||
|
done |
||||||
|
PATH="`pwd`/tool:$PATH" |
||||||
|
|
||||||
|
# configure program |
||||||
|
libs="-lexecinfo -lz" |
||||||
|
case "%{l_platform -t} " in |
||||||
|
*-linux* ) libs="$libs -ldl" ;; |
||||||
|
esac |
||||||
|
CC="gcc" \ |
||||||
|
CXX="g++" \ |
||||||
|
CFLAGS="%{l_cflags -O}" \ |
||||||
|
CXXFLAGS="%{l_cxxflags -O} -Wno-deprecated-declarations" \ |
||||||
|
CPPFLAGS="%{l_cppflags openssl11 .}" \ |
||||||
|
LDFLAGS="%{l_ldflags openssl11 .}" \ |
||||||
|
LIBS="$libs" \ |
||||||
|
%{l_prefix}/bin/python2 ./configure \ |
||||||
|
--prefix=%{l_prefix} \ |
||||||
|
--shared-openssl \ |
||||||
|
--shared-openssl-includes=%{l_prefix}/include/openssl11 \ |
||||||
|
--shared-openssl-libpath=%{l_prefix}/lib/openssl11 \ |
||||||
|
--shared-openssl-libname="ssl,crypto" \ |
||||||
|
--shared-zlib \ |
||||||
|
--shared-zlib-includes=%{l_prefix}/include \ |
||||||
|
--shared-zlib-libpath=%{l_prefix}/lib \ |
||||||
|
--shared-zlib-libname="z" \ |
||||||
|
--shared-cares \ |
||||||
|
--shared-cares-includes=%{l_prefix}/include \ |
||||||
|
--shared-cares-libpath=%{l_prefix}/lib \ |
||||||
|
--shared-cares-libname="ares" \ |
||||||
|
--shared-libuv \ |
||||||
|
--shared-libuv-includes=%{l_prefix}/include \ |
||||||
|
--shared-libuv-libpath=%{l_prefix}/lib \ |
||||||
|
--shared-libuv-libname="uv" \ |
||||||
|
--shared-nghttp2 \ |
||||||
|
--shared-nghttp2-includes=%{l_prefix}/include \ |
||||||
|
--shared-nghttp2-libpath=%{l_prefix}/lib \ |
||||||
|
--shared-nghttp2-libname="nghttp2" \ |
||||||
|
%if "%{with_icu}" == "yes" |
||||||
|
--with-intl=system-icu \ |
||||||
|
%else |
||||||
|
--with-intl=small-icu \ |
||||||
|
%endif |
||||||
|
--with-snapshot \ |
||||||
|
--without-npm \ |
||||||
|
--download=none |
||||||
|
|
||||||
|
# build program |
||||||
|
%{l_make} %{l_mflags -O} |
||||||
|
|
||||||
|
# build wrapper |
||||||
|
%{l_cc} %{l_cflags -O} %{l_cppflags} -DPREFIX="\"%{l_prefix}\"" %{l_ldflags} \ |
||||||
|
-o node-wrapper %{SOURCE node.c} |
||||||
|
|
||||||
|
%install |
||||||
|
# install program |
||||||
|
( PATH="`pwd`/tool:$PATH" |
||||||
|
%{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT |
||||||
|
) || exit $? |
||||||
|
|
||||||
|
# install wrapper |
||||||
|
%{l_shtool} mkdir -f -p -m 755 \ |
||||||
|
$RPM_BUILD_ROOT%{l_prefix}/libexec/node12 |
||||||
|
mv $RPM_BUILD_ROOT%{l_prefix}/bin/node \ |
||||||
|
$RPM_BUILD_ROOT%{l_prefix}/libexec/node12/node |
||||||
|
%{l_shtool} install -c -s -m 755 \ |
||||||
|
node-wrapper $RPM_BUILD_ROOT%{l_prefix}/bin/node |
||||||
|
|
||||||
|
# post-installation strip-down |
||||||
|
strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true |
||||||
|
rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib/dtrace |
||||||
|
rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/systemtap |
||||||
|
rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/doc |
||||||
|
|
||||||
|
%if "%{with_node}" == "yes" |
||||||
|
# create NPM package installation areas |
||||||
|
%{l_shtool} mkdir -f -p -m 755 \ |
||||||
|
$RPM_BUILD_ROOT%{l_prefix}/lib/node/usr \ |
||||||
|
$RPM_BUILD_ROOT%{l_prefix}/lib/node/pkg |
||||||
|
%endif |
||||||
|
|
||||||
|
# post-adjust installation |
||||||
|
mv $RPM_BUILD_ROOT%{l_prefix}/bin/node \ |
||||||
|
$RPM_BUILD_ROOT%{l_prefix}/bin/node12 |
||||||
|
mv $RPM_BUILD_ROOT%{l_prefix}/include/node \ |
||||||
|
$RPM_BUILD_ROOT%{l_prefix}/include/node12 |
||||||
|
mv $RPM_BUILD_ROOT%{l_prefix}/man/man1/node.1 \ |
||||||
|
$RPM_BUILD_ROOT%{l_prefix}/man/man1/node12.1 |
||||||
|
|
||||||
|
%if "%{with_node}" == "yes" |
||||||
|
# shim as Node |
||||||
|
ln -s node12 $RPM_BUILD_ROOT%{l_prefix}/bin/node |
||||||
|
ln -s node12 $RPM_BUILD_ROOT%{l_prefix}/include/node |
||||||
|
ln -s node12.1 $RPM_BUILD_ROOT%{l_prefix}/man/man1/node.1 |
||||||
|
%endif |
||||||
|
|
||||||
|
# determine installation files |
||||||
|
%{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} |
||||||
|
|
||||||
|
%files -f files |
||||||
|
|
||||||
|
%clean |
||||||
|
|
||||||
Loading…
Reference in new issue