From 23bb8fa32ecd590ae18f0da816fc7ca82c6514e0 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Wed, 25 Jan 2023 22:17:24 -0600 Subject: [PATCH] fix: detect NPM version for ENABLE_WEB in cmake (#4669) --- .github/workflows/actions.yml | 2 +- CMakeLists.txt | 41 +++++++++++++++++++++-------------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index e5e876cd5..c402d3199 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -22,7 +22,7 @@ jobs: make-source-tarball: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.any-code-changed == '1' }} make-tests: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.tests-changed == '1' }} make-utils: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.utils-changed == '1' || steps.check-diffs.outputs.tests-changed == '1' }} - make-web: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.web-changed == '1' }} + make-web: 'false' # this is handled in the webapp workflow test-style: ${{ steps.check-main-push.outputs.is-main-push == '1' || steps.check-diffs.outputs.our-code-changed == '1' }} steps: - name: Check Push to Main Branch diff --git a/CMakeLists.txt b/CMakeLists.txt index 93c41fd90..d84e30ab6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,6 +38,7 @@ set(GLIBMM_MINIMUM 2.60.0) set(GTKMM_MINIMUM 3.24.0) set(OPENSSL_MINIMUM 0.9.7) set(MBEDTLS_MINIMUM 1.3) +set(NPM_MINIMUM 8.1.307) # Node.js 14 set(PSL_MINIMUM 0.21.1) set(QT_MINIMUM 5.6) @@ -502,6 +503,30 @@ endif() tr_add_external_auto_library(B64 libb64 b64 TARGET libb64::libb64) +if(NOT ${ENABLE_WEB} STREQUAL "OFF") + find_program(NPM npm) + if ("${NPM}" STREQUAL "NPM-NOTFOUND") + if ("${ENABLE_WEB}" STREQUAL "ON") + message(FATAL_ERROR "Could NOT find NPM, minimum required is \"${NPM_MINIMUM}\"") + else() # AUTO + set(ENABLE_WEB OFF) + endif() + else() + execute_process(COMMAND "${NPM}" --version + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE NPM_VERSION_STRING) + if ("${NPM_VERSION_STRING}" VERSION_GREATER_EQUAL "${NPM_MINIMUM}") + message(STATUS "Found NPM: ${NPM} (found suitable version \"${NPM_VERSION_STRING}\", minimum required is \"${NPM_MINIMUM}\")") + set(ENABLE_WEB ON) + elseif ("${ENABLE_WEB}" STREQUAL "ON") + message(FATAL_ERROR "Found NPM: ${NPM} Found unsuitable version \"${NPM_VERSION_STRING}\", but required is at least \"${NPM_MINIMUM}\"") + else() # AUTO + message(STATUS "Found NPM: ${NPM} Found unsuitable version \"${NPM_VERSION_STRING}\", but required is at least \"${NPM_MINIMUM}\"") + set(ENABLE_WEB OFF) + endif() + endif() +endif() + if(WITH_INOTIFY) tr_get_required_flag(WITH_INOTIFY INOTIFY_IS_REQUIRED) @@ -724,22 +749,6 @@ if(ENABLE_GTK AND ENABLE_NLS) add_subdirectory(po) endif() -if("${ENABLE_WEB}" STREQUAL "AUTO") - message(STATUS "searching for npm") - find_program(NPM npm) - message(STATUS "searching for npm - ${NPM}") - if ("${NPM}" STREQUAL "NPM-NOTFOUND") - set(ENABLE_WEB OFF) - else() - set(ENABLE_WEB ON) - endif() -endif() -if ("${ENABLE_WEB}" STREQUAL "ON") - message(STATUS "searching for npm") - find_program(NPM npm REQUIRED) - message(STATUS "searching for npm - ${NPM}") -endif() - foreach(P cli daemon gtk mac qt utils web) string(TOUPPER "${P}" P_ID) if(ENABLE_${P_ID})