This patch allows www/node to build and run on powerpc64. It fixes incorrect assumptions between ELFv1/ELFv2 and LE/BE logic.
Details
Commands on server/node console:
root@alfredo-2:~/src/freebsd-ports/www/node # node Welcome to Node.js v12.11.1. Type ".help" for more information. > var http = require('http'); undefined > http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello Node.js World!'); }).listen(8080); Server { _events: [Object: null prototype] { request: [Function], connection: [Function: connectionListener] }, _eventsCount: 2, _maxListeners: undefined, _connections: 0, _handle: TCP { reading: false, onconnection: [Function: onconnection], [Symbol(owner)]: [Circular] }, _usingWorkers: false, _workers: [], _unref: false, allowHalfOpen: true, pauseOnConnect: false, httpAllowHalfOpen: false, timeout: 120000, keepAliveTimeout: 5000, maxHeadersCount: null, headersTimeout: 40000, _connectionKey: '6::::8080', [Symbol(IncomingMessage)]: [Function: IncomingMessage], [Symbol(ServerResponse)]: [Function: ServerResponse], [Symbol(asyncId)]: 209 } >
From client:
# curl http://localhost:8080 -v * Trying 127.0.0.1:8080... * TCP_NODELAY set * Connected to localhost (127.0.0.1) port 8080 (#0) > GET / HTTP/1.1 > Host: localhost:8080 > User-Agent: curl/7.66.0 > Accept: */* > * Mark bundle as not supporting multiuse < HTTP/1.1 200 OK < Content-Type: text/plain < Date: Mon, 21 Oct 2019 21:43:27 GMT < Connection: keep-alive < Transfer-Encoding: chunked < * Connection #0 to host localhost left intact Hello Node.js World!
Diff Detail
- Lint
No Lint Coverage - Unit
No Test Coverage - Build Status
Buildable 26948 Build 25250: arc lint + arc unit
Event Timeline
It would be nice if you could apply files/patch-common.gypi only for elfv2, to have node available for elfv1.
node isn't building with llvm90 anymore due to https://bugs.llvm.org/show_bug.cgi?id=43527, so patch is updated to use llvm-devel instead.
Note: this requires PPC_ABI variable with value set to "ELFv2" in order to build on powerpc64/elfv2
www/node/Makefile | ||
---|---|---|
79 | extra-patch-common.gypi is valid only for elfv2 and elfv2 will be only 13 at the moment. This means that we can drop EXTRA_PATCHES_13 and do directly: | |
81–84 | Those are not necessary. With changes in this review, this port will build on ppc64 elfv2. |
www/node/files/extra-patch-common.gypi | ||
---|---|---|
8 | Without this, I got linking errors. Do you build the current version of www/node? I built www/node 12.10.0 before without adding ABI version, but 12.11.1 doesn't build without specifying ABI. |
Needs to be updated for 12.12.0:
1 out of 1 hunks failed--saving rejects to tools/v8_gypfiles/v8.gyp.rej => FreeBSD patch patch-tools_v8__gypfiles_v8.gyp failed to apply cleanly. => Patch(es) patch-deps_openssl_config_archs_linux-elf_no-asm_openssl-cl.gypi patch-deps_openssl_config_archs_linux-elf_no-asm_openssl.gypi patch-deps_openssl_openssl-cl__no__asm.gypi patch-deps_openssl_openssl__no__asm.gypi patch-deps_v8_src_base_platform_platform-freebsd.cc patch-deps_v8_src_codegen_arm_cpu-arm.cc patch-deps_v8_src_codegen_ppc_constants-ppc.h patch-deps_v8_src_execution_simulator.h patch-deps_v8_src_libsampler_sampler.cc patch-node.gypi applied cleanly.
Other than that, fine with me.
Node compiles just fine after removing files/patch-tools_v8__gypfiles_v8.gyp. Looks like it's now not necessary.
updated patch for node-13.0
llvm-devel dependency removed since https://bugs.llvm.org/show_bug.cgi?id=43527 should be fixed in FreeBSD base by commit 354339.
www/node/Makefile | ||
---|---|---|
80 | extra blank lines |