Merge branch 'f23' into epel7

This commit is contained in:
Stephen Gallagher 2016-02-10 13:31:28 -05:00
commit 18de93476b
5 changed files with 119 additions and 819 deletions

1
.gitignore vendored
View File

@ -32,3 +32,4 @@
/node-v0.10.32-stripped.tar.gz /node-v0.10.32-stripped.tar.gz
/node-v0.10.33-stripped.tar.gz /node-v0.10.33-stripped.tar.gz
/node-v0.10.36-stripped.tar.gz /node-v0.10.36-stripped.tar.gz
/node-v0.10.42-stripped.tar.gz

View File

@ -1,689 +0,0 @@
From a9e60792a9c4044e29ec7bbb88419d9283044b86 Mon Sep 17 00:00:00 2001
From: "T.C. Hollingsworth" <tchollingsworth@gmail.com>
Date: Wed, 18 Jun 2014 23:19:19 -0700
Subject: [PATCH] Revert "src: replace usage of String::Utf8Value"
This reverts commit 535c7777ac674ba86cf93c44824e07b0e23ea8c4.
---
src/cares_wrap.cc | 8 ++---
src/fs_event_wrap.cc | 3 +-
src/node.cc | 42 +++++++++++++-------------
src/node_crypto.cc | 31 ++++++++++---------
src/node_dtrace.cc | 6 ++--
src/node_file.cc | 37 +++++++++++------------
src/node_stat_watcher.cc | 3 +-
src/process_wrap.cc | 9 +++---
src/udp_wrap.cc | 9 +++---
src/util.h | 78 ------------------------------------------------
10 files changed, 68 insertions(+), 158 deletions(-)
delete mode 100644 src/util.h
diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc
index 321e144..b7ba828 100644
--- a/src/cares_wrap.cc
+++ b/src/cares_wrap.cc
@@ -741,7 +739,7 @@ static Handle<Value> Query(const Arguments& args) {
// object reference, causing wrap->GetObject() to return undefined.
Local<Object> object = Local<Object>::New(wrap->GetObject());
- node::Utf8Value name(args[0]);
+ String::Utf8Value name(args[0]);
int r = wrap->Send(*name);
if (r) {
@@ -770,7 +768,7 @@ static Handle<Value> QueryWithFamily(const Arguments& args) {
// object reference, causing wrap->GetObject() to return undefined.
Local<Object> object = Local<Object>::New(wrap->GetObject());
- node::Utf8Value name(args[0]);
+ String::Utf8Value name(args[0]);
int family = args[1]->Int32Value();
int r = wrap->Send(*name, family);
@@ -900,7 +898,7 @@ static Handle<Value> IsIP(const Arguments& args) {
static Handle<Value> GetAddrInfo(const Arguments& args) {
HandleScope scope;
- node::Utf8Value hostname(args[0]);
+ String::Utf8Value hostname(args[0]);
int fam = AF_UNSPEC;
if (args[1]->IsInt32()) {
diff --git a/src/fs_event_wrap.cc b/src/fs_event_wrap.cc
index fc54283..7e3eb8c 100644
--- a/src/fs_event_wrap.cc
+++ b/src/fs_event_wrap.cc
@@ -21,7 +21,6 @@
#include "node.h"
#include "handle_wrap.h"
-#include "util.h"
#include <stdlib.h>
@@ -98,7 +97,7 @@ Handle<Value> FSEventWrap::Start(const Arguments& args) {
return ThrowException(Exception::TypeError(String::New("Bad arguments")));
}
- node::Utf8Value path(args[0]);
+ String::Utf8Value path(args[0]);
int r = uv_fs_event_init(uv_default_loop(), &wrap->handle_, *path, OnEvent, 0);
if (r == 0) {
diff --git a/src/node.cc b/src/node.cc
index e9696cd..8257604 100644
--- a/src/node.cc
+++ b/src/node.cc
@@ -1102,7 +1100,7 @@ enum encoding ParseEncoding(Handle<Value> encoding_v, enum encoding _default) {
if (!encoding_v->IsString()) return _default;
- node::Utf8Value encoding(encoding_v);
+ String::Utf8Value encoding(encoding_v);
if (strcasecmp(*encoding, "utf8") == 0) {
return UTF8;
@@ -1202,12 +1200,12 @@ void DisplayExceptionLine (TryCatch &try_catch) {
if (!message.IsEmpty()) {
// Print (filename):(line number): (message).
- node::Utf8Value filename(message->GetScriptResourceName());
+ String::Utf8Value filename(message->GetScriptResourceName());
const char* filename_string = *filename;
int linenum = message->GetLineNumber();
fprintf(stderr, "%s:%i\n", filename_string, linenum);
// Print line of source code.
- node::Utf8Value sourceline(message->GetSourceLine());
+ String::Utf8Value sourceline(message->GetSourceLine());
const char* sourceline_string = *sourceline;
// Because of how node modules work, all scripts are wrapped with a
@@ -1254,7 +1252,7 @@ static void ReportException(TryCatch &try_catch, bool show_line) {
if (show_line) DisplayExceptionLine(try_catch);
- node::Utf8Value trace(try_catch.StackTrace());
+ String::Utf8Value trace(try_catch.StackTrace());
// range errors have a trace member set to undefined
if (trace.length() > 0 && !try_catch.StackTrace()->IsUndefined()) {
@@ -1269,11 +1267,11 @@ static void ReportException(TryCatch &try_catch, bool show_line) {
!(er->ToObject()->Get(String::New("name"))->IsUndefined());
if (isErrorObject) {
- node::Utf8Value name(er->ToObject()->Get(String::New("name")));
+ String::Utf8Value name(er->ToObject()->Get(String::New("name")));
fprintf(stderr, "%s: ", *name);
}
- node::Utf8Value msg(!isErrorObject ? er
+ String::Utf8Value msg(!isErrorObject ? er
: er->ToObject()->Get(String::New("message")));
fprintf(stderr, "%s\n", *msg);
}
@@ -1355,7 +1353,7 @@ static Handle<Value> Chdir(const Arguments& args) {
return ThrowException(Exception::Error(String::New("Bad argument.")));
}
- node::Utf8Value path(args[0]);
+ String::Utf8Value path(args[0]);
uv_err_t r = uv_chdir(*path);
@@ -1406,7 +1404,7 @@ static Handle<Value> Umask(const Arguments& args) {
oct = args[0]->Uint32Value();
} else {
oct = 0;
- node::Utf8Value str(args[0]);
+ String::Utf8Value str(args[0]);
// Parse the octal string.
for (int i = 0; i < str.length(); i++) {
@@ -1512,7 +1510,7 @@ static uid_t uid_by_name(Handle<Value> value) {
if (value->IsUint32()) {
return static_cast<uid_t>(value->Uint32Value());
} else {
- node::Utf8Value name(value);
+ String::Utf8Value name(value);
return uid_by_name(*name);
}
}
@@ -1522,7 +1520,7 @@ static gid_t gid_by_name(Handle<Value> value) {
if (value->IsUint32()) {
return static_cast<gid_t>(value->Uint32Value());
} else {
- node::Utf8Value name(value);
+ String::Utf8Value name(value);
return gid_by_name(*name);
}
}
@@ -1665,7 +1663,7 @@ static Handle<Value> InitGroups(const Arguments& args) {
return ThrowTypeError("argument 2 must be a number or a string");
}
- node::Utf8Value arg0(args[0]);
+ String::Utf8Value arg0(args[0]);
gid_t extra_group;
bool must_free;
char* user;
@@ -1826,7 +1824,7 @@ Handle<Value> DLOpen(const v8::Arguments& args) {
}
Local<Object> module = args[0]->ToObject(); // Cast
- node::Utf8Value filename(args[1]); // Cast
+ String::Utf8Value filename(args[1]); // Cast
if (exports_symbol.IsEmpty()) {
exports_symbol = NODE_PSYMBOL("exports");
@@ -1842,7 +1840,7 @@ Handle<Value> DLOpen(const v8::Arguments& args) {
return ThrowException(Exception::Error(errmsg));
}
- node::Utf8Value path(args[1]);
+ String::Utf8Value path(args[1]);
base = *path;
/* Find the shared library filename within the full path. */
@@ -1961,7 +1959,7 @@ static Handle<Value> Binding(const Arguments& args) {
HandleScope scope;
Local<String> module = args[0]->ToString();
- node::Utf8Value module_v(module);
+ String::Utf8Value module_v(module);
node_module_struct* modp;
if (binding_cache.IsEmpty()) {
@@ -2020,7 +2018,7 @@ static void ProcessTitleSetter(Local<String> property,
Local<Value> value,
const AccessorInfo& info) {
HandleScope scope;
- node::Utf8Value title(value);
+ String::Utf8Value title(value);
// TODO: protect with a lock
uv_set_process_title(*title);
}
@@ -2030,7 +2028,7 @@ static Handle<Value> EnvGetter(Local<String> property,
const AccessorInfo& info) {
HandleScope scope;
#ifdef __POSIX__
- node::Utf8Value key(property);
+ String::Utf8Value key(property);
const char* val = getenv(*key);
if (val) {
return scope.Close(String::New(val));
@@ -2059,8 +2057,8 @@ static Handle<Value> EnvSetter(Local<String> property,
const AccessorInfo& info) {
HandleScope scope;
#ifdef __POSIX__
- node::Utf8Value key(property);
- node::Utf8Value val(value);
+ String::Utf8Value key(property);
+ String::Utf8Value val(value);
setenv(*key, *val, 1);
#else // _WIN32
String::Value key(property);
@@ -2080,7 +2078,7 @@ static Handle<Integer> EnvQuery(Local<String> property,
const AccessorInfo& info) {
HandleScope scope;
#ifdef __POSIX__
- node::Utf8Value key(property);
+ String::Utf8Value key(property);
if (getenv(*key)) {
return scope.Close(Integer::New(0));
}
@@ -2108,7 +2106,7 @@ static Handle<Boolean> EnvDeleter(Local<String> property,
const AccessorInfo& info) {
HandleScope scope;
#ifdef __POSIX__
- node::Utf8Value key(property);
+ String::Utf8Value key(property);
if (!getenv(*key)) return False();
unsetenv(*key); // can't check return value, it's void on some platforms
return True();
diff --git a/src/node_crypto.cc b/src/node_crypto.cc
index 46faba2..0ae1f8a 100644
--- a/src/node_crypto.cc
+++ b/src/node_crypto.cc
@@ -242,7 +241,7 @@ Handle<Value> SecureContext::Init(const Arguments& args) {
OPENSSL_CONST SSL_METHOD *method = SSLv23_method();
if (args.Length() == 1 && args[0]->IsString()) {
- node::Utf8Value sslmethod(args[0]);
+ String::Utf8Value sslmethod(args[0]);
if (strcmp(*sslmethod, "SSLv2_method") == 0) {
#ifndef OPENSSL_NO_SSL2
@@ -362,7 +361,7 @@ static BIO* LoadBIO (Handle<Value> v) {
int r = -1;
if (v->IsString()) {
- node::Utf8Value s(v);
+ String::Utf8Value s(v);
r = BIO_write(bio, *s, s.length());
} else if (Buffer::HasInstance(v)) {
char* buffer_data = Buffer::Data(v);
@@ -414,7 +413,7 @@ Handle<Value> SecureContext::SetKey(const Arguments& args) {
BIO *bio = LoadBIO(args[0]);
if (!bio) return False();
- node::Utf8Value passphrase(args[1]);
+ String::Utf8Value passphrase(args[1]);
EVP_PKEY* key = PEM_read_bio_PrivateKey(bio, NULL, NULL,
len == 1 ? NULL : *passphrase);
@@ -644,7 +643,7 @@ Handle<Value> SecureContext::SetCiphers(const Arguments& args) {
return ThrowException(Exception::TypeError(String::New("Bad parameter")));
}
- node::Utf8Value ciphers(args[0]);
+ String::Utf8Value ciphers(args[0]);
SSL_CTX_set_cipher_list(sc->ctx_, *ciphers);
return True();
@@ -673,7 +672,7 @@ Handle<Value> SecureContext::SetSessionIdContext(const Arguments& args) {
return ThrowException(Exception::TypeError(String::New("Bad parameter")));
}
- node::Utf8Value sessionIdContext(args[0]);
+ String::Utf8Value sessionIdContext(args[0]);
const unsigned char* sid_ctx = (const unsigned char*) *sessionIdContext;
unsigned int sid_ctx_len = sessionIdContext.length();
@@ -1281,7 +1280,7 @@ Handle<Value> Connection::New(const Arguments& args) {
if (is_server) {
SSL_CTX_set_tlsext_servername_callback(sc->ctx_, SelectSNIContextCallback_);
} else {
- node::Utf8Value servername(args[2]);
+ String::Utf8Value servername(args[2]);
SSL_set_tlsext_host_name(p->ssl_, *servername);
}
#endif
@@ -2234,7 +2233,7 @@ class Cipher : public ObjectWrap {
ssize_t key_written = DecodeWrite(key_buf, key_buf_len, args[1], BINARY);
assert(key_written == key_buf_len);
- node::Utf8Value cipherType(args[0]);
+ String::Utf8Value cipherType(args[0]);
bool r = cipher->CipherInit(*cipherType, key_buf, key_buf_len);
@@ -2285,7 +2284,7 @@ class Cipher : public ObjectWrap {
ssize_t iv_written = DecodeWrite(iv_buf, iv_len, args[2], BINARY);
assert(iv_written == iv_len);
- node::Utf8Value cipherType(args[0]);
+ String::Utf8Value cipherType(args[0]);
bool r = cipher->CipherInitIv(*cipherType, key_buf,key_len,iv_buf,iv_len);
@@ -2544,7 +2543,7 @@ class Decipher : public ObjectWrap {
ssize_t key_written = DecodeWrite(key_buf, key_len, args[1], BINARY);
assert(key_written == key_len);
- node::Utf8Value cipherType(args[0]);
+ String::Utf8Value cipherType(args[0]);
bool r = cipher->DecipherInit(*cipherType, key_buf,key_len);
@@ -2595,7 +2594,7 @@ class Decipher : public ObjectWrap {
ssize_t iv_written = DecodeWrite(iv_buf, iv_len, args[2], BINARY);
assert(iv_written == iv_len);
- node::Utf8Value cipherType(args[0]);
+ String::Utf8Value cipherType(args[0]);
bool r = cipher->DecipherInitIv(*cipherType, key_buf,key_len,iv_buf,iv_len);
@@ -2776,7 +2775,7 @@ class Hmac : public ObjectWrap {
return ThrowException(exception);
}
- node::Utf8Value hashType(args[0]);
+ String::Utf8Value hashType(args[0]);
bool r;
@@ -2921,7 +2920,7 @@ class Hash : public ObjectWrap {
"Must give hashtype string as argument")));
}
- node::Utf8Value hashType(args[0]);
+ String::Utf8Value hashType(args[0]);
Hash *hash = new Hash();
if (!hash->HashInit(*hashType)) {
@@ -3095,7 +3094,7 @@ class Sign : public ObjectWrap {
"Must give signtype string as argument")));
}
- node::Utf8Value signType(args[0]);
+ String::Utf8Value signType(args[0]);
bool r = sign->SignInit(*signType);
@@ -3328,7 +3327,7 @@ class Verify : public ObjectWrap {
"Must give verifytype string as argument")));
}
- node::Utf8Value verifyType(args[0]);
+ String::Utf8Value verifyType(args[0]);
bool r = verify->VerifyInit(*verifyType);
@@ -3511,7 +3510,7 @@ class DiffieHellman : public ObjectWrap {
String::New("No group name given")));
}
- node::Utf8Value group_name(args[0]);
+ String::Utf8Value group_name(args[0]);
modp_group* it = modp_groups;
diff --git a/src/node_dtrace.cc b/src/node_dtrace.cc
index 0b2d0f4..4b851e3 100644
--- a/src/node_dtrace.cc
+++ b/src/node_dtrace.cc
@@ -68,7 +66,7 @@ using namespace v8;
return (ThrowException(Exception::Error(String::New("expected " \
"object for " #obj " to contain string member " #member)))); \
} \
- node::Utf8Value _##member(obj->Get(String::New(#member))); \
+ String::Utf8Value _##member(obj->Get(String::New(#member))); \
if ((*(const char **)valp = *_##member) == NULL) \
*(const char **)valp = "<unknown>";
@@ -243,7 +241,7 @@ Handle<Value> DTRACE_HTTP_SERVER_REQUEST(const Arguments& args) {
"object for request to contain string member headers"))));
Local<Value> strfwdfor = headers->Get(String::New("x-forwarded-for"));
- node::Utf8Value fwdfor(strfwdfor);
+ String::Utf8Value fwdfor(strfwdfor);
if (!strfwdfor->IsString() || (req.forwardedFor = *fwdfor) == NULL)
req.forwardedFor = const_cast<char*>("");
diff --git a/src/node_file.cc b/src/node_file.cc
index 3c35e0b..f665b19 100644
--- a/src/node_file.cc
+++ b/src/node_file.cc
@@ -404,7 +403,7 @@ static Handle<Value> Stat(const Arguments& args) {
if (args.Length() < 1) return TYPE_ERROR("path required");
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
- node::Utf8Value path(args[0]);
+ String::Utf8Value path(args[0]);
if (args[1]->IsFunction()) {
ASYNC_CALL(stat, args[1], *path)
@@ -421,7 +420,7 @@ static Handle<Value> LStat(const Arguments& args) {
if (args.Length() < 1) return TYPE_ERROR("path required");
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
- node::Utf8Value path(args[0]);
+ String::Utf8Value path(args[0]);
if (args[1]->IsFunction()) {
ASYNC_CALL(lstat, args[1], *path)
@@ -459,12 +458,12 @@ static Handle<Value> Symlink(const Arguments& args) {
if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string");
if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string");
- node::Utf8Value dest(args[0]);
- node::Utf8Value path(args[1]);
+ String::Utf8Value dest(args[0]);
+ String::Utf8Value path(args[1]);
int flags = 0;
if (args[2]->IsString()) {
- node::Utf8Value mode(args[2]);
+ String::Utf8Value mode(args[2]);
if (strcmp(*mode, "dir") == 0) {
flags |= UV_FS_SYMLINK_DIR;
} else if (strcmp(*mode, "junction") == 0) {
@@ -492,8 +491,8 @@ static Handle<Value> Link(const Arguments& args) {
if (!args[0]->IsString()) return TYPE_ERROR("dest path must be a string");
if (!args[1]->IsString()) return TYPE_ERROR("src path must be a string");
- node::Utf8Value orig_path(args[0]);
- node::Utf8Value new_path(args[1]);
+ String::Utf8Value orig_path(args[0]);
+ String::Utf8Value new_path(args[1]);
if (args[2]->IsFunction()) {
ASYNC_DEST_CALL(link, args[2], *new_path, *orig_path, *new_path)
@@ -509,7 +508,7 @@ static Handle<Value> ReadLink(const Arguments& args) {
if (args.Length() < 1) return TYPE_ERROR("path required");
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
- node::Utf8Value path(args[0]);
+ String::Utf8Value path(args[0]);
if (args[1]->IsFunction()) {
ASYNC_CALL(readlink, args[1], *path)
@@ -528,8 +527,8 @@ static Handle<Value> Rename(const Arguments& args) {
if (!args[0]->IsString()) return TYPE_ERROR("old path must be a string");
if (!args[1]->IsString()) return TYPE_ERROR("new path must be a string");
- node::Utf8Value old_path(args[0]);
- node::Utf8Value new_path(args[1]);
+ String::Utf8Value old_path(args[0]);
+ String::Utf8Value new_path(args[1]);
if (args[2]->IsFunction()) {
ASYNC_DEST_CALL(rename, args[2], *new_path, *old_path, *new_path)
@@ -599,7 +598,7 @@ static Handle<Value> Unlink(const Arguments& args) {
if (args.Length() < 1) return TYPE_ERROR("path required");
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
- node::Utf8Value path(args[0]);
+ String::Utf8Value path(args[0]);
if (args[1]->IsFunction()) {
ASYNC_CALL(unlink, args[1], *path)
@@ -615,7 +614,7 @@ static Handle<Value> RMDir(const Arguments& args) {
if (args.Length() < 1) return TYPE_ERROR("path required");
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
- node::Utf8Value path(args[0]);
+ String::Utf8Value path(args[0]);
if (args[1]->IsFunction()) {
ASYNC_CALL(rmdir, args[1], *path)
@@ -632,7 +631,7 @@ static Handle<Value> MKDir(const Arguments& args) {
return THROW_BAD_ARGS;
}
- node::Utf8Value path(args[0]);
+ String::Utf8Value path(args[0]);
int mode = static_cast<int>(args[1]->Int32Value());
if (args[2]->IsFunction()) {
@@ -649,7 +648,7 @@ static Handle<Value> ReadDir(const Arguments& args) {
if (args.Length() < 1) return TYPE_ERROR("path required");
if (!args[0]->IsString()) return TYPE_ERROR("path must be a string");
- node::Utf8Value path(args[0]);
+ String::Utf8Value path(args[0]);
if (args[1]->IsFunction()) {
ASYNC_CALL(readdir, args[1], *path, 0 /*flags*/)
@@ -687,7 +686,7 @@ static Handle<Value> Open(const Arguments& args) {
if (!args[1]->IsInt32()) return TYPE_ERROR("flags must be an int");
if (!args[2]->IsInt32()) return TYPE_ERROR("mode must be an int");
- node::Utf8Value path(args[0]);
+ String::Utf8Value path(args[0]);
int flags = args[1]->Int32Value();
int mode = static_cast<int>(args[2]->Int32Value());
@@ -827,7 +826,7 @@ static Handle<Value> Chmod(const Arguments& args) {
if(args.Length() < 2 || !args[0]->IsString() || !args[1]->IsInt32()) {
return THROW_BAD_ARGS;
}
- node::Utf8Value path(args[0]);
+ String::Utf8Value path(args[0]);
int mode = static_cast<int>(args[1]->Int32Value());
if(args[2]->IsFunction()) {
@@ -874,7 +873,7 @@ static Handle<Value> Chown(const Arguments& args) {
if (!args[1]->IsUint32()) return TYPE_ERROR("uid must be an unsigned int");
if (!args[2]->IsUint32()) return TYPE_ERROR("gid must be an unsigned int");
- node::Utf8Value path(args[0]);
+ String::Utf8Value path(args[0]);
uv_uid_t uid = static_cast<uv_uid_t>(args[1]->Uint32Value());
uv_gid_t gid = static_cast<uv_gid_t>(args[2]->Uint32Value());
@@ -925,7 +924,7 @@ static Handle<Value> UTimes(const Arguments& args) {
if (!args[1]->IsNumber()) return TYPE_ERROR("atime must be a number");
if (!args[2]->IsNumber()) return TYPE_ERROR("mtime must be a number");
- const node::Utf8Value path(args[0]);
+ const String::Utf8Value path(args[0]);
const double atime = static_cast<double>(args[1]->NumberValue());
const double mtime = static_cast<double>(args[2]->NumberValue());
diff --git a/src/node_stat_watcher.cc b/src/node_stat_watcher.cc
index fd3e5d1..c3f668c 100644
--- a/src/node_stat_watcher.cc
+++ b/src/node_stat_watcher.cc
@@ -105,7 +104,7 @@ Handle<Value> StatWatcher::Start(const Arguments& args) {
HandleScope scope;
StatWatcher* wrap = ObjectWrap::Unwrap<StatWatcher>(args.Holder());
- node::Utf8Value path(args[0]);
+ String::Utf8Value path(args[0]);
const bool persistent = args[1]->BooleanValue();
const uint32_t interval = args[2]->Uint32Value();
diff --git a/src/process_wrap.cc b/src/process_wrap.cc
index ac63e4b..784300f 100644
--- a/src/process_wrap.cc
+++ b/src/process_wrap.cc
@@ -188,7 +187,7 @@ class ProcessWrap : public HandleWrap {
// options.file
Local<Value> file_v = js_options->Get(String::NewSymbol("file"));
- node::Utf8Value file(file_v->IsString() ? file_v : Local<Value>());
+ String::Utf8Value file(file_v->IsString() ? file_v : Local<Value>());
if (file.length() > 0) {
options.file = *file;
} else {
@@ -203,7 +202,7 @@ class ProcessWrap : public HandleWrap {
// Heap allocate to detect errors. +1 is for NULL.
options.args = new char*[argc + 1];
for (int i = 0; i < argc; i++) {
- node::Utf8Value arg(js_argv->Get(i));
+ String::Utf8Value arg(js_argv->Get(i));
options.args[i] = strdup(*arg);
}
options.args[argc] = NULL;
@@ -211,7 +210,7 @@ class ProcessWrap : public HandleWrap {
// options.cwd
Local<Value> cwd_v = js_options->Get(String::NewSymbol("cwd"));
- node::Utf8Value cwd(cwd_v->IsString() ? cwd_v : Local<Value>());
+ String::Utf8Value cwd(cwd_v->IsString() ? cwd_v : Local<Value>());
if (cwd.length() > 0) {
options.cwd = *cwd;
}
@@ -223,7 +222,7 @@ class ProcessWrap : public HandleWrap {
int envc = env->Length();
options.env = new char*[envc + 1]; // Heap allocated to detect errors.
for (int i = 0; i < envc; i++) {
- node::Utf8Value pair(env->Get(i));
+ String::Utf8Value pair(env->Get(i));
options.env[i] = strdup(*pair);
}
options.env[envc] = NULL;
diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc
index 31a4e78..b33f4e8 100644
--- a/src/udp_wrap.cc
+++ b/src/udp_wrap.cc
@@ -161,7 +160,7 @@ Handle<Value> UDPWrap::DoBind(const Arguments& args, int family) {
// bind(ip, port, flags)
assert(args.Length() == 3);
- node::Utf8Value address(args[0]);
+ String::Utf8Value address(args[0]);
const int port = args[1]->Uint32Value();
const int flags = args[2]->Uint32Value();
@@ -220,8 +219,8 @@ Handle<Value> UDPWrap::SetMembership(const Arguments& args,
assert(args.Length() == 2);
- node::Utf8Value address(args[0]);
- node::Utf8Value iface(args[1]);
+ String::Utf8Value address(args[0]);
+ String::Utf8Value iface(args[1]);
const char* iface_cstr = *iface;
if (args[1]->IsUndefined() || args[1]->IsNull()) {
@@ -272,7 +271,7 @@ Handle<Value> UDPWrap::DoSend(const Arguments& args, int family) {
length);
const unsigned short port = args[3]->Uint32Value();
- node::Utf8Value address(args[4]);
+ String::Utf8Value address(args[4]);
switch (family) {
case AF_INET:
diff --git a/src/util.h b/src/util.h
--- a/src/util.h
+++ b/src/util.h
@@ -41,52 +41,6 @@
obj->Set(domain_symbol, domain);
}
-class Utf8Value {
- public:
- explicit Utf8Value(v8::Handle<v8::Value> value)
- : length_(0), str_(NULL) {
- if (value.IsEmpty())
- return;
-
- v8::Local<v8::String> val_ = value->ToString();
-
- // Allocate enough space to include the null terminator
- size_t len = StringBytes::StorageSize(val_, UTF8) + 1;
-
- char* str = static_cast<char*>(calloc(1, len));
-
- int flags = WRITE_UTF8_FLAGS;
- flags |= ~v8::String::NO_NULL_TERMINATION;
-
- length_ = val_->WriteUtf8(str,
- len,
- 0,
- flags);
-
- str_ = reinterpret_cast<char*>(str);
- }
-
- ~Utf8Value() {
- free(str_);
- }
-
- char* operator*() {
- return str_;
- };
-
- const char* operator*() const {
- return str_;
- };
-
- size_t length() const {
- return length_;
- };
-
- private:
- size_t length_;
- char* str_;
-};
-
} // namespace node
#endif // SRC_UTIL_H_
--
1.9.3

View File

@ -1,91 +0,0 @@
From c7c934c66cd8712c9ff169f1ef4c5670d3ff99c8 Mon Sep 17 00:00:00 2001
From: "T.C. Hollingsworth" <tchollingsworth@gmail.com>
Date: Wed, 18 Jun 2014 23:09:03 -0700
Subject: [PATCH] Revert "string_bytes: Guarantee valid utf-8 output"
This reverts commit 0da4c671659cfbae12def127b2e94690b9d9b5e1.
---
src/node.cc | 7 -------
src/string_bytes.cc | 2 +-
src/string_bytes.h | 2 --
test/simple/test-buffer.js | 12 ------------
4 files changed, 1 insertion(+), 22 deletions(-)
diff --git a/src/node.cc b/src/node.cc
index 4223973..e9696cd 100644
--- a/src/node.cc
+++ b/src/node.cc
@@ -180,9 +180,6 @@ static uv_async_t dispatch_debug_messages_async;
// Declared in node_internals.h
Isolate* node_isolate = NULL;
-int WRITE_UTF8_FLAGS = v8::String::HINT_MANY_WRITES_EXPECTED |
- v8::String::NO_NULL_TERMINATION;
-
static void Spin(uv_idle_t* handle, int status) {
assert((uv_idle_t*) handle == &tick_spinner);
assert(status == 0);
@@ -3077,11 +3074,6 @@ static char **copy_argv(int argc, char **argv) {
int Start(int argc, char *argv[]) {
- const char* replaceInvalid = getenv("NODE_INVALID_UTF8");
-
- if (replaceInvalid == NULL)
- WRITE_UTF8_FLAGS |= String::REPLACE_INVALID_UTF8;
-
// Hack aroung with the argv pointer. Used for process.title = "blah".
argv = uv_setup_args(argc, argv);
diff --git a/src/string_bytes.cc b/src/string_bytes.cc
index a7bab38..e4a34fe 100644
--- a/src/string_bytes.cc
+++ b/src/string_bytes.cc
@@ -199,7 +199,7 @@ size_t StringBytes::Write(char* buf,
break;
case UTF8:
- len = str->WriteUtf8(buf, buflen, chars_written, WRITE_UTF8_FLAGS);
+ len = str->WriteUtf8(buf, buflen, chars_written, flags);
break;
case UCS2:
diff --git a/src/string_bytes.h b/src/string_bytes.h
index 31f04bb..8071a49 100644
--- a/src/string_bytes.h
+++ b/src/string_bytes.h
@@ -29,8 +29,6 @@
namespace node {
-extern int WRITE_UTF8_FLAGS;
-
using v8::Handle;
using v8::Local;
using v8::String;
diff --git a/test/simple/test-buffer.js b/test/simple/test-buffer.js
index f8b2798..3026824 100644
--- a/test/simple/test-buffer.js
+++ b/test/simple/test-buffer.js
@@ -791,18 +791,6 @@ assert.equal(buf[3], 0xFF);
assert.equal(buf[3], 0xFF);
});
-// test unmatched surrogates not producing invalid utf8 output
-// ef bf bd = utf-8 representation of unicode replacement character
-// see https://codereview.chromium.org/121173009/
-buf = new Buffer('ab\ud800cd', 'utf8');
-assert.equal(buf[0], 0x61);
-assert.equal(buf[1], 0x62);
-assert.equal(buf[2], 0xef);
-assert.equal(buf[3], 0xbf);
-assert.equal(buf[4], 0xbd);
-assert.equal(buf[5], 0x63);
-assert.equal(buf[6], 0x64);
-
// test for buffer overrun
buf = new Buffer([0, 0, 0, 0, 0]); // length: 5
var sub = buf.slice(0, 4); // length: 4
--
1.9.3

View File

@ -1,5 +1,40 @@
%global with_debug 1
# We don't have pkgdocdir on EPEL6 (yet?)
%global _pkgdocdir %{_docdir}/%{name}-%{version}
# ARM builds currently break on the Debug builds, so we'll just
# build the standard runtime until that gets sorted out.
%ifarch %{arm} aarch64 %{power64}
%global with_debug 0
%endif
# == Node.js Version ==
%global nodejs_major 0
%global nodejs_minor 10
%global nodejs_patch 42
%global nodejs_abi %{nodejs_major}.%{nodejs_minor}
# == Bundled Dependency Versions ==
# v8 - from deps/v8/src/version.cc
%global v8_major 3
%global v8_minor 14
%global v8_build 5
%global v8_patch 9
# V8 presently breaks ABI at least every x.y release while never bumping SONAME
%global v8_abi %{v8_major}.%{v8_minor}
# c-ares - from deps/cares/include/ares_version.h
%global c_ares_major 1
%global c_ares_minor 9
%global c_ares_patch 0
# http-parser - from deps/http-parser/http_parser.h
%global http_parser_major 1
%global http_parser_minor 1
Name: nodejs Name: nodejs
Version: 0.10.36 Version: %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch}
Release: 3%{?dist} Release: 3%{?dist}
Summary: JavaScript runtime Summary: JavaScript runtime
License: MIT and ASL 2.0 and ISC and BSD License: MIT and ASL 2.0 and ISC and BSD
@ -7,7 +42,7 @@ Group: Development/Languages
URL: http://nodejs.org/ URL: http://nodejs.org/
# Exclusive archs must match v8 # Exclusive archs must match v8
ExclusiveArch: %{ix86} x86_64 %{arm} ExclusiveArch: %{nodejs_arches}
# nodejs bundles openssl, but we use the system version in Fedora # nodejs bundles openssl, but we use the system version in Fedora
# because openssl contains prohibited code, we remove openssl completely from # because openssl contains prohibited code, we remove openssl completely from
@ -28,30 +63,12 @@ Patch1: nodejs-disable-gyp-deps.patch
# http://patch-tracker.debian.org/patch/series/view/nodejs/0.10.26~dfsg1-1/2014_donotinclude_root_certs.patch # http://patch-tracker.debian.org/patch/series/view/nodejs/0.10.26~dfsg1-1/2014_donotinclude_root_certs.patch
Patch2: nodejs-use-system-certs.patch Patch2: nodejs-use-system-certs.patch
# The invalid UTF8 fix has been reverted since this breaks v8 API, which cannot BuildRequires: python-devel
# be done in a stable distribution release. This build of nodejs will behave as
# if NODE_INVALID_UTF8 was set. For more information on the implications, see:
# http://blog.nodejs.org/2014/06/16/openssl-and-breaking-utf-8-change/
Patch3: nodejs-revert-utf8-v8.patch
Patch4: nodejs-revert-utf8-node.patch
# V8 presently breaks ABI at least every x.y release while never bumping SONAME,
# so we need to be more explicit until spot fixes that
%global v8_ge 1:3.14.5.10-17
%global v8_lt 1:3.15
%global v8_abi 3.14
BuildRequires: v8-devel >= %{v8_ge}
BuildRequires: http-parser-devel >= 2.0
BuildRequires: libuv-devel BuildRequires: libuv-devel
BuildRequires: c-ares-devel
BuildRequires: zlib-devel BuildRequires: zlib-devel
# Node.js requires some features from openssl 1.0.1 for SPDY support # Node.js requires some features from openssl 1.0.1 for SPDY support
BuildRequires: openssl-devel >= 1:1.0.1 BuildRequires: openssl-devel >= 1:1.0.1
Requires: v8%{?_isa} >= %{v8_ge}
Requires: v8%{?_isa} < %{v8_lt}
# we need the system certificate store when Patch2 is applied # we need the system certificate store when Patch2 is applied
Requires: ca-certificates Requires: ca-certificates
@ -78,6 +95,19 @@ Conflicts: node <= 0.3.2-11
Provides: nodejs-punycode = 1.3.1 Provides: nodejs-punycode = 1.3.1
Provides: npm(punycode) = 1.3.1 Provides: npm(punycode) = 1.3.1
# Node.js has forked c-ares from upstream in an incompatible way, so we need
# to carry the bundled version internally.
# See https://github.com/nodejs/node/commit/766d063e0578c0f7758c3a965c971763f43fec85
# Keep this in sync with deps/cares/include/ares_version.h
Provides: bundled(c-ares) = 1.9.0
# Node.js is closely tied to the version of v8 that is used with it. It makes
# sense to use the bundled version because upstream consistently breaks ABI
# even in point releases. Node.js upstream has now removed the ability to build
# against a shared system version entirely.
# See https://github.com/nodejs/node/commit/d726a177ed59c37cf5306983ed00ecd858cfbbef
Provides: bundled(v8) = %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch}
%description %description
Node.js is a platform built on Chrome's JavaScript runtime Node.js is a platform built on Chrome's JavaScript runtime
@ -90,8 +120,8 @@ real-time applications that run across distributed devices.
Summary: JavaScript runtime - development headers Summary: JavaScript runtime - development headers
Group: Development/Languages Group: Development/Languages
Requires: %{name}%{?_isa} == %{version}-%{release} Requires: %{name}%{?_isa} == %{version}-%{release}
Requires: libuv-devel%{?_isa} http-parser-devel%{?_isa} v8-devel%{?_isa} Requires: libuv-devel%{?_isa} v8-devel%{?_isa}
Requires: openssl-devel%{?_isa} c-ares-devel%{?_isa} zlib-devel%{?_isa} Requires: openssl-devel%{?_isa} zlib-devel%{?_isa}
Requires: nodejs-packaging Requires: nodejs-packaging
%description devel %description devel
@ -111,33 +141,33 @@ The API documentation for the Node.js JavaScript runtime.
# remove bundled dependencies # remove bundled dependencies
%patch1 -p1 %patch1 -p1
rm -rf deps rm -rf deps/npm \
deps/uv \
deps/zlib
# remove bundled CA certificates # remove bundled CA certificates
%patch2 -p1 %patch2 -p1
rm -f src/node_root_certs.h rm -f src/node_root_certs.h
%patch3 -p1
%patch4 -p1
%build %build
# build with debugging symbols and add defines from libuv (#892601) # build with debugging symbols and add defines from libuv (#892601)
export CFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' export CFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-delete-null-pointer-checks'
export CXXFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' export CXXFLAGS='%{optflags} -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-delete-null-pointer-checks'
./configure --prefix=%{_prefix} \ ./configure --prefix=%{_prefix} \
--shared-v8 \
--shared-openssl \ --shared-openssl \
--shared-zlib \ --shared-zlib \
--shared-cares \
--shared-libuv \ --shared-libuv \
--shared-http-parser \
--without-npm \ --without-npm \
--without-dtrace --without-dtrace
%if %{?with_debug} == 1
# Setting BUILDTYPE=Debug builds both release and debug binaries # Setting BUILDTYPE=Debug builds both release and debug binaries
make BUILDTYPE=Debug %{?_smp_mflags} make BUILDTYPE=Debug %{?_smp_mflags}
%else
make BUILDTYPE=Release %{?_smp_mflags}
%endif
%install %install
rm -rf %{buildroot} rm -rf %{buildroot}
@ -150,8 +180,10 @@ rm -rf %{buildroot}/%{_prefix}/lib/dtrace
# Set the binary permissions properly # Set the binary permissions properly
chmod 0755 %{buildroot}/%{_bindir}/node chmod 0755 %{buildroot}/%{_bindir}/node
%if %{?with_debug} == 1
# Install the debug binary and set its permissions # Install the debug binary and set its permissions
install -Dpm0755 out/Debug/node %{buildroot}/%{_bindir}/node_g install -Dpm0755 out/Debug/node %{buildroot}/%{_bindir}/node_g
%endif
# own the sitelib directory # own the sitelib directory
mkdir -p %{buildroot}%{_prefix}/lib/node_modules mkdir -p %{buildroot}%{_prefix}/lib/node_modules
@ -167,36 +199,68 @@ EOF
chmod 0755 %{buildroot}%{_rpmconfigdir}/nodejs_native.req chmod 0755 %{buildroot}%{_rpmconfigdir}/nodejs_native.req
#install documentation #install documentation
mkdir -p %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/html mkdir -p %{buildroot}%{_pkgdocdir}/html
cp -pr doc/* %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/html cp -pr doc/* %{buildroot}%{_pkgdocdir}/html
rm -f %{_defaultdocdir}/%{name}-docs-%{version}/html/nodejs.1 rm -f %{buildroot}%{_pkgdocdir}/html/nodejs.1
cp -p LICENSE %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/ cp -p LICENSE %{buildroot}%{_pkgdocdir}/html
cp -p ChangeLog LICENSE README.md AUTHORS %{buildroot}%{_pkgdocdir}
#node-gyp needs common.gypi too #node-gyp needs common.gypi too
mkdir -p %{buildroot}%{_datadir}/node mkdir -p %{buildroot}%{_datadir}/node
cp -p common.gypi %{buildroot}%{_datadir}/node cp -p common.gypi %{buildroot}%{_datadir}/node
%files %files
%doc ChangeLog LICENSE README.md AUTHORS
%{_bindir}/node %{_bindir}/node
%{_mandir}/man1/node.* %{_mandir}/man1/node.*
%dir %{_prefix}/lib/node_modules %dir %{_prefix}/lib/node_modules
%dir %{_datadir}/node %dir %{_datadir}/node
%{_rpmconfigdir}/fileattrs/nodejs_native.attr %{_rpmconfigdir}/fileattrs/nodejs_native.attr
%{_rpmconfigdir}/nodejs_native.req %{_rpmconfigdir}/nodejs_native.req
%dir %{_pkgdocdir}
%{_pkgdocdir}/ChangeLog
%{_pkgdocdir}/LICENSE
%{_pkgdocdir}/README.md
%{_pkgdocdir}/AUTHORS
%files devel %files devel
%if %{?with_debug} == 1
%{_bindir}/node_g %{_bindir}/node_g
%endif
%{_includedir}/node %{_includedir}/node
%{_datadir}/node/common.gypi %{_datadir}/node/common.gypi
%files docs %files docs
%{_defaultdocdir}/%{name}-docs-%{version} %dir %{_pkgdocdir}
%{_pkgdocdir}/html
%changelog %changelog
* Wed Feb 10 2016 Stephen Gallagher <sgallagh@redhat.com> - 0.10.42-3
- Remove duplicated content from spec file
* Wed Feb 10 2016 Stephen Gallagher <sgallagh@redhat.com> - 0.10.42-2
- Re-enable debug builds on supported arches
* Wed Feb 10 2016 Stephen Gallagher <sgallagh@redhat.com> - 0.10.42-1
- Update to Node.js 0.10.42
- https://github.com/nodejs/node/blob/v0.10.42/ChangeLog
- Bundle v8, c-ares and http-parser with Node.js
- Drop patches that revert v8 UTF8 change
- Resolves: RHBZ#1306203
- Resolves: RHBZ#1306200
- Resolves: RHBZ#1306207
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.10.36-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Wed Apr 29 2015 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.36-4
- fix incorrect Requires on libuv (RHBZ#1215719)
* Tue Feb 24 2015 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.36-3 * Tue Feb 24 2015 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.36-3
- bump v8 requires (RHBZ#1195457) - bump v8 requires (RHBZ#1195457)
* Thu Feb 19 2015 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.36-2
- build against compat-libuv010
* Thu Feb 19 2015 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.36-1 * Thu Feb 19 2015 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.36-1
- new upstream release 0.10.36 - new upstream release 0.10.36
http://blog.nodejs.org/2015/01/26/node-v0-10-36-stable/ http://blog.nodejs.org/2015/01/26/node-v0-10-36-stable/
@ -220,6 +284,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
http://blog.nodejs.org/2014/08/19/node-v0-10-31-stable/ http://blog.nodejs.org/2014/08/19/node-v0-10-31-stable/
http://blog.nodejs.org/2014/09/16/node-v0-10-32-stable/ http://blog.nodejs.org/2014/09/16/node-v0-10-32-stable/
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.10.30-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Fri Aug 01 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.30-1 * Fri Aug 01 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.30-1
- new upstream release 0.10.30 - new upstream release 0.10.30
http://blog.nodejs.org/2014/07/31/node-v0-10-30-stable/ http://blog.nodejs.org/2014/07/31/node-v0-10-30-stable/
@ -232,6 +299,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
if NODE_INVALID_UTF8 was set. For more information on the implications, see: if NODE_INVALID_UTF8 was set. For more information on the implications, see:
http://blog.nodejs.org/2014/06/16/openssl-and-breaking-utf-8-change/ http://blog.nodejs.org/2014/06/16/openssl-and-breaking-utf-8-change/
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.10.28-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Sat May 03 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.28-2 * Sat May 03 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.28-2
- use the system certificate store instead of the bundled copy - use the system certificate store instead of the bundled copy
both are based on the Mozilla CA list, so the only effect this should have is both are based on the Mozilla CA list, so the only effect this should have is
@ -250,6 +320,9 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
- new upstream release 0.10.26 - new upstream release 0.10.26
http://blog.nodejs.org/2014/02/18/node-v0-10-26-stable/ http://blog.nodejs.org/2014/02/18/node-v0-10-26-stable/
* Fri Feb 14 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.25-2
- rebuild for icu-53 (via v8)
* Mon Jan 27 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.25-1 * Mon Jan 27 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.25-1
- new upstream release 0.10.25 - new upstream release 0.10.25
http://blog.nodejs.org/2014/01/23/node-v0-10-25-stable/ http://blog.nodejs.org/2014/01/23/node-v0-10-25-stable/
@ -287,6 +360,7 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
* Tue Aug 27 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.17-1 * Tue Aug 27 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.17-1
- new upstream release 0.10.17 - new upstream release 0.10.17
http://blog.nodejs.org/2013/08/21/node-v0-10-17-stable/ http://blog.nodejs.org/2013/08/21/node-v0-10-17-stable/
- fix duplicated/conflicting documentation files (RHBZ#1001253)
* Sat Aug 17 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.16-1 * Sat Aug 17 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.16-1
- new upstream release 0.10.16 - new upstream release 0.10.16
@ -297,6 +371,11 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
* Wed Aug 14 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.14-3 * Wed Aug 14 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.14-3
- fix typo in _isa macro in v8 Requires - fix typo in _isa macro in v8 Requires
* Mon Aug 05 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.14-2
- use unversioned docdir for -docs subpackage
https://fedoraproject.org/wiki/Changes/UnversionedDocdirs
- use main package's docdir instead of a seperate -docs directory
* Thu Jul 25 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.14-1 * Thu Jul 25 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.14-1
- new upstream release 0.10.14 - new upstream release 0.10.14
http://blog.nodejs.org/2013/07/25/node-v0-10-14-stable/ http://blog.nodejs.org/2013/07/25/node-v0-10-14-stable/

View File

@ -1 +1 @@
f1a50d8a1f6e09659b5c2aad00867ae2 node-v0.10.36-stripped.tar.gz 797349ff0cb1c9316d1800acf3d1394f node-v0.10.42-stripped.tar.gz