smanders / externpro

build external projects with cmake
MIT License
13 stars 12 forks source link

add node.js 10.x and remove node.js 8.11.0 #219

Closed smanders closed 5 years ago

smanders commented 6 years ago

Node.js Release Schedule https://github.com/nodejs/Release https://nodejs.org/

see https://github.com/smanders/externpro/issues/218 for "the plan" -- this issue is to

smanders commented 5 years ago

completed with commit to dev branch referenced above

smanders commented 5 years ago

until a new release of externpro is made, I may periodically update node to the latest 10.x release

smanders commented 5 years ago

10.15.2 fails to build on Windows

22>CUSTOMBUILD : warning : No acceptable ASM compiler found!
22>         Please make sure you have installed NASM from http://www.nasm.us
22>         and refer BUILDING.md.
22>CUSTOMBUILD : error : Did not find a new enough assembler, install one or build with
22>       --openssl-no-asm.
22>       Please refer to BUILDING.md
22>Failed to create vc project files.
22>Done building project "nodev10.15.2_Releasevcbuild.vcxproj" -- FAILED.
99>Error copying file "C:/src/externpro/_bld/xpbase/Source/nodev10.15.2/Release/node.lib" to "C:/src/externpro/_bld/externpro_18.11.1-8-gb9337b1-vc141-64/nodev10.15.2/lib".
99>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(171,5): error MSB6006: "cmd.exe" exited with code 1.
99>Done building project "nodev10.15.2_Release.vcxproj" -- FAILED.

known issue: https://github.com/nodejs/node/issues/19918 (build: default building of master is broken on Windows without NASM)

smanders commented 5 years ago

Node.js OpenSSL asm support https://github.com/nodejs/node/blob/v10.x/BUILDING.md#openssl-asm-support

vcbuild.bat https://github.com/nodejs/node/blob/v10.15.2/vcbuild.bat#L193-L194

if not defined openssl_no_asm call tools\msvs\find_nasm.cmd
if errorlevel 1 echo Could not find NASM, install it or build with openssl-no-asm. See BUILDING.md.

find_nasm.cmd https://github.com/nodejs/node/blob/v10.15.2/tools/msvs/find_nasm.cmd

for now I will be adding --openssl-no-asm

in the future perhaps nasm could be added to externpro? https://www.nasm.us/

smanders commented 5 years ago

removing last commit from dev branch since

commit 329db83601bc1f305f7a65f0817392567761251e
Author: Scott M Anderson <smanders@sdl.usu.edu>
Date:   Fri Jun 7 14:04:24 2019 -0600

    nodejs windows configure with openssl_no_asm

    * until externpro builds nasm or yasm is supported by node.js
    * issue https://github.com/smanders/externpro/issues/219#issuecomment-500018977

diff --git a/projects/node.cmake b/projects/node.cmake
index 38a67e6..2c1050e 100644
--- a/projects/node.cmake
+++ b/projects/node.cmake
@@ -45,7 +45,7 @@ function(build_node_ver ver)
     message(FATAL_ERROR "node.cmake: cpu")
   endif()
   if(MSVC)
-    set(XP_CONFIGURE_BASE vcbuild nosign)
+    set(XP_CONFIGURE_BASE vcbuild nosign openssl-no-asm)
     set(XP_CONFIGURE_Release ${XP_CONFIGURE_BASE} release ${destcpu})
     set(XP_CONFIGURE_Debug ${XP_CONFIGURE_BASE} debug ${destcpu})
   elseif(UNIX)
smanders commented 5 years ago
node externpro
0.12.7p 15.10.2
5.10.1p 16.04.1
5.10.1 16.07.1
6.9.0 16.10.2
6.11.4 17.10.1
8.11.0 18.04.1
8.12.0 18.11.1
smanders commented 5 years ago

I tried all kinds of things to successfully find nasm and avoid patching node, to no avail

find_nasm.cmd would work if I called it directly from a windows command prompt (call find_nasm.cmd), but wouldn't work when called from Visual Studio and node's vcbuild.bat

the first lines find nasm if it's in your PATH

FOR /F "delims=" %%a IN ('where nasm 2^> NUL') DO (
  EXIT /B 0
)

and the next lines find nasm if it's installed to ProgramFiles

IF EXIST "%ProgramFiles%\NASM\nasm.exe" (
  SET "Path=%Path%;%ProgramFiles%\NASM"
  EXIT /B 0
)

IF EXIST "%ProgramFiles(x86)%\NASM\nasm.exe" (
  SET "Path=%Path%;%ProgramFiles(x86)%\NASM"
  EXIT /B 0
)

I had nasm installed to ProgramFiles and put it in my path and it failed to find nasm - but as soon as I put nasm in a directory that doesn't require escalated privileges (?) it could find nasm

so I patched find_nasm.cmd and look for nasm in it's extracted source directory in externpro

smanders commented 5 years ago

completed with commits to dev branch referenced above