Skip to content

Commit ea40ba9

Browse files
committed
Remove disable variables for trampoline and bootstrap, and add a new variable for disabling all unreproductible steps from the build system.
1 parent 531eb1d commit ea40ba9

File tree

6 files changed

+76
-37
lines changed

6 files changed

+76
-37
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ option(OPTION_BUILD_DETOURS "Build detours." ON)
8484
option(OPTION_BUILD_PORTS "Build ports." OFF)
8585
option(OPTION_BUILD_PIC "Build with position independent code." ON)
8686
option(OPTION_BUILD_SECURITY "Build with stack-smashing protection and source fortify." ON)
87+
option(OPTION_BUILD_GUIX "Disable all build system unreproductible operations." ON)
8788
option(OPTION_FORK_SAFE "Enable fork safety." ON)
8889
option(OPTION_THREAD_SAFE "Enable thread safety." OFF)
8990
option(OPTION_COVERAGE "Enable coverage." OFF)

source/distributable/CMakeLists.txt

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -161,11 +161,13 @@ target_link_libraries(${target}
161161

162162
# Register Library
163163
if(UNIX)
164-
add_custom_command(
165-
TARGET ${target}
166-
POST_BUILD
167-
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/source/ldconfig.sh ${CMAKE_BINARY_DIR}/distributable
168-
)
164+
if(NOT OPTION_BUILD_GUIX)
165+
add_custom_command(
166+
TARGET ${target}
167+
POST_BUILD
168+
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/source/ldconfig.sh ${CMAKE_BINARY_DIR}/distributable
169+
)
170+
endif()
169171
endif()
170172

171173
#
@@ -182,7 +184,9 @@ install(TARGETS ${target}
182184

183185
# Register Library
184186
if(UNIX)
185-
install(CODE "execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/source/ldconfig.sh ${CMAKE_INSTALL_PREFIX}/${INSTALL_BIN})")
186-
install(CODE "execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/source/ldconfig.sh ${CMAKE_INSTALL_PREFIX}/${INSTALL_SHARED})")
187-
install(CODE "execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/source/ldconfig.sh ${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB})")
187+
if(NOT OPTION_BUILD_GUIX)
188+
install(CODE "execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/source/ldconfig.sh ${CMAKE_INSTALL_PREFIX}/${INSTALL_BIN})")
189+
install(CODE "execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/source/ldconfig.sh ${CMAKE_INSTALL_PREFIX}/${INSTALL_SHARED})")
190+
install(CODE "execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/source/ldconfig.sh ${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB})")
191+
endif()
188192
endif()

source/loaders/node_loader/bootstrap/CMakeLists.txt

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Check if this loader is enabled
2-
if(NOT OPTION_BUILD_LOADERS OR NOT OPTION_BUILD_LOADERS_NODE OR DISABLE_BUILD_LOADERS_NODE_BOOTSTRAP)
2+
if(NOT OPTION_BUILD_LOADERS OR NOT OPTION_BUILD_LOADERS_NODE)
33
return()
44
endif()
55

@@ -23,13 +23,20 @@ else()
2323
set(LOADER_LIBRARY_PATH "${PROJECT_BINARY_DIR}")
2424
endif()
2525

26-
add_custom_target(${target} ALL
27-
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
28-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/lib/bootstrap.js ${LOADER_LIBRARY_PATH}
29-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/lib/package.json ${LOADER_LIBRARY_PATH}
30-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/lib/package-lock.json ${LOADER_LIBRARY_PATH}
31-
COMMAND npm install
32-
)
26+
if(OPTION_BUILD_GUIX)
27+
add_custom_target(${target} ALL
28+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
29+
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/lib/bootstrap.js ${LOADER_LIBRARY_PATH}
30+
)
31+
else()
32+
add_custom_target(${target} ALL
33+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
34+
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/lib/bootstrap.js ${LOADER_LIBRARY_PATH}
35+
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/lib/package.json ${LOADER_LIBRARY_PATH}
36+
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/lib/package-lock.json ${LOADER_LIBRARY_PATH}
37+
COMMAND npm install
38+
)
39+
endif()
3340

3441
#
3542
# Project options

source/loaders/node_loader/trampoline/CMakeLists.txt

Lines changed: 39 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Check if this loader is enabled
2-
if(NOT OPTION_BUILD_LOADERS OR NOT OPTION_BUILD_LOADERS_NODE OR DISABLE_BUILD_LOADERS_NODE_TRAMPOLINE)
2+
if(NOT OPTION_BUILD_LOADERS OR NOT OPTION_BUILD_LOADERS_NODE)
33
return()
44
endif()
55

@@ -37,14 +37,25 @@ if(MSVC)
3737
set(NODE_LOADER_TRAMPOLINE_MSVS_VERSION 2017)
3838
endif()
3939

40-
add_custom_target(${target} ALL
41-
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
42-
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
43-
COMMAND npm config set msvs_version ${NODE_LOADER_TRAMPOLINE_MSVS_VERSION}
44-
COMMAND npm install --msvs_version=${NODE_LOADER_TRAMPOLINE_MSVS_VERSION}
45-
COMMAND node-gyp ${NODE_LOADER_TRAMPOLINE_BUILD_TYPE} rebuild --verbose
46-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/build/${CMAKE_BUILD_TYPE}/trampoline.node ${LOADER_LIBRARY_PATH}
47-
)
40+
if(OPTION_BUILD_GUIX)
41+
add_custom_target(${target} ALL
42+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
43+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
44+
COMMAND npm config set msvs_version ${NODE_LOADER_TRAMPOLINE_MSVS_VERSION}
45+
# COMMAND npm install --msvs_version=${NODE_LOADER_TRAMPOLINE_MSVS_VERSION}
46+
COMMAND node-gyp ${NODE_LOADER_TRAMPOLINE_BUILD_TYPE} rebuild --verbose
47+
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/build/${CMAKE_BUILD_TYPE}/trampoline.node ${LOADER_LIBRARY_PATH}
48+
)
49+
else()
50+
add_custom_target(${target} ALL
51+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
52+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
53+
COMMAND npm config set msvs_version ${NODE_LOADER_TRAMPOLINE_MSVS_VERSION}
54+
COMMAND npm install --msvs_version=${NODE_LOADER_TRAMPOLINE_MSVS_VERSION}
55+
COMMAND node-gyp ${NODE_LOADER_TRAMPOLINE_BUILD_TYPE} rebuild --verbose
56+
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/build/${CMAKE_BUILD_TYPE}/trampoline.node ${LOADER_LIBRARY_PATH}
57+
)
58+
endif()
4859

4960
set(target_binding "${target}_binding")
5061

@@ -58,13 +69,25 @@ if(MSVC)
5869

5970
add_dependencies(${target_binding} ${target})
6071
else()
61-
add_custom_target(${target} ALL
62-
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
63-
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
64-
COMMAND npm install
65-
COMMAND node-gyp ${NODE_LOADER_TRAMPOLINE_BUILD_TYPE} rebuild --verbose
66-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/build/${CMAKE_BUILD_TYPE}/trampoline.node ${LOADER_LIBRARY_PATH}
67-
)
72+
73+
if(OPTION_BUILD_GUIX)
74+
add_custom_target(${target} ALL
75+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
76+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
77+
# COMMAND npm install
78+
COMMAND node-gyp ${NODE_LOADER_TRAMPOLINE_BUILD_TYPE} rebuild --verbose
79+
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/build/${CMAKE_BUILD_TYPE}/trampoline.node ${LOADER_LIBRARY_PATH}
80+
)
81+
else()
82+
add_custom_target(${target} ALL
83+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
84+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
85+
COMMAND npm install
86+
COMMAND node-gyp ${NODE_LOADER_TRAMPOLINE_BUILD_TYPE} rebuild --verbose
87+
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/build/${CMAKE_BUILD_TYPE}/trampoline.node ${LOADER_LIBRARY_PATH}
88+
)
89+
endif()
90+
6891
endif()
6992

7093
#

source/ports/node_port/CMakeLists.txt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,12 @@ set_target_properties(${target}
133133
# Include directories
134134
#
135135

136-
execute_process(
137-
COMMAND npm install
138-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
139-
)
136+
if(NOT OPTION_BUILD_GUIX)
137+
execute_process(
138+
COMMAND npm install
139+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
140+
)
141+
endif()
140142

141143
execute_process(
142144
COMMAND node -p "require('node-addon-api').include"

source/ports/py_port/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,9 @@ install(EXPORT ${target}-export
280280
# TODO: This is a nasty mock. It only will work if python port library (binary) is already installed and the
281281
# environment variable correctly set up. This must be removed when metacall is correctly distributed
282282
# and we can automate all distributions for all architectures, operative systems and all ports for all languages
283-
install(CODE "execute_process(COMMAND pip3 install ${CMAKE_CURRENT_SOURCE_DIR}/package)")
283+
if(NOT OPTION_BUILD_GUIX)
284+
install(CODE "execute_process(COMMAND pip3 install ${CMAKE_CURRENT_SOURCE_DIR}/package)")
285+
endif()
284286

285287
#
286288
# Configure test

0 commit comments

Comments
 (0)