mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-06 03:29:44 -06:00
Correctly redownload NodeJS when the requested version number changes
This commit is contained in:
@@ -25,6 +25,9 @@
|
||||
include(${PROJECT_SOURCE_DIR}/support/cmake/module_definition.cmake)
|
||||
include(../webbrowser/cmake/webbrowser_helpers.cmake)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
include(nodejs_support)
|
||||
|
||||
set(WEBGUI_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "WEBGUI_MODULE_PATH")
|
||||
|
||||
set(OPENSPACE_HEADER_FILES
|
||||
@@ -37,13 +40,7 @@ set(OPENSPACE_SOURCE_FILES
|
||||
)
|
||||
source_group("Source Files" FILES ${OPENSPACE_SOURCE_FILES})
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
|
||||
# Specify the NodeJs distribution version.
|
||||
set(NODEJS_VERSION "22.15.0")
|
||||
|
||||
include(nodejs_support)
|
||||
DownloadNodeJs("${NODEJS_VERSION}" "${CMAKE_CURRENT_SOURCE_DIR}/ext/nodejs")
|
||||
DownloadNodeJs("22.15.0" "${CMAKE_CURRENT_SOURCE_DIR}/ext/nodejs")
|
||||
|
||||
create_new_module(
|
||||
WebGui
|
||||
|
||||
@@ -31,60 +31,61 @@ function(DownloadNodeJs version download_dir)
|
||||
set(basename "node")
|
||||
set(filename "${basename}.exe")
|
||||
set(path "v${version}/win-x64/${filename}")
|
||||
endif ()
|
||||
if (APPLE)
|
||||
elseif (APPLE)
|
||||
set(basename "node-v${version}-darwin-x64")
|
||||
set(filename "${basename}.tar.gz")
|
||||
set(path "v${version}/${filename}")
|
||||
endif ()
|
||||
if (UNIX AND NOT APPLE)
|
||||
elseif (UNIX)
|
||||
set(basename "node-v${version}-linux-x64")
|
||||
set(filename "${basename}.tar.xz")
|
||||
set(path "v${version}/${filename}")
|
||||
endif ()
|
||||
|
||||
# Specify the binary distribution type and download directory.
|
||||
set(NODEJS_DOWNLOAD_DIR "${download_dir}")
|
||||
# Create the file if it doesn't exist
|
||||
file(TOUCH "${download_dir}/version.txt")
|
||||
|
||||
# The location where we expect the extracted binary distribution.
|
||||
set(NODEJS_ROOT "${NODEJS_DOWNLOAD_DIR}" CACHE INTERNAL "NODEJS_ROOT")
|
||||
# Read the file
|
||||
file(STRINGS "${download_dir}/version.txt" existing_version)
|
||||
|
||||
# Download and/or extract the binary distribution if necessary.
|
||||
if (NOT IS_DIRECTORY "${NODEJS_ROOT}")
|
||||
set(NODEJS_DOWNLOAD_SOURCE "v${version}/node-v${version}-${suffix}")
|
||||
set(NODEJS_DOWNLOAD_PATH "${NODEJS_DOWNLOAD_DIR}/${filename}")
|
||||
if (NOT EXISTS "${NODEJS_DOWNLOAD_PATH}")
|
||||
set(NODEJS_DOWNLOAD_URL "https://nodejs.org/dist/${path}")
|
||||
|
||||
# Download the binary distribution.
|
||||
message(STATUS "Downloading NodeJs: ${NODEJS_DOWNLOAD_PATH}...")
|
||||
file(DOWNLOAD "${NODEJS_DOWNLOAD_URL}" "${NODEJS_DOWNLOAD_PATH}" SHOW_PROGRESS)
|
||||
endif ()
|
||||
|
||||
message(STATUS "URL: ${NODEJS_DOWNLOAD_URL}")
|
||||
|
||||
# Extract the binary distribution for unix
|
||||
if (APPLE)
|
||||
# Apple uses tar.gz
|
||||
message(STATUS "Extracting NodeJs: ${NODEJS_DOWNLOAD_PATH} in ${NODEJS_DOWNLOAD_DIR}")
|
||||
execute_process(
|
||||
COMMAND tar xzf ${NODEJS_DOWNLOAD_PATH}
|
||||
WORKING_DIRECTORY ${NODEJS_DOWNLOAD_DIR}
|
||||
)
|
||||
endif ()
|
||||
if (UNIX AND NOT APPLE)
|
||||
# Linux uses tar.xz
|
||||
message(STATUS "Extracting NodeJs: ${NODEJS_DOWNLOAD_PATH} in ${NODEJS_DOWNLOAD_DIR}")
|
||||
execute_process(
|
||||
COMMAND tar xf ${NODEJS_DOWNLOAD_PATH}
|
||||
WORKING_DIRECTORY ${NODEJS_DOWNLOAD_DIR}
|
||||
)
|
||||
endif ()
|
||||
|
||||
if (UNIX)
|
||||
FILE(COPY ${NODEJS_DOWNLOAD_DIR}/${basename}/bin/node DESTINATION ${NODEJS_DOWNLOAD_DIR})
|
||||
FILE(REMOVE_RECURSE ${NODEJS_DOWNLOAD_DIR}/${basename})
|
||||
FILE(REMOVE ${NODEJS_DOWNLOAD_PATH})
|
||||
endif ()
|
||||
# Download and/or extract the binary distribution if necessary
|
||||
message("ex: ${existing_version}")
|
||||
message("ver: ${version}")
|
||||
if ("${existing_version}" STREQUAL "${version}")
|
||||
return()
|
||||
endif ()
|
||||
|
||||
set(NODEJS_DOWNLOAD_PATH "${download_dir}/${filename}")
|
||||
set(NODEJS_DOWNLOAD_URL "https://nodejs.org/dist/${path}")
|
||||
|
||||
# Download the binary distribution
|
||||
message(STATUS "Downloading NodeJs: ${NODEJS_DOWNLOAD_PATH}...")
|
||||
file(DOWNLOAD "${NODEJS_DOWNLOAD_URL}" "${NODEJS_DOWNLOAD_PATH}" SHOW_PROGRESS)
|
||||
|
||||
message(STATUS "URL: ${NODEJS_DOWNLOAD_URL}")
|
||||
|
||||
# Extract the binary distribution for unix
|
||||
if (APPLE)
|
||||
# Apple uses tar.gz
|
||||
message(STATUS "Extracting NodeJs: ${NODEJS_DOWNLOAD_PATH} in ${download_dir}")
|
||||
execute_process(
|
||||
COMMAND tar xzf ${NODEJS_DOWNLOAD_PATH}
|
||||
WORKING_DIRECTORY ${download_dir}
|
||||
)
|
||||
endif ()
|
||||
if (UNIX AND NOT APPLE)
|
||||
# Linux uses tar.xz
|
||||
message(STATUS "Extracting NodeJs: ${NODEJS_DOWNLOAD_PATH} in ${download_dir}")
|
||||
execute_process(
|
||||
COMMAND tar xf ${NODEJS_DOWNLOAD_PATH}
|
||||
WORKING_DIRECTORY ${download_dir}
|
||||
)
|
||||
endif ()
|
||||
|
||||
if (UNIX)
|
||||
FILE(COPY ${download_dir}/${basename}/bin/node DESTINATION ${download_dir})
|
||||
FILE(REMOVE_RECURSE ${download_dir}/${basename})
|
||||
FILE(REMOVE ${NODEJS_DOWNLOAD_PATH})
|
||||
endif ()
|
||||
|
||||
file(WRITE "${download_dir}/version.txt" "${version}")
|
||||
endfunction ()
|
||||
|
||||
Reference in New Issue
Block a user