From d7e018f470e812b867eac2f0be54a9723d7872ff Mon Sep 17 00:00:00 2001 From: webbuilder_pel7x64builder0 Date: Tue, 16 Apr 2019 19:04:42 +0200 Subject: [PATCH] update additional sources Signed-off-by: webbuilder_pel7x64builder0 --- ...1-Disable-running-gyp-on-shared-deps.patch | 33 +++++ ...ess-NPM-message-to-run-global-update.patch | 86 +++++++++++++ .../0003-deps-V8-cherry-pick-d0468de.patch | 117 ++++++++++++++++++ SOURCES/http-parser-gyp-sharedlib.patch | 40 ++++++ SOURCES/http-parser-status.patch | 98 +++++++++++++++ 5 files changed, 374 insertions(+) create mode 100644 SOURCES/0001-Disable-running-gyp-on-shared-deps.patch create mode 100644 SOURCES/0002-Suppress-NPM-message-to-run-global-update.patch create mode 100644 SOURCES/0003-deps-V8-cherry-pick-d0468de.patch create mode 100644 SOURCES/http-parser-gyp-sharedlib.patch create mode 100644 SOURCES/http-parser-status.patch diff --git a/SOURCES/0001-Disable-running-gyp-on-shared-deps.patch b/SOURCES/0001-Disable-running-gyp-on-shared-deps.patch new file mode 100644 index 0000000..a9934a5 --- /dev/null +++ b/SOURCES/0001-Disable-running-gyp-on-shared-deps.patch @@ -0,0 +1,33 @@ +From 443fef828092b315a207a194f5fe74e52e451996 Mon Sep 17 00:00:00 2001 +From: Zuzana Svetlikova +Date: Thu, 27 Apr 2017 14:25:42 +0200 +Subject: [PATCH 1/3] Disable running gyp on shared deps + +--- + Makefile | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index 3a343301d640bc7fd41e9680c74455bb260a950d..d2b9c13ee3e53d957ed32476e40fb09e41fcfded 100644 +--- a/Makefile ++++ b/Makefile +@@ -121,14 +121,13 @@ with-code-cache: + + .PHONY: test-code-cache + test-code-cache: with-code-cache + $(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) code-cache + +-out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp \ +- deps/zlib/zlib.gyp deps/v8/gypfiles/toolchain.gypi \ +- deps/v8/gypfiles/features.gypi deps/v8/gypfiles/v8.gyp node.gyp \ +- config.gypi ++out/Makefile: common.gypi deps/http_parser/http_parser.gyp \ ++ deps/v8/gypfiles/toolchain.gypi deps/v8/gypfiles/features.gypi \ ++ deps/v8/gypfiles/v8.gyp node.gyp config.gypi + $(PYTHON) tools/gyp_node.py -f make + + config.gypi: configure configure.py + @if [ -x config.status ]; then \ + ./config.status; \ +-- +2.20.1 diff --git a/SOURCES/0002-Suppress-NPM-message-to-run-global-update.patch b/SOURCES/0002-Suppress-NPM-message-to-run-global-update.patch new file mode 100644 index 0000000..684e383 --- /dev/null +++ b/SOURCES/0002-Suppress-NPM-message-to-run-global-update.patch @@ -0,0 +1,86 @@ +From 0fd4649d1943f45cb06bda6febdc7ffa7d5859b2 Mon Sep 17 00:00:00 2001 +From: Stephen Gallagher +Date: Tue, 1 May 2018 08:05:30 -0400 +Subject: [PATCH 2/3] Suppress NPM message to run global update + +Signed-off-by: Stephen Gallagher +--- + deps/npm/bin/npm-cli.js | 54 ----------------------------------------- + 1 file changed, 54 deletions(-) + +diff --git a/deps/npm/bin/npm-cli.js b/deps/npm/bin/npm-cli.js +index 6f76b23828531e7af98a7e3cd7d5abfaac09b40c..98edb6f45fe073e03794a2ae6e7aa7f5500723ee 100755 +--- a/deps/npm/bin/npm-cli.js ++++ b/deps/npm/bin/npm-cli.js +@@ -67,69 +67,15 @@ + if (conf.usage && npm.command !== 'help') { + npm.argv.unshift(npm.command) + npm.command = 'help' + } + +- var isGlobalNpmUpdate = conf.global && ['install', 'update'].includes(npm.command) && npm.argv.includes('npm') +- + // now actually fire up npm and run the command. + // this is how to use npm programmatically: + conf._exit = true + npm.load(conf, function (er) { + if (er) return errorHandler(er) +- if ( +- !isGlobalNpmUpdate && +- npm.config.get('update-notifier') && +- !unsupported.checkVersion(process.version).unsupported +- ) { +- const pkg = require('../package.json') +- let notifier = require('update-notifier')({pkg}) +- const isCI = require('ci-info').isCI +- if ( +- notifier.update && +- notifier.update.latest !== pkg.version && +- !isCI +- ) { +- const color = require('ansicolors') +- const useColor = npm.config.get('color') +- const useUnicode = npm.config.get('unicode') +- const old = notifier.update.current +- const latest = notifier.update.latest +- let type = notifier.update.type +- if (useColor) { +- switch (type) { +- case 'major': +- type = color.red(type) +- break +- case 'minor': +- type = color.yellow(type) +- break +- case 'patch': +- type = color.green(type) +- break +- } +- } +- const changelog = `https://github.com/npm/cli/releases/tag/v${latest}` +- notifier.notify({ +- message: `New ${type} version of ${pkg.name} available! ${ +- useColor ? color.red(old) : old +- } ${useUnicode ? '→' : '->'} ${ +- useColor ? color.green(latest) : latest +- }\n` + +- `${ +- useColor ? color.yellow('Changelog:') : 'Changelog:' +- } ${ +- useColor ? color.cyan(changelog) : changelog +- }\n` + +- `Run ${ +- useColor +- ? color.green(`npm install -g ${pkg.name}`) +- : `npm i -g ${pkg.name}` +- } to update!` +- }) +- } +- } + npm.commands[npm.command](npm.argv, function (err) { + // https://genius.com/Lin-manuel-miranda-your-obedient-servant-lyrics + if ( + !err && + npm.config.get('ham-it-up') && +-- +2.20.1 diff --git a/SOURCES/0003-deps-V8-cherry-pick-d0468de.patch b/SOURCES/0003-deps-V8-cherry-pick-d0468de.patch new file mode 100644 index 0000000..5186b56 --- /dev/null +++ b/SOURCES/0003-deps-V8-cherry-pick-d0468de.patch @@ -0,0 +1,117 @@ +From 7108faf1bbcd1e542cd4c34bb57e76432da754f4 Mon Sep 17 00:00:00 2001 +From: Milad Farazmand +Date: Wed, 30 Jan 2019 19:08:06 +0000 +Subject: [PATCH 3/3] deps: V8: cherry-pick d0468de + +Original commit message: + + [heap] Fix StoreBuffer setup. + + - Solves a problem for PPC in a configuration where commit page size + is 64K. https://chromium-review.googlesource.com/c/v8/v8/+/1149515 + - Uses existing VM allocation code to get properly aligned memory. + - Makes sure the size for SetPermissions is a multiple of system page + size. + + Bug:chromium:756050 + + Change-Id: Ib3799ab7a3bb44b0091c234234c1cc47938379c2 + Reviewed-on: https://chromium-review.googlesource.com/1161210 + Commit-Queue: Bill Budge + Reviewed-by: Michael Lippautz + Reviewed-by: Michael Starzinger + Cr-Commit-Position: refs/heads/master@{#54930} + +Refs: https://github.com/v8/v8/commit/d0468dede05fcd57b5a96d0fbfa117a76795fa58 +--- + common.gypi | 2 +- + deps/v8/src/heap/store-buffer.cc | 28 +++++++++++++++++----------- + 2 files changed, 18 insertions(+), 12 deletions(-) + +diff --git a/common.gypi b/common.gypi +index 0a4ed881a5b92514d3df88ffc74555931eb71b7c..1405183bf61dfbab8c8b18a6233a08a7a1ad62ec 100644 +--- a/common.gypi ++++ b/common.gypi +@@ -31,11 +31,11 @@ + # Default to -O0 for debug builds. + 'v8_optimized_debug%': 0, + + # Reset this number to 0 on major V8 upgrades. + # Increment by one for each non-official patch applied to deps/v8. +- 'v8_embedder_string': '-node.12', ++ 'v8_embedder_string': '-node.13', + + # Enable disassembler for `--print-code` v8 options + 'v8_enable_disassembler': 1, + + # Don't bake anything extra into the snapshot. +diff --git a/deps/v8/src/heap/store-buffer.cc b/deps/v8/src/heap/store-buffer.cc +index d73e3235c158df27756eb719643f81822d2bd015..657aa9212a6153f3bd1c44e519a3c8c7064c62b4 100644 +--- a/deps/v8/src/heap/store-buffer.cc ++++ b/deps/v8/src/heap/store-buffer.cc +@@ -28,46 +28,52 @@ StoreBuffer::StoreBuffer(Heap* heap) + insertion_callback = &InsertDuringRuntime; + deletion_callback = &DeleteDuringRuntime; + } + + void StoreBuffer::SetUp() { +- // Allocate 3x the buffer size, so that we can start the new store buffer +- // aligned to 2x the size. This lets us use a bit test to detect the end of +- // the area. ++ const size_t requested_size = kStoreBufferSize * kStoreBuffers; ++ // Allocate buffer memory aligned at least to kStoreBufferSize. This lets us ++ // use a bit test to detect the ends of the buffers. ++ const size_t alignment = ++ std::max(kStoreBufferSize, AllocatePageSize()); ++ void* hint = AlignedAddress(heap_->GetRandomMmapAddr(), alignment); + VirtualMemory reservation; +- if (!AllocVirtualMemory(kStoreBufferSize * 3, heap_->GetRandomMmapAddr(), +- &reservation)) { ++ if (!AlignedAllocVirtualMemory(requested_size, alignment, hint, ++ &reservation)) { + heap_->FatalProcessOutOfMemory("StoreBuffer::SetUp"); + } ++ + Address start = reservation.address(); +- start_[0] = reinterpret_cast(::RoundUp(start, kStoreBufferSize)); ++ const size_t allocated_size = reservation.size(); ++ ++ start_[0] = reinterpret_cast(start); + limit_[0] = start_[0] + (kStoreBufferSize / kPointerSize); + start_[1] = limit_[0]; + limit_[1] = start_[1] + (kStoreBufferSize / kPointerSize); + +- Address* vm_limit = reinterpret_cast(start + reservation.size()); +- ++ // Sanity check the buffers. ++ Address* vm_limit = reinterpret_cast(start + allocated_size); + USE(vm_limit); + for (int i = 0; i < kStoreBuffers; i++) { + DCHECK(reinterpret_cast
(start_[i]) >= reservation.address()); + DCHECK(reinterpret_cast
(limit_[i]) >= reservation.address()); + DCHECK(start_[i] <= vm_limit); + DCHECK(limit_[i] <= vm_limit); + DCHECK_EQ(0, reinterpret_cast
(limit_[i]) & kStoreBufferMask); + } + +- if (!reservation.SetPermissions(reinterpret_cast
(start_[0]), +- kStoreBufferSize * kStoreBuffers, ++ // Set RW permissions only on the pages we use. ++ const size_t used_size = RoundUp(requested_size, CommitPageSize()); ++ if (!reservation.SetPermissions(start, used_size, + PageAllocator::kReadWrite)) { + heap_->FatalProcessOutOfMemory("StoreBuffer::SetUp"); + } + current_ = 0; + top_ = start_[current_]; + virtual_memory_.TakeControl(&reservation); + } + +- + void StoreBuffer::TearDown() { + if (virtual_memory_.IsReserved()) virtual_memory_.Free(); + top_ = nullptr; + for (int i = 0; i < kStoreBuffers; i++) { + start_[i] = nullptr; +-- +2.20.1 diff --git a/SOURCES/http-parser-gyp-sharedlib.patch b/SOURCES/http-parser-gyp-sharedlib.patch new file mode 100644 index 0000000..ec051ad --- /dev/null +++ b/SOURCES/http-parser-gyp-sharedlib.patch @@ -0,0 +1,40 @@ +--- http_parser.gyp~ 2012-11-27 15:40:11.721398004 -0700 ++++ http_parser.gyp 2012-11-27 15:40:11.721398004 -0700 +@@ -12,7 +12,7 @@ + # RuntimeLibrary MUST MATCH across the entire project + 'Debug': { + 'defines': [ 'DEBUG', '_DEBUG' ], +- 'cflags': [ '-Wall', '-Wextra', '-O0', '-g', '-ftrapv' ], ++ 'cflags': [ '-Wall', '-Wextra', '-g', '-ftrapv' ], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'RuntimeLibrary': 1, # static debug +@@ -21,7 +21,7 @@ + }, + 'Release': { + 'defines': [ 'NDEBUG' ], +- 'cflags': [ '-Wall', '-Wextra', '-O3' ], ++ 'cflags': [ '-Wall', '-Wextra' ], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'RuntimeLibrary': 0, # static release +@@ -50,7 +50,8 @@ + 'targets': [ + { + 'target_name': 'http_parser', +- 'type': 'static_library', ++ 'type': 'shared_library', ++ 'product_extension': 'so.2', + 'include_dirs': [ '.' ], + 'direct_dependent_settings': { + 'defines': [ 'HTTP_PARSER_STRICT=0' ], +@@ -73,7 +74,8 @@ + + { + 'target_name': 'http_parser_strict', +- 'type': 'static_library', ++ 'type': 'shared_library', ++ 'product_extension': 'so.2', + 'include_dirs': [ '.' ], + 'direct_dependent_settings': { + 'defines': [ 'HTTP_PARSER_STRICT=1' ], diff --git a/SOURCES/http-parser-status.patch b/SOURCES/http-parser-status.patch new file mode 100644 index 0000000..f9acc51 --- /dev/null +++ b/SOURCES/http-parser-status.patch @@ -0,0 +1,98 @@ +From 335850f6b868d3411968cbf5a4d59fe619dee36f Mon Sep 17 00:00:00 2001 +From: Nathaniel McCallum +Date: Thu, 6 Oct 2016 02:03:36 -0400 +Subject: [PATCH] parser: HTTP_STATUS_MAP(XX) and enum http_status + +This patch provides an enum for the standardized HTTP status codes. +Additionally, the HTTP_STATUS_MAP(XX) can be used for other purposes as +well, such as code-to-name lookups and code-based switch statements. + +PR-URL: https://github.com/nodejs/http-parser/pull/337 +Reviewed-By: Fedor Indutny +Reviewed-By: Brian White +Reviewed-By: Ben Noordhuis +--- + http_parser.h | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 70 insertions(+) + +diff --git a/http_parser.h b/http_parser.h +index ea26394..45c72a0 100644 +--- a/http_parser.h ++++ b/http_parser.h +@@ -90,6 +90,76 @@ typedef int (*http_data_cb) (http_parser*, const char *at, size_t length); + typedef int (*http_cb) (http_parser*); + + ++/* Status Codes */ ++#define HTTP_STATUS_MAP(XX) \ ++ XX(100, CONTINUE, Continue) \ ++ XX(101, SWITCHING_PROTOCOLS, Switching Protocols) \ ++ XX(102, PROCESSING, Processing) \ ++ XX(200, OK, OK) \ ++ XX(201, CREATED, Created) \ ++ XX(202, ACCEPTED, Accepted) \ ++ XX(203, NON_AUTHORITATIVE_INFORMATION, Non-Authoritative Information) \ ++ XX(204, NO_CONTENT, No Content) \ ++ XX(205, RESET_CONTENT, Reset Content) \ ++ XX(206, PARTIAL_CONTENT, Partial Content) \ ++ XX(207, MULTI_STATUS, Multi-Status) \ ++ XX(208, ALREADY_REPORTED, Already Reported) \ ++ XX(226, IM_USED, IM Used) \ ++ XX(300, MULTIPLE_CHOICES, Multiple Choices) \ ++ XX(301, MOVED_PERMANENTLY, Moved Permanently) \ ++ XX(302, FOUND, Found) \ ++ XX(303, SEE_OTHER, See Other) \ ++ XX(304, NOT_MODIFIED, Not Modified) \ ++ XX(305, USE_PROXY, Use Proxy) \ ++ XX(307, TEMPORARY_REDIRECT, Temporary Redirect) \ ++ XX(308, PERMANENT_REDIRECT, Permanent Redirect) \ ++ XX(400, BAD_REQUEST, Bad Request) \ ++ XX(401, UNAUTHORIZED, Unauthorized) \ ++ XX(402, PAYMENT_REQUIRED, Payment Required) \ ++ XX(403, FORBIDDEN, Forbidden) \ ++ XX(404, NOT_FOUND, Not Found) \ ++ XX(405, METHOD_NOT_ALLOWED, Method Not Allowed) \ ++ XX(406, NOT_ACCEPTABLE, Not Acceptable) \ ++ XX(407, PROXY_AUTHENTICATION_REQUIRED, Proxy Authentication Required) \ ++ XX(408, REQUEST_TIMEOUT, Request Timeout) \ ++ XX(409, CONFLICT, Conflict) \ ++ XX(410, GONE, Gone) \ ++ XX(411, LENGTH_REQUIRED, Length Required) \ ++ XX(412, PRECONDITION_FAILED, Precondition Failed) \ ++ XX(413, PAYLOAD_TOO_LARGE, Payload Too Large) \ ++ XX(414, URI_TOO_LONG, URI Too Long) \ ++ XX(415, UNSUPPORTED_MEDIA_TYPE, Unsupported Media Type) \ ++ XX(416, RANGE_NOT_SATISFIABLE, Range Not Satisfiable) \ ++ XX(417, EXPECTATION_FAILED, Expectation Failed) \ ++ XX(421, MISDIRECTED_REQUEST, Misdirected Request) \ ++ XX(422, UNPROCESSABLE_ENTITY, Unprocessable Entity) \ ++ XX(423, LOCKED, Locked) \ ++ XX(424, FAILED_DEPENDENCY, Failed Dependency) \ ++ XX(426, UPGRADE_REQUIRED, Upgrade Required) \ ++ XX(428, PRECONDITION_REQUIRED, Precondition Required) \ ++ XX(429, TOO_MANY_REQUESTS, Too Many Requests) \ ++ XX(431, REQUEST_HEADER_FIELDS_TOO_LARGE, Request Header Fields Too Large) \ ++ XX(451, UNAVAILABLE_FOR_LEGAL_REASONS, Unavailable For Legal Reasons) \ ++ XX(500, INTERNAL_SERVER_ERROR, Internal Server Error) \ ++ XX(501, NOT_IMPLEMENTED, Not Implemented) \ ++ XX(502, BAD_GATEWAY, Bad Gateway) \ ++ XX(503, SERVICE_UNAVAILABLE, Service Unavailable) \ ++ XX(504, GATEWAY_TIMEOUT, Gateway Timeout) \ ++ XX(505, HTTP_VERSION_NOT_SUPPORTED, HTTP Version Not Supported) \ ++ XX(506, VARIANT_ALSO_NEGOTIATES, Variant Also Negotiates) \ ++ XX(507, INSUFFICIENT_STORAGE, Insufficient Storage) \ ++ XX(508, LOOP_DETECTED, Loop Detected) \ ++ XX(510, NOT_EXTENDED, Not Extended) \ ++ XX(511, NETWORK_AUTHENTICATION_REQUIRED, Network Authentication Required) \ ++ ++enum http_status ++ { ++#define XX(num, name, string) HTTP_STATUS_##name = num, ++ HTTP_STATUS_MAP(XX) ++#undef XX ++ }; ++ ++ + /* Request Methods */ + #define HTTP_METHOD_MAP(XX) \ + XX(0, DELETE, DELETE) \