From 31fc553efc840fc5404d04776dff40074d05dd06 Mon Sep 17 00:00:00 2001 From: ksuprynowicz Date: Tue, 13 Jun 2023 22:28:36 +0200 Subject: [PATCH 1/7] Build libnode from source --- cmake/ports/node/portfile.cmake | 62 +++++++++++++++++++++++++-------- 1 file changed, 48 insertions(+), 14 deletions(-) diff --git a/cmake/ports/node/portfile.cmake b/cmake/ports/node/portfile.cmake index 5a203e06a9..eca5337352 100644 --- a/cmake/ports/node/portfile.cmake +++ b/cmake/ports/node/portfile.cmake @@ -26,12 +26,41 @@ elseif (APPLE) else () # else Linux desktop if (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - vcpkg_download_distfile( - NODE_SOURCE_ARCHIVE - URLS "${EXTERNAL_BUILD_ASSETS}/dependencies/node/node-install-18.14.2-ubuntu-18.04-amd64-release.tar.xz" - SHA512 ff5ca5c27b811d20ac524346ee122bcd72e9e85c6de6f4799f620bb95dac959ce910cc5bb2162ed741a7f65043aa78173ecd2ce5b92f5a4d91ecb07ce71fa560 - FILENAME node-install-18.14.2-ubuntu-18.04-amd64-release.tar.xz + #vcpkg_download_distfile( + # NODE_SOURCE_ARCHIVE + # URLS "https://daleglass.eu-central-1.linodeobjects.com/node-install-18.14.2-ubuntu-18.04-amd64-patched.tar.xz" + # SHA512 ecaf8139cd9e49528db349cf17b16b477b6153b8c8d9b08e7aea9cb378dd5126fa0a9a0f97bb6987da452c351047dec5abfede92404d7d940edeecb248b6b8b7 + # FILENAME node-install-18.14.2-ubuntu-18.04-amd64-release.tar.xz + #) + vcpkg_from_github( + OUT_SOURCE_PATH + SOURCE_PATH + REPO + nodejs/node + REF + v18.16.0 + SHA512 + 9b983b899acd02e7ed761bc3633fc56855e10335fcdb558a29d1cf068ce1125991c9a781616d82a9dc90be6e8ba1bf4a34a10a92c6b7db9cbe33ef7fa7dda67f + HEAD_REF + v18.16.0 ) + file(COPY ${SOURCE_PATH} DESTINATION "${CURRENT_BUILDTREES_DIR}") + vcpkg_execute_build_process( + COMMAND ./configure --gdb --shared --v8-enable-object-print --shared-openssl --prefix=${CURRENT_BUILDTREES_DIR}/node-install/ + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean + LOGNAME "configure-node" + ) + vcpkg_execute_build_process( + COMMAND make -j20 + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean + LOGNAME "make-node" + ) + vcpkg_execute_build_process( + COMMAND make -j20 install + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean + LOGNAME "install-node" + ) + set(NODE_INSTALL_PATH ${CURRENT_BUILDTREES_DIR}) elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") vcpkg_download_distfile( NODE_SOURCE_ARCHIVE @@ -42,18 +71,23 @@ else () endif () endif () -vcpkg_extract_source_archive(MASTER_COPY_SOURCE_PATH ARCHIVE ${NODE_SOURCE_ARCHIVE} NO_REMOVE_ONE_LEVEL) +if (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + +else() + vcpkg_extract_source_archive(SOURCE_PATH ARCHIVE ${NODE_SOURCE_ARCHIVE} NO_REMOVE_ONE_LEVEL) + set(NODE_INSTALL_PATH ${MASTER_COPY_SOURCE_PATH}) +endif() # move WIN dll to /bin and WIN .lib to /lib if (WIN32) - file(COPY ${MASTER_COPY_SOURCE_PATH}/node-install/include DESTINATION ${CURRENT_PACKAGES_DIR}) - file(COPY ${MASTER_COPY_SOURCE_PATH}/node-install/libnode.lib DESTINATION ${CURRENT_PACKAGES_DIR}/lib) - file(COPY ${MASTER_COPY_SOURCE_PATH}/node-install/v8_libplatform.lib DESTINATION ${CURRENT_PACKAGES_DIR}/lib) - file(COPY ${MASTER_COPY_SOURCE_PATH}/node-install/libnode.dll DESTINATION ${CURRENT_PACKAGES_DIR}/bin) + file(COPY ${NODE_INSTALL_PATH}/node-install/include DESTINATION ${CURRENT_PACKAGES_DIR}) + file(COPY ${NODE_INSTALL_PATH}/node-install/libnode.lib DESTINATION ${CURRENT_PACKAGES_DIR}/lib) + file(COPY ${NODE_INSTALL_PATH}/node-install/v8_libplatform.lib DESTINATION ${CURRENT_PACKAGES_DIR}/lib) + file(COPY ${NODE_INSTALL_PATH}/node-install/libnode.dll DESTINATION ${CURRENT_PACKAGES_DIR}/bin) else () - file(COPY ${MASTER_COPY_SOURCE_PATH}/node-install/include DESTINATION ${CURRENT_PACKAGES_DIR}) - file(COPY ${MASTER_COPY_SOURCE_PATH}/node-install/lib DESTINATION ${CURRENT_PACKAGES_DIR}) - file(COPY ${MASTER_COPY_SOURCE_PATH}/node-install/share DESTINATION ${CURRENT_PACKAGES_DIR}) - file(COPY ${MASTER_COPY_SOURCE_PATH}/node-install/bin DESTINATION ${CURRENT_PACKAGES_DIR}) + file(COPY ${NODE_INSTALL_PATH}/node-install/include DESTINATION ${CURRENT_PACKAGES_DIR}) + file(COPY ${NODE_INSTALL_PATH}/node-install/lib DESTINATION ${CURRENT_PACKAGES_DIR}) + file(COPY ${NODE_INSTALL_PATH}/node-install/share DESTINATION ${CURRENT_PACKAGES_DIR}) + file(COPY ${NODE_INSTALL_PATH}/node-install/bin DESTINATION ${CURRENT_PACKAGES_DIR}) endif () From 7da45e2d64286683860a543c96006aa7eaaafdd2 Mon Sep 17 00:00:00 2001 From: ksuprynowicz Date: Wed, 14 Jun 2023 22:02:50 +0200 Subject: [PATCH 2/7] Fixed number of jobs for libnode build --- cmake/ports/node/portfile.cmake | 44 +++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/cmake/ports/node/portfile.cmake b/cmake/ports/node/portfile.cmake index eca5337352..67760c0134 100644 --- a/cmake/ports/node/portfile.cmake +++ b/cmake/ports/node/portfile.cmake @@ -26,12 +26,6 @@ elseif (APPLE) else () # else Linux desktop if (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - #vcpkg_download_distfile( - # NODE_SOURCE_ARCHIVE - # URLS "https://daleglass.eu-central-1.linodeobjects.com/node-install-18.14.2-ubuntu-18.04-amd64-patched.tar.xz" - # SHA512 ecaf8139cd9e49528db349cf17b16b477b6153b8c8d9b08e7aea9cb378dd5126fa0a9a0f97bb6987da452c351047dec5abfede92404d7d940edeecb248b6b8b7 - # FILENAME node-install-18.14.2-ubuntu-18.04-amd64-release.tar.xz - #) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH @@ -50,16 +44,40 @@ else () WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean LOGNAME "configure-node" ) - vcpkg_execute_build_process( - COMMAND make -j20 + if(VCPKG_MAX_CONCURRENCY GREATER 0) + vcpkg_execute_build_process( + COMMAND make -j${VCPKG_MAX_CONCURRENCY} WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean LOGNAME "make-node" - ) - vcpkg_execute_build_process( - COMMAND make -j20 install + ) + vcpkg_execute_build_process( + COMMAND make -j${VCPKG_MAX_CONCURRENCY} install + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean + LOGNAME "install-node" + ) + elseif (VCPKG_CONCURRENCY GREATER 0) + vcpkg_execute_build_process( + COMMAND make -j${VCPKG_CONCURRENCY} WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean - LOGNAME "install-node" - ) + LOGNAME "make-node" + ) + vcpkg_execute_build_process( + COMMAND make -j${VCPKG_CONCURRENCY} install + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean + LOGNAME "install-node" + ) + else () + vcpkg_execute_build_process( + COMMAND make -j$(nproc) + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean + LOGNAME "make-node" + ) + vcpkg_execute_build_process( + COMMAND make -j$(nproc) install + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean + LOGNAME "install-node" + ) + endif () set(NODE_INSTALL_PATH ${CURRENT_BUILDTREES_DIR}) elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") vcpkg_download_distfile( From 1f7b4ef350f7685cfad8ab3d9a64da057b4b14e0 Mon Sep 17 00:00:00 2001 From: ksuprynowicz Date: Thu, 15 Jun 2023 23:57:27 +0200 Subject: [PATCH 3/7] Fix libnode vcpkg failure on Windows --- cmake/ports/node/portfile.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/ports/node/portfile.cmake b/cmake/ports/node/portfile.cmake index 67760c0134..9ecd006993 100644 --- a/cmake/ports/node/portfile.cmake +++ b/cmake/ports/node/portfile.cmake @@ -89,7 +89,7 @@ else () endif () endif () -if (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") +if (NODE_INSTALL_PATH) else() vcpkg_extract_source_archive(SOURCE_PATH ARCHIVE ${NODE_SOURCE_ARCHIVE} NO_REMOVE_ONE_LEVEL) From bb428edcac4aaf7c584ce6d6af23c6a570dd720a Mon Sep 17 00:00:00 2001 From: ksuprynowicz Date: Fri, 16 Jun 2023 13:20:51 +0200 Subject: [PATCH 4/7] Another fix for libnode portfile on Windows --- .gitignore | 1 + cmake/ports/node/portfile.cmake | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 91e80c1fb0..bbcbadf2b6 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ cmake-build-minsizerelease-visual-studio/ cmake-build-release-visual-studio/ cmake-build-relwithdebinfo-visual-studio/ cmake-build-debug-visual-studio/ +cmake-build-debug/ /release*/ /debug*/ /gprof*/ diff --git a/cmake/ports/node/portfile.cmake b/cmake/ports/node/portfile.cmake index 9ecd006993..7667f475c8 100644 --- a/cmake/ports/node/portfile.cmake +++ b/cmake/ports/node/portfile.cmake @@ -92,7 +92,7 @@ endif () if (NODE_INSTALL_PATH) else() - vcpkg_extract_source_archive(SOURCE_PATH ARCHIVE ${NODE_SOURCE_ARCHIVE} NO_REMOVE_ONE_LEVEL) + vcpkg_extract_source_archive(MASTER_COPY_SOURCE_PATH ARCHIVE ${NODE_SOURCE_ARCHIVE} NO_REMOVE_ONE_LEVEL) set(NODE_INSTALL_PATH ${MASTER_COPY_SOURCE_PATH}) endif() From d6e5b5faf72bdde918ba878e1b3eed003f7b1ec4 Mon Sep 17 00:00:00 2001 From: ksuprynowicz Date: Sun, 18 Jun 2023 23:45:08 +0200 Subject: [PATCH 5/7] Fixed formatting and added a comment --- cmake/ports/node/portfile.cmake | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/cmake/ports/node/portfile.cmake b/cmake/ports/node/portfile.cmake index 7667f475c8..aaf10f35dd 100644 --- a/cmake/ports/node/portfile.cmake +++ b/cmake/ports/node/portfile.cmake @@ -27,17 +27,13 @@ else () # else Linux desktop if (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") vcpkg_from_github( - OUT_SOURCE_PATH - SOURCE_PATH - REPO - nodejs/node - REF - v18.16.0 - SHA512 - 9b983b899acd02e7ed761bc3633fc56855e10335fcdb558a29d1cf068ce1125991c9a781616d82a9dc90be6e8ba1bf4a34a10a92c6b7db9cbe33ef7fa7dda67f - HEAD_REF - v18.16.0 + OUT_SOURCE_PATH SOURCE_PATH + REPO nodejs/node + REF v18.16.0 + SHA512 9b983b899acd02e7ed761bc3633fc56855e10335fcdb558a29d1cf068ce1125991c9a781616d82a9dc90be6e8ba1bf4a34a10a92c6b7db9cbe33ef7fa7dda67f + HEAD_REF v18.16.0 ) + # v18.16.0-e8bd828d3a.clean is getting added by VCPKG. It will need to be updated when we update libnode version. file(COPY ${SOURCE_PATH} DESTINATION "${CURRENT_BUILDTREES_DIR}") vcpkg_execute_build_process( COMMAND ./configure --gdb --shared --v8-enable-object-print --shared-openssl --prefix=${CURRENT_BUILDTREES_DIR}/node-install/ From 69ab504349e322d292f0c180bb7881d2757910b7 Mon Sep 17 00:00:00 2001 From: ksuprynowicz Date: Sun, 18 Jun 2023 23:51:18 +0200 Subject: [PATCH 6/7] Libnode portfile cleanup --- cmake/ports/node/portfile.cmake | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/cmake/ports/node/portfile.cmake b/cmake/ports/node/portfile.cmake index aaf10f35dd..c3b6397181 100644 --- a/cmake/ports/node/portfile.cmake +++ b/cmake/ports/node/portfile.cmake @@ -34,43 +34,44 @@ else () HEAD_REF v18.16.0 ) # v18.16.0-e8bd828d3a.clean is getting added by VCPKG. It will need to be updated when we update libnode version. + set(NODE_SOURCE_DIRECTORY_NAME "v18.16.0-e8bd828d3a.clean") file(COPY ${SOURCE_PATH} DESTINATION "${CURRENT_BUILDTREES_DIR}") vcpkg_execute_build_process( COMMAND ./configure --gdb --shared --v8-enable-object-print --shared-openssl --prefix=${CURRENT_BUILDTREES_DIR}/node-install/ - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${NODE_SOURCE_DIRECTORY_NAME} LOGNAME "configure-node" ) if(VCPKG_MAX_CONCURRENCY GREATER 0) vcpkg_execute_build_process( COMMAND make -j${VCPKG_MAX_CONCURRENCY} - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${NODE_SOURCE_DIRECTORY_NAME} LOGNAME "make-node" ) vcpkg_execute_build_process( COMMAND make -j${VCPKG_MAX_CONCURRENCY} install - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${NODE_SOURCE_DIRECTORY_NAME} LOGNAME "install-node" ) elseif (VCPKG_CONCURRENCY GREATER 0) vcpkg_execute_build_process( COMMAND make -j${VCPKG_CONCURRENCY} - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${NODE_SOURCE_DIRECTORY_NAME} LOGNAME "make-node" ) vcpkg_execute_build_process( COMMAND make -j${VCPKG_CONCURRENCY} install - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${NODE_SOURCE_DIRECTORY_NAME} LOGNAME "install-node" ) else () vcpkg_execute_build_process( COMMAND make -j$(nproc) - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${NODE_SOURCE_DIRECTORY_NAME} LOGNAME "make-node" ) vcpkg_execute_build_process( COMMAND make -j$(nproc) install - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/v18.16.0-e8bd828d3a.clean + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${NODE_SOURCE_DIRECTORY_NAME} LOGNAME "install-node" ) endif () From df4621b1621d84c5d0f809a2f81c8ad8b2751ac3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Gro=C3=9F?= Date: Mon, 19 Jun 2023 12:49:14 +0200 Subject: [PATCH 7/7] Get rid of need for NODE_SOURCE_DIRECTORY_NAME --- cmake/ports/node/portfile.cmake | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/cmake/ports/node/portfile.cmake b/cmake/ports/node/portfile.cmake index c3b6397181..b231d5faf8 100644 --- a/cmake/ports/node/portfile.cmake +++ b/cmake/ports/node/portfile.cmake @@ -33,45 +33,43 @@ else () SHA512 9b983b899acd02e7ed761bc3633fc56855e10335fcdb558a29d1cf068ce1125991c9a781616d82a9dc90be6e8ba1bf4a34a10a92c6b7db9cbe33ef7fa7dda67f HEAD_REF v18.16.0 ) - # v18.16.0-e8bd828d3a.clean is getting added by VCPKG. It will need to be updated when we update libnode version. - set(NODE_SOURCE_DIRECTORY_NAME "v18.16.0-e8bd828d3a.clean") - file(COPY ${SOURCE_PATH} DESTINATION "${CURRENT_BUILDTREES_DIR}") + file(COPY ${SOURCE_PATH}/ DESTINATION "${CURRENT_BUILDTREES_DIR}") vcpkg_execute_build_process( COMMAND ./configure --gdb --shared --v8-enable-object-print --shared-openssl --prefix=${CURRENT_BUILDTREES_DIR}/node-install/ - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${NODE_SOURCE_DIRECTORY_NAME} + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR} LOGNAME "configure-node" ) if(VCPKG_MAX_CONCURRENCY GREATER 0) vcpkg_execute_build_process( COMMAND make -j${VCPKG_MAX_CONCURRENCY} - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${NODE_SOURCE_DIRECTORY_NAME} + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR} LOGNAME "make-node" ) vcpkg_execute_build_process( COMMAND make -j${VCPKG_MAX_CONCURRENCY} install - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${NODE_SOURCE_DIRECTORY_NAME} + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR} LOGNAME "install-node" ) elseif (VCPKG_CONCURRENCY GREATER 0) vcpkg_execute_build_process( COMMAND make -j${VCPKG_CONCURRENCY} - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${NODE_SOURCE_DIRECTORY_NAME} + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR} LOGNAME "make-node" ) vcpkg_execute_build_process( COMMAND make -j${VCPKG_CONCURRENCY} install - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${NODE_SOURCE_DIRECTORY_NAME} + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR} LOGNAME "install-node" ) else () vcpkg_execute_build_process( COMMAND make -j$(nproc) - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${NODE_SOURCE_DIRECTORY_NAME} + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR} LOGNAME "make-node" ) vcpkg_execute_build_process( COMMAND make -j$(nproc) install - WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${NODE_SOURCE_DIRECTORY_NAME} + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR} LOGNAME "install-node" ) endif ()