From f15511e8a21f3fc004c3fab4f7dc1e6918086a1d Mon Sep 17 00:00:00 2001 From: k4leg Date: Tue, 5 Nov 2019 20:07:50 +0300 Subject: [PATCH] New package: nodejs-lts-10-10.17.0 [ci skip] --- srcpkgs/nodejs-lts-10-devel | 1 + srcpkgs/nodejs-lts-10/patches/ppc32.patch | 43 ++++++++++ srcpkgs/nodejs-lts-10/patches/ppc64.patch | 41 ++++++++++ srcpkgs/nodejs-lts-10/template | 95 +++++++++++++++++++++++ 4 files changed, 180 insertions(+) create mode 120000 srcpkgs/nodejs-lts-10-devel create mode 100644 srcpkgs/nodejs-lts-10/patches/ppc32.patch create mode 100644 srcpkgs/nodejs-lts-10/patches/ppc64.patch create mode 100644 srcpkgs/nodejs-lts-10/template diff --git a/srcpkgs/nodejs-lts-10-devel b/srcpkgs/nodejs-lts-10-devel new file mode 120000 index 0000000000..2591e8fa65 --- /dev/null +++ b/srcpkgs/nodejs-lts-10-devel @@ -0,0 +1 @@ +nodejs-lts-10 \ No newline at end of file diff --git a/srcpkgs/nodejs-lts-10/patches/ppc32.patch b/srcpkgs/nodejs-lts-10/patches/ppc32.patch new file mode 100644 index 0000000000..343eff5851 --- /dev/null +++ b/srcpkgs/nodejs-lts-10/patches/ppc32.patch @@ -0,0 +1,43 @@ +--- configure.py ++++ configure.py +@@ -848,7 +848,7 @@ def host_arch_cc(): + '__MIPSEL__' : 'mipsel', + '__mips__' : 'mips', + '__PPC64__' : 'ppc64', +- '__PPC__' : 'ppc64', ++ '__PPC__' : 'ppc', + '__x86_64__' : 'x64', + '__s390__' : 's390', + '__s390x__' : 's390x', +--- node.gyp ++++ node.gyp +@@ -479,6 +479,11 @@ + 'msvs_disabled_warnings!': [4244], + + 'conditions': [ ++ [ 'host_arch=="mips" or host_arch=="mipsel" or host_arch=="ppc"', { ++ 'link_settings': { ++ 'libraries': [ '-latomic' ], ++ }, ++ }], + [ 'node_code_cache_path!=""', { + 'sources': [ '<(node_code_cache_path)' ] + }, { +--- deps/v8/src/libsampler/sampler.cc ++++ deps/v8/src/libsampler/sampler.cc +@@ -418,9 +418,15 @@ void SignalHandler::FillRegisterState(void* context, RegisterState* state) { + reinterpret_cast(ucontext->uc_mcontext.regs->gpr[PT_R31]); + #else + // Some C libraries, notably Musl, define the regs member as a void pointer ++ #if !V8_TARGET_ARCH_32_BIT + state->pc = reinterpret_cast(ucontext->uc_mcontext.gp_regs[32]); + state->sp = reinterpret_cast(ucontext->uc_mcontext.gp_regs[1]); + state->fp = reinterpret_cast(ucontext->uc_mcontext.gp_regs[31]); ++ #else ++ state->pc = reinterpret_cast(ucontext->uc_mcontext.gregs[32]); ++ state->sp = reinterpret_cast(ucontext->uc_mcontext.gregs[1]); ++ state->fp = reinterpret_cast(ucontext->uc_mcontext.gregs[31]); ++ #endif + #endif + #elif V8_HOST_ARCH_S390 + #if V8_TARGET_ARCH_32_BIT diff --git a/srcpkgs/nodejs-lts-10/patches/ppc64.patch b/srcpkgs/nodejs-lts-10/patches/ppc64.patch new file mode 100644 index 0000000000..8190db1ce6 --- /dev/null +++ b/srcpkgs/nodejs-lts-10/patches/ppc64.patch @@ -0,0 +1,41 @@ +Taken from Adélie Linux, fixes node on big endian ELFv2. +--- deps/v8/src/ppc/assembler-ppc.h.old 2019-03-05 15:16:29.000000000 +0000 ++++ deps/v8/src/ppc/assembler-ppc.h 2019-04-02 07:05:25.977213735 +0000 +@@ -48,7 +48,8 @@ + #include "src/ppc/constants-ppc.h" + + #if V8_HOST_ARCH_PPC && \ +- (V8_OS_AIX || (V8_TARGET_ARCH_PPC64 && V8_TARGET_BIG_ENDIAN)) ++ (V8_OS_AIX || (V8_TARGET_ARCH_PPC64 && \ ++ (V8_TARGET_BIG_ENDIAN && (!defined(_CALL_ELF) || _CALL_ELF == 1)))) + #define ABI_USES_FUNCTION_DESCRIPTORS 1 + #else + #define ABI_USES_FUNCTION_DESCRIPTORS 0 +@@ -60,13 +61,15 @@ + #define ABI_PASSES_HANDLES_IN_REGS 0 + #endif + +-#if !V8_HOST_ARCH_PPC || !V8_TARGET_ARCH_PPC64 || V8_TARGET_LITTLE_ENDIAN ++#if !V8_HOST_ARCH_PPC || !V8_TARGET_ARCH_PPC64 || \ ++ (V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2)) + #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 1 + #else + #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 0 + #endif + +-#if !V8_HOST_ARCH_PPC || (V8_TARGET_ARCH_PPC64 && V8_TARGET_LITTLE_ENDIAN) ++#if !V8_HOST_ARCH_PPC || (V8_TARGET_ARCH_PPC64 && \ ++ (V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2))) + #define ABI_CALL_VIA_IP 1 + #else + #define ABI_CALL_VIA_IP 0 +@@ -220,7 +220,8 @@ + // The following constants describe the stack frame linkage area as + // defined by the ABI. Note that kNumRequiredStackFrameSlots must + // satisfy alignment requirements (rounding up if required). +-#if V8_TARGET_ARCH_PPC64 && V8_TARGET_LITTLE_ENDIAN ++#if V8_TARGET_ARCH_PPC64 && (V8_TARGET_LITTLE_ENDIAN || \ ++ defined(_CALL_ELF) && _CALL_ELF == 2) + // [0] back chain + // [1] condition register save area + // [2] link register save area diff --git a/srcpkgs/nodejs-lts-10/template b/srcpkgs/nodejs-lts-10/template new file mode 100644 index 0000000000..3f201bcb58 --- /dev/null +++ b/srcpkgs/nodejs-lts-10/template @@ -0,0 +1,95 @@ +# Template file for 'nodejs-lts-10' +pkgname=nodejs-lts-10 +version=10.17.0 +revision=1 +wrksrc="node-v${version}" +hostmakedepends="pkg-config python zlib-devel $(vopt_if icu icu-devel) + $(vopt_if ssl libressl-devel) $(vopt_if libuv libuv-devel) + $(vopt_if http_parser http-parser-devel) $(vopt_if nghttp2 nghttp2-devel) + $(vopt_if cares c-ares-devel)" +makedepends="zlib-devel python-devel $(vopt_if icu icu-devel) + $(vopt_if ssl libressl-devel) $(vopt_if libuv libuv-devel) + $(vopt_if http_parser http-parser-devel) $(vopt_if nghttp2 nghttp2-devel) + $(vopt_if cares c-ares-devel)" +short_desc="Evented I/O for V8 javascript (Dubnium)" +maintainer="k4leg " +license="MIT" +homepage="https://nodejs.org/" +distfiles="${homepage}/download/release/latest-v10.x/node-v${version}.tar.xz" +checksum=412667d76bd5273c07cb69c215998109fd5bb35c874654f93e6a0132d666c58e + +build_options="ssl libuv http_parser icu nghttp2 cares" +desc_option_ssl="Enable shared libressl" +desc_option_libuv="Enable shared libuv" +desc_option_http_parser="Enable shared http-parser" +desc_option_icu="Enable shared icu" +desc_option_nghttp2="Enable shared nghttp2" +desc_option_cares="Enable shared c-ares" +build_options_default="libuv http_parser icu nghttp2 cares" + +replaces="iojs>=0" +conflicts="nodejs nodejs-lts" +provides="nodejs-runtime-0_1" + +if [ "$XBPS_WORDSIZE" -ne "$XBPS_TARGET_WORDSIZE" ]; then + nocross="host and target must have the same pointer size" +fi + +case "$XBPS_MACHINE" in + ppc64*) ;; + mips*|ppc*) hostmakedepends+=" libatomic-devel" ;; + *) ;; +esac + +do_configure() { + local _args + + export LD="$CXX" + if [ "$CROSS_BUILD" ]; then + case "$XBPS_TARGET_MACHINE" in + arm*) _args="--dest-cpu=arm" ;; + aarch64*) _args="--dest-cpu=arm64" ;; + ppc64*) _args="--dest-cpu=ppc64" ;; + ppc*) _args="--dest-cpu=ppc" ;; + mipsel*) _args="--dest-cpu=mipsel" ;; + mips*) _args="--dest-cpu=mips" ;; + i686*) _args="--dest-cpu=x86" ;; + x86_64*) _args="--dest-cpu=x86_64" ;; + *) msg_error "$pkgver: cannot be cross compiled for ${XBPS_TARGET_MACHINE}.\n" ;; + esac + _args+=" --without-snapshot" + fi + # their pregenerated asm is for ELFv1... + case "$XBPS_TARGET_MACHINE" in + ppc64|ppc64-musl) _args+=" --openssl-no-asm" ;; + esac + ./configure --prefix=/usr --shared-zlib \ + $(vopt_if icu --with-intl=system-icu) \ + $(vopt_if http_parser --shared-http-parser) \ + $(vopt_if ssl --shared-openssl) \ + $(vopt_if libuv --shared-libuv) \ + $(vopt_if nghttp2 --shared-nghttp2) \ + $(vopt_if cares --shared-cares) ${_args} +} + +do_build() { + if [ "$CROSS_BUILD" ]; then + make LD="$CXX" LDFLAGS+=-ldl ${makejobs} PORTABLE=1 V=1 + else + make LD="$CXX" LDFLAGS+=-ldl ${makejobs} V=1 + fi +} + +do_install() { + make LD="$CXX" LDFLAGS+=-ldl DESTDIR="$DESTDIR" install + rm $DESTDIR/usr/include/node/openssl -rf + vlicense LICENSE +} + +nodejs-lts-10-devel_package() { + short_desc+=" (development files)" + conflicts="nodejs-devel nodejs-lts-devel" + pkg_install() { + vmove usr/include + } +}