blob: 058bf7c1cb516e0505980850d7ece22acc470022 [file] [log] [blame]
# Maintainer: Martell Malone <martellmalone@gmail.com>
# Maintainer: Ray Donnelly <mingw.android@gmail.com>
# Contributor: David Macek <david.macek.0@gmail.com>
# Contributor: Mateusz MikuĊ‚a <mati865@gmail.com>
# Contributor: Alethea Rose <alethea@alethearose.com>
_realname=nodejs
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=11.15.0
pkgrel=1
pkgdesc="Evented I/O for V8 javascript (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64')
url="https://nodejs.org/"
license=("MIT")
makedepends=("${MINGW_PACKAGE_PREFIX}-python2"
"${MINGW_PACKAGE_PREFIX}-nasm"
"make")
depends=("${MINGW_PACKAGE_PREFIX}-c-ares"
"${MINGW_PACKAGE_PREFIX}-http-parser"
"${MINGW_PACKAGE_PREFIX}-icu"
"${MINGW_PACKAGE_PREFIX}-nghttp2"
"${MINGW_PACKAGE_PREFIX}-libuv"
"${MINGW_PACKAGE_PREFIX}-openssl"
"${MINGW_PACKAGE_PREFIX}-zlib"
"winpty")
optdepends=("${MINGW_PACKAGE_PREFIX}-npm: nodejs package manager")
options=('!emptydirs' '!strip') # 'debug')
source=("https://nodejs.org/dist/v${pkgver}/node-v${pkgver}.tar.xz"
'0001-Fix-python-invocation-to-python2.patch'
'0002-Fix-system-icu-build.patch'
'0003-Include-win32-headers.h-in-v8-atomicops.h.patch'
'0004-Define-localtime_s-for-MinGW.patch'
'0005-Remove-.lib-suffix-on-linked-libraries.patch'
'0006-Define-_WIN32_WINNT-in-node.gyp.patch'
'0007-Skip-sys-resource-and-unneeded-includes-in-node.cc.patch'
'0008-Link-with-municode-and-extern-wmain-for-Unicode.patch'
'0010-Fix-incorrect-test-assumptions-for-MinGW.patch'
'0011-detect-architecture.patch'
'0012-Use-shell-wrapper-script-for-npm-on-MSYS2-MinGW-w64.patch'
'0013-Revert-to-FHS-installation-paths-on-Windows-tests-no.patch'
'0015-cctest-allow-building-with-municode.patch'
'0016-format-macros.h-do-not-rely-on-__STDC_FORMAT_MACROS.patch'
'0017-Do-not-get-confused-by-the-presence-of-winpthread.patch'
'0018-Add-missing-include-to-build-condition-variable.cc-s.patch'
'0020-inspector-use-namespaced-icu-symbols.patch'
'0021-Use-wide-character-Win32-API-functions-to-handle-wch.patch'
'0022-Disable-MSVC_HACK.patch'
'0023-Make-sure-that-__rdtsc-is-declared.patch'
'0024-gyp-mingw.patch'
'0025-mingw-missing-features.patch'
'node')
prepare() {
cd "${srcdir}/node-v${pkgver}"
patch -Np1 -i "${srcdir}/0001-Fix-python-invocation-to-python2.patch"
patch -Np1 -i "${srcdir}/0002-Fix-system-icu-build.patch"
patch -Np1 -i "${srcdir}/0003-Include-win32-headers.h-in-v8-atomicops.h.patch"
patch -Np1 -i "${srcdir}/0004-Define-localtime_s-for-MinGW.patch"
patch -Np1 -i "${srcdir}/0005-Remove-.lib-suffix-on-linked-libraries.patch"
patch -Np1 -i "${srcdir}/0006-Define-_WIN32_WINNT-in-node.gyp.patch"
patch -Np1 -i "${srcdir}/0007-Skip-sys-resource-and-unneeded-includes-in-node.cc.patch"
patch -Np1 -i "${srcdir}/0008-Link-with-municode-and-extern-wmain-for-Unicode.patch"
patch -Np1 -i "${srcdir}/0010-Fix-incorrect-test-assumptions-for-MinGW.patch"
patch -Np1 -i "${srcdir}/0011-detect-architecture.patch"
patch -Np1 -i "${srcdir}/0012-Use-shell-wrapper-script-for-npm-on-MSYS2-MinGW-w64.patch"
patch -Np1 -i "${srcdir}/0013-Revert-to-FHS-installation-paths-on-Windows-tests-no.patch"
patch -Np1 -i "${srcdir}/0015-cctest-allow-building-with-municode.patch"
patch -Np1 -i "${srcdir}/0016-format-macros.h-do-not-rely-on-__STDC_FORMAT_MACROS.patch"
patch -Np1 -i "${srcdir}/0017-Do-not-get-confused-by-the-presence-of-winpthread.patch"
patch -Np1 -i "${srcdir}/0018-Add-missing-include-to-build-condition-variable.cc-s.patch"
patch -Np1 -i "${srcdir}/0020-inspector-use-namespaced-icu-symbols.patch"
patch -Np1 -i "${srcdir}/0021-Use-wide-character-Win32-API-functions-to-handle-wch.patch"
patch -Np1 -i "${srcdir}/0022-Disable-MSVC_HACK.patch"
patch -Np1 -i "${srcdir}/0023-Make-sure-that-__rdtsc-is-declared.patch"
patch -Np1 -i "${srcdir}/0024-gyp-mingw.patch"
patch -Np1 -i "${srcdir}/0025-mingw-missing-features.patch"
}
build() {
local -a extra_config
cd "${srcdir}"
sleep 5
[[ -d ${CARCH} ]] && rm -rf ${CARCH}
mv node-v${pkgver} ${CARCH}
cd ${CARCH}
if check_option "debug" "y"; then
extra_config+=( --debug )
fi
local opt_cpu="x64"
if [ "${CARCH}" = "i686" ]; then
opt_cpu="x86"
fi
./configure \
--prefix="${MINGW_PREFIX}" \
--dest-os=win \
--dest-cpu=${opt_cpu} \
--shared-cares \
--shared-http-parser \
--shared-libuv \
--shared-nghttp2 \
--shared-openssl \
--shared-zlib \
--with-intl=system-icu \
--without-etw \
"${extra_config[@]}"
${MINGW_PREFIX}/bin/python2 tools/gyp_node.py -f make
touch config.gypi
# Work around the problem where the protocol files would be generated into a
# subdirectory relative to deps/v8/src/inspector instead of relative to the
# top-level directory.
#CXXFLAGS=-D_WIN32_WINNT=0x0601 make out/Release/obj/gen/src/inspector/protocol/Forward.h
CXXFLAGS=-D_WIN32_WINNT=0x0601 make V=1
# flatten the nested node_modules/ hierarchy
test -z "$(find deps/npm/node_modules | grep '^.\{140,\}$')" ||
(cd deps/npm &&
cp -R . ../npm.bup &&
rm -rf node_modules &&
../../out/Release/node.exe ../npm.bup/bin/npm-cli.js install --production)
}
check() {
cd "${srcdir}/${CARCH}"
# A few tests still fail due to a bug with pausing/resuming file streams
${MINGW_PREFIX}/bin/python2 tools/test.py --mode=release -J \
cctest doctool inspector message parallel sequential tick-processor || true
}
package() {
cd "${srcdir}/${CARCH}"
${MINGW_PREFIX}/bin/python2 tools/install.py install "${pkgdir}" "/${MINGW_PREFIX}"
install -d "${pkgdir}${MINGW_PREFIX}/share/doc/nodejs"
cp -r doc/api/{*.html,assets} \
"${pkgdir}${MINGW_PREFIX}/share/doc/nodejs"
install -D -m644 LICENSE \
"${pkgdir}${MINGW_PREFIX}/share/licenses/nodejs/LICENSE"
mv -v "${pkgdir}$MINGW_PREFIX/bin/node"{.exe,_exe}
install -m755 "${srcdir}/node" "${pkgdir}${MINGW_PREFIX}/bin/node"
mv -v "${pkgdir}$MINGW_PREFIX/bin/node"{_exe,.exe}
install -m755 "${srcdir}/${CARCH}/deps/npm/bin/npm.cmd" "${pkgdir}${MINGW_PREFIX}/bin/npm.cmd"
}
sha256sums=('68a776c5d8b8b91a8f2adac2ca4ce4390ae1804883ec7ec9c0d6a6a64d306a76'
'0e3b9ec420393c6d56fb5dcabb60acc7a1f50000ebea3a8bbbf6ecb87a00e404'
'b5357ea485814c179b3b1131f985abf4e3992791d7008d7f9c60dde3cd800401'
'7a0f96ba5b8639807a22c592d25e87bceae623d382c41bfc7f994367aa9b8ffb'
'8c21a199822d3e106eacbc8e4ef923508293026edc8c55ad838c316cea5bda45'
'a8640f1b7b90469ecc5314dd710ee18ae33ef18133263fdb497ff302dd38bc41'
'afdc52f2aa8b2234ff0824521ad284bf6e3e1261fbd76e96a146643e6e47e4ff'
'f15e5266eece74443bedfa9d6d1243083ef30b27cdf621cb4b4267866660387c'
'6e1535166dc3fc75540f0e5e3fc25253cf488cb40a98a4b23f7b24e0059ca9f5'
'59b052ff5e50f4ab49619bad1d8c388f8a5183256361452e262ffa9e079c99b6'
'495b44761dde93a242850304038bd47fdc665d4bbc59e4b027c192afebc9283a'
'b37fba2c8bb254905993b41d0ed319fa02bc37c88446ef0b2341ee92cc42faae'
'9a29cb99c53dc39187d2cbb7e559130944063e07342802b9d77cfb037c8d9b30'
'2005eb72281e1c727411015ced471b37999ccd062d60856cabd68032ed303601'
'4fd604e2889e1741f8a7ed5b3e945d401eed2b13086daa4544384da4c04698d1'
'3e5da564180238aeaf6e79b3273838465bed962fc65bbe8f0657e09ab0cabee3'
'3a83695ebb617341b687133cd5319e0762c2f8af880800ac36de232311ccb903'
'f7144d6fe1efee3d9134d92d3757c9bcc3f570dbca5a4fbadf3efd6492ba345f'
'71e6b87542013c68641bcc8f98a769236f7181125960b2dcd1e7af516b1447ac'
'44a8d757584cb725760c9d9bd661fb23ee0a2b555ffca8a449573e4d03db7dcc'
'8cc3ef3ce149e5f0869d434538a9bd0a934afc52f0f571f6436694ce11587d12'
'01eab68f9de8b7cbcae774b25c931a7f503a3419f20464ba1a7df9eea9fa7710'
'6e223d2996f4cc02080c7b57521da6f7d29b41f41d4e225f8d1c941d25c1f963'
'284251ff443506cd61530a026afb421d0084e4ad25c037bcfe3a045246d729a2')