From 830bb3b637c90fc7f5d8f77336f00cb51d90bdde Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Tue, 25 Mar 2025 18:26:59 +0100 Subject: [PATCH 01/68] Extended dynlink for getting symbols of the executable. --- source/dynlink/include/dynlink/dynlink.h | 24 ++++ .../dynlink/include/dynlink/dynlink_flags.h | 2 + source/dynlink/source/dynlink.c | 40 +++++- source/dynlink/source/dynlink_impl_beos.c | 36 +++-- source/dynlink/source/dynlink_impl_macos.c | 135 ++++++++++++------ source/dynlink/source/dynlink_impl_unix.c | 29 ++-- source/dynlink/source/dynlink_impl_win32.c | 26 +++- .../dynlink_test/source/dynlink_test.cpp | 37 ++++- 8 files changed, 260 insertions(+), 69 deletions(-) diff --git a/source/dynlink/include/dynlink/dynlink.h b/source/dynlink/include/dynlink/dynlink.h index 28080638a..57bea7ab5 100644 --- a/source/dynlink/include/dynlink/dynlink.h +++ b/source/dynlink/include/dynlink/dynlink.h @@ -78,6 +78,18 @@ DYNLINK_API dynlink dynlink_load(dynlink_path path, dynlink_name name, dynlink_f */ DYNLINK_API dynlink dynlink_load_absolute(dynlink_path path, dynlink_flags flags); +/** +* @brief +* Get the reference of the current process +* +* @param[in] flags +* Dynamic linking flags +* +* @return +* A handle to the current process +*/ +DYNLINK_API dynlink dynlink_load_self(dynlink_flags flags); + /** * @brief * Retreive the name of the dynamically linked shared object @@ -114,6 +126,18 @@ DYNLINK_API dynlink_name dynlink_get_name_impl(dynlink handle); */ DYNLINK_API dynlink_flags dynlink_get_flags(dynlink handle); +/** +* @brief +* Retreive the internal representation of the dynamically linked shared object +* +* @param[in] handle +* Handle of dynamically linked shared object +* +* @return +* The implementation dependant handle representing the dynamically linked shared object +*/ +DYNLINK_API dynlink_impl dynlink_get_impl(dynlink handle); + /** * @brief * Get a symbol address of dynamically linked shared object by name diff --git a/source/dynlink/include/dynlink/dynlink_flags.h b/source/dynlink/include/dynlink/dynlink_flags.h index 2f64619e7..f72708a27 100644 --- a/source/dynlink/include/dynlink/dynlink_flags.h +++ b/source/dynlink/include/dynlink/dynlink_flags.h @@ -36,6 +36,8 @@ extern "C" { #define DYNLINK_FLAGS_BIND_LOCAL (0x01 << 0x02) /**< Private visibility bind flag */ #define DYNLINK_FLAGS_BIND_GLOBAL (0x01 << 0x03) /**< Public visibility bind flag */ +#define DYNLINK_FLAGS_BIND_SELF (0x01 << 0x10) /**< Private flag for when loading the current process */ + /* -- Macros -- */ /** diff --git a/source/dynlink/source/dynlink.c b/source/dynlink/source/dynlink.c index 16266c163..57a70b238 100644 --- a/source/dynlink/source/dynlink.c +++ b/source/dynlink/source/dynlink.c @@ -25,6 +25,7 @@ #include #include +#include #include #include @@ -74,7 +75,7 @@ dynlink dynlink_load(dynlink_path path, dynlink_name name, dynlink_flags flags) strncpy(handle->name_impl, name_impl, strnlen(name_impl, PORTABILITY_PATH_SIZE) + 1); } - handle->flags = flags; + DYNLINK_FLAGS_SET(handle->flags, flags); handle->impl = dynlink_impl_load(handle); @@ -101,7 +102,7 @@ dynlink dynlink_load_absolute(dynlink_path path, dynlink_flags flags) strncpy(handle->name_impl, path, strnlen(path, PORTABILITY_PATH_SIZE) + 1); - handle->flags = flags; + DYNLINK_FLAGS_SET(handle->flags, flags); handle->impl = dynlink_impl_load(handle); @@ -114,6 +115,31 @@ dynlink dynlink_load_absolute(dynlink_path path, dynlink_flags flags) return handle; } +dynlink dynlink_load_self(dynlink_flags flags) +{ + portability_executable_path_length path_length; + dynlink handle = malloc(sizeof(struct dynlink_type)); + + if (handle == NULL) + { + return NULL; + } + + portability_executable_path(handle->name_impl, &path_length); + portability_path_get_name(handle->name_impl, path_length + 1, handle->name, PORTABILITY_PATH_SIZE); + DYNLINK_FLAGS_SET(handle->flags, flags); + DYNLINK_FLAGS_ADD(handle->flags, DYNLINK_FLAGS_BIND_SELF); + handle->impl = dynlink_impl_load(handle); + + if (handle->impl == NULL) + { + free(handle); + return NULL; + } + + return handle; +} + dynlink_name dynlink_get_name(dynlink handle) { if (handle != NULL) @@ -144,6 +170,16 @@ dynlink_flags dynlink_get_flags(dynlink handle) return 0; } +dynlink_impl dynlink_get_impl(dynlink handle) +{ + if (handle != NULL) + { + return handle->impl; + } + + return NULL; +} + int dynlink_symbol(dynlink handle, dynlink_symbol_name symbol_name, dynlink_symbol_addr *symbol_address) { if (handle != NULL && handle->impl != NULL && symbol_name != NULL && symbol_address != NULL) diff --git a/source/dynlink/source/dynlink_impl_beos.c b/source/dynlink/source/dynlink_impl_beos.c index 7f9adbbae..6a5e225f1 100644 --- a/source/dynlink/source/dynlink_impl_beos.c +++ b/source/dynlink/source/dynlink_impl_beos.c @@ -52,23 +52,33 @@ void dynlink_impl_interface_get_name_beos(dynlink_name name, dynlink_name_impl n dynlink_impl dynlink_impl_interface_load_beos(dynlink handle) { dynlink_flags flags = dynlink_get_flags(handle); + image_id impl = 0; - int flags_impl; - - image_id impl; + if (DYNLINK_FLAGS_CHECK(flags, DYNLINK_FLAGS_BIND_SELF)) + { + image_info info; + int32 cookie = 0; - DYNLINK_FLAGS_SET(flags_impl, 0); + if (get_next_image_info(0, &cookie, &info) != B_OK) + { + log_write("metacall", LOG_LEVEL_ERROR, "DynLink error: failed to load BeOS/Haiku image add-on on current executable"); + return NULL; + } - impl = load_add_on(dynlink_get_name_impl(handle)); + impl = load_add_on(info.name); + } + else + { + impl = load_add_on(dynlink_get_name_impl(handle)); + } if (impl < B_NO_ERROR) { - return (dynlink_impl)impl; + log_write("metacall", LOG_LEVEL_ERROR, "DynLink error: failed to load BeOS/Haiku image add-on with error code %d", (int)impl); + return NULL; } - log_write("metacall", LOG_LEVEL_ERROR, "DynLink error: failed to load BeOS/Haiku image add-on"); - - return NULL; + return (dynlink_impl)impl; } int dynlink_impl_interface_symbol_beos(dynlink handle, dynlink_impl impl, dynlink_symbol_name name, dynlink_symbol_addr *addr) @@ -92,8 +102,16 @@ int dynlink_impl_interface_symbol_beos(dynlink handle, dynlink_impl impl, dynlin int dynlink_impl_interface_unload_beos(dynlink handle, dynlink_impl impl) { + dynlink_flags flags = dynlink_get_flags(handle); + (void)handle; + /* Skip unlink when using global handle for loading symbols of the current process */ + if (DYNLINK_FLAGS_CHECK(flags, DYNLINK_FLAGS_BIND_SELF)) + { + return 0; + } + #if defined(__MEMORYCHECK__) || defined(__ADDRESS_SANITIZER__) || defined(__THREAD_SANITIZER__) || defined(__MEMORY_SANITIZER__) /* Disable dlclose when running with address sanitizer in order to maintain stacktraces */ (void)impl; diff --git a/source/dynlink/source/dynlink_impl_macos.c b/source/dynlink/source/dynlink_impl_macos.c index 4cfe04209..b09c8e078 100644 --- a/source/dynlink/source/dynlink_impl_macos.c +++ b/source/dynlink/source/dynlink_impl_macos.c @@ -32,6 +32,10 @@ #include +/* -- Member Data -- */ + +static void *dynlink_impl_global_handle_macos = NULL; + /* -- Methods -- */ const char *dynlink_impl_interface_extension_macos(void) @@ -53,65 +57,69 @@ void dynlink_impl_interface_get_name_macos(dynlink_name name, dynlink_name_impl dynlink_impl dynlink_impl_interface_load_macos(dynlink handle) { dynlink_flags flags = dynlink_get_flags(handle); - - unsigned long flags_impl; - - NSObjectFileImage image; - NSModule impl; - const char *name = dynlink_get_name_impl(handle); - - NSObjectFileImageReturnCode ret = NSCreateObjectFileImageFromFile(name, &image); - - if (ret != NSObjectFileImageSuccess) + if (!DYNLINK_FLAGS_CHECK(flags, DYNLINK_FLAGS_BIND_SELF)) { - char *error; + unsigned long flags_impl; + NSObjectFileImage image; + const char *name = dynlink_get_name_impl(handle); + NSObjectFileImageReturnCode ret = NSCreateObjectFileImageFromFile(name, &image); - switch (ret) + if (ret != NSObjectFileImageSuccess) { - case NSObjectFileImageAccess: - if (access(name, F_OK) == 0) - { - error = "DynLink error: %s permission denied"; - } - else - { - error = "DynLink error: %s no such file or directory"; - } - case NSObjectFileImageArch: - error = "DynLink error: %s is not built for the current architecture"; - break; - case NSObjectFileImageInappropriateFile: - case NSObjectFileImageFormat: - error = "DynLink error: %s is not a loadable module"; - break; - default: - error = "DynLink error: unknown error for %s"; - break; + char *error; + + switch (ret) + { + case NSObjectFileImageAccess: + if (access(name, F_OK) == 0) + { + error = "DynLink error: %s permission denied"; + } + else + { + error = "DynLink error: %s no such file or directory"; + } + case NSObjectFileImageArch: + error = "DynLink error: %s is not built for the current architecture"; + break; + case NSObjectFileImageInappropriateFile: + case NSObjectFileImageFormat: + error = "DynLink error: %s is not a loadable module"; + break; + default: + error = "DynLink error: unknown error for %s"; + break; + } + + log_write("metacall", LOG_LEVEL_ERROR, error, name); + + return NULL; } - log_write("metacall", LOG_LEVEL_ERROR, error, name); + DYNLINK_FLAGS_SET(flags_impl, NSLINKMODULE_OPTION_RETURN_ON_ERROR); - return NULL; - } + if (DYNLINK_FLAGS_CHECK(flags, DYNLINK_FLAGS_BIND_LOCAL)) + { + DYNLINK_FLAGS_ADD(flags_impl, NSLINKMODULE_OPTION_PRIVATE); + } + + if (!DYNLINK_FLAGS_CHECK(flags, DYNLINK_FLAGS_BIND_LAZY)) + { + DYNLINK_FLAGS_ADD(flags_impl, NSLINKMODULE_OPTION_BINDNOW); + } - DYNLINK_FLAGS_SET(flags_impl, NSLINKMODULE_OPTION_RETURN_ON_ERROR); + impl = NSLinkModule(image, name, flags_impl); - if (DYNLINK_FLAGS_CHECK(flags, DYNLINK_FLAGS_BIND_LOCAL)) - { - DYNLINK_FLAGS_ADD(flags_impl, NSLINKMODULE_OPTION_PRIVATE); + NSDestroyObjectFileImage(image); } - - if (!DYNLINK_FLAGS_CHECK(flags, DYNLINK_FLAGS_BIND_LAZY)) + else { - DYNLINK_FLAGS_ADD(flags_impl, NSLINKMODULE_OPTION_BINDNOW); + /* We return this for identifying the global handle when loading symbols of the current process */ + impl = (void *)(&dynlink_impl_global_handle_macos); } - impl = NSLinkModule(image, name, flags_impl); - - NSDestroyObjectFileImage(image); - if (impl == NULL) { NSLinkEditErrors link_edit_errors; @@ -132,11 +140,30 @@ dynlink_impl dynlink_impl_interface_load_macos(dynlink handle) int dynlink_impl_interface_symbol_macos(dynlink handle, dynlink_impl impl, dynlink_symbol_name name, dynlink_symbol_addr *addr) { - NSSymbol symbol = NSLookupSymbolInModule(impl, name); - void *symbol_addr = NSAddressOfSymbol(symbol); + dynlink_flags flags = dynlink_get_flags(handle); + NSSymbol symbol; + void *symbol_addr; (void)handle; + /* Skip unlink when using global handle for loading symbols of the current process */ + if (DYNLINK_FLAGS_CHECK(flags, DYNLINK_FLAGS_BIND_SELF)) + { + /* Global context, use NSLookupAndBindSymbol */ + if (!NSIsSymbolNameDefined(name)) + { + return 1; + } + + symbol = NSLookupAndBindSymbol(name); + } + else + { + symbol = NSLookupSymbolInModule(impl, name); + } + + symbol_addr = NSAddressOfSymbol(symbol); + dynlink_symbol_cast(void *, symbol_addr, *addr); return (*addr == NULL); @@ -144,9 +171,23 @@ int dynlink_impl_interface_symbol_macos(dynlink handle, dynlink_impl impl, dynli int dynlink_impl_interface_unload_macos(dynlink handle, dynlink_impl impl) { + dynlink_flags flags = dynlink_get_flags(handle); + (void)handle; + /* Skip unlink when using global handle for loading symbols of the current process */ + if (DYNLINK_FLAGS_CHECK(flags, DYNLINK_FLAGS_BIND_SELF)) + { + return 0; + } + +#if defined(__MEMORYCHECK__) || defined(__ADDRESS_SANITIZER__) || defined(__THREAD_SANITIZER__) || defined(__MEMORY_SANITIZER__) + /* Disable dlclose when running with address sanitizer in order to maintain stacktraces */ + (void)impl; + return 0; +#else return NSUnLinkModule(impl, 0) == TRUE ? 0 : 1; +#endif } dynlink_impl_interface dynlink_impl_interface_singleton(void) diff --git a/source/dynlink/source/dynlink_impl_unix.c b/source/dynlink/source/dynlink_impl_unix.c index 8892797f9..0354ecce7 100644 --- a/source/dynlink/source/dynlink_impl_unix.c +++ b/source/dynlink/source/dynlink_impl_unix.c @@ -60,9 +60,7 @@ void dynlink_impl_interface_get_name_unix(dynlink_name name, dynlink_name_impl n dynlink_impl dynlink_impl_interface_load_unix(dynlink handle) { dynlink_flags flags = dynlink_get_flags(handle); - int flags_impl; - void *impl; DYNLINK_FLAGS_SET(flags_impl, 0); @@ -87,16 +85,23 @@ dynlink_impl dynlink_impl_interface_load_unix(dynlink handle) DYNLINK_FLAGS_ADD(flags_impl, RTLD_GLOBAL); } - impl = dlopen(dynlink_get_name_impl(handle), flags_impl); - - if (impl != NULL) + if (DYNLINK_FLAGS_CHECK(flags, DYNLINK_FLAGS_BIND_SELF)) { - return (dynlink_impl)impl; + impl = dlopen(NULL, flags_impl); + } + else + { + impl = dlopen(dynlink_get_name_impl(handle), flags_impl); } - log_write("metacall", LOG_LEVEL_ERROR, "DynLink error: %s", dlerror()); + if (impl == NULL) + { + log_write("metacall", LOG_LEVEL_ERROR, "DynLink error: %s", dlerror()); - return NULL; + return NULL; + } + + return (dynlink_impl)impl; } int dynlink_impl_interface_symbol_unix(dynlink handle, dynlink_impl impl, dynlink_symbol_name name, dynlink_symbol_addr *addr) @@ -112,8 +117,16 @@ int dynlink_impl_interface_symbol_unix(dynlink handle, dynlink_impl impl, dynlin int dynlink_impl_interface_unload_unix(dynlink handle, dynlink_impl impl) { + dynlink_flags flags = dynlink_get_flags(handle); + (void)handle; + /* Skip unlink when using global handle for loading symbols of the current process */ + if (DYNLINK_FLAGS_CHECK(flags, DYNLINK_FLAGS_BIND_SELF)) + { + return 0; + } + #if defined(__MEMORYCHECK__) || defined(__ADDRESS_SANITIZER__) || defined(__THREAD_SANITIZER__) || defined(__MEMORY_SANITIZER__) /* Disable dlclose when running with valgrind or sanitizers in order to maintain stacktraces */ (void)impl; diff --git a/source/dynlink/source/dynlink_impl_win32.c b/source/dynlink/source/dynlink_impl_win32.c index 8009aea54..5d0af2a0e 100644 --- a/source/dynlink/source/dynlink_impl_win32.c +++ b/source/dynlink/source/dynlink_impl_win32.c @@ -56,7 +56,17 @@ void dynlink_impl_interface_get_name_win32(dynlink_name name, dynlink_name_impl dynlink_impl dynlink_impl_interface_load_win32(dynlink handle) { - HANDLE impl = LoadLibrary(dynlink_get_name_impl(handle)); + HMODULE impl; + dynlink_flags flags = dynlink_get_flags(handle); + + if (DYNLINK_FLAGS_CHECK(flags, DYNLINK_FLAGS_BIND_SELF)) + { + impl = GetModuleHandle(NULL); + } + else + { + impl = LoadLibrary(dynlink_get_name_impl(handle)); + } if (impl == NULL) { @@ -89,9 +99,23 @@ int dynlink_impl_interface_symbol_win32(dynlink handle, dynlink_impl impl, dynli int dynlink_impl_interface_unload_win32(dynlink handle, dynlink_impl impl) { + dynlink_flags flags = dynlink_get_flags(handle); + (void)handle; + /* Skip unlink when using global handle for loading symbols of the current process */ + if (DYNLINK_FLAGS_CHECK(flags, DYNLINK_FLAGS_BIND_SELF)) + { + return 0; + } + +#if defined(__MEMORYCHECK__) || defined(__ADDRESS_SANITIZER__) || defined(__THREAD_SANITIZER__) || defined(__MEMORY_SANITIZER__) + /* Disable dlclose when running with address sanitizer in order to maintain stacktraces */ + (void)impl; + return 0; +#else return (FreeLibrary(impl) == FALSE); +#endif } dynlink_impl_interface dynlink_impl_interface_singleton(void) diff --git a/source/tests/dynlink_test/source/dynlink_test.cpp b/source/tests/dynlink_test/source/dynlink_test.cpp index ed6aec997..ae8813715 100644 --- a/source/tests/dynlink_test/source/dynlink_test.cpp +++ b/source/tests/dynlink_test/source/dynlink_test.cpp @@ -35,6 +35,19 @@ class dynlink_test : public testing::Test protected: }; +#ifdef _WIN32 + #define EXPORT_SYMBOL __declspec(dllexport) +#else + #define EXPORT_SYMBOL __attribute__((visibility("default"))) +#endif + +extern "C" EXPORT_SYMBOL int function_from_current_executable(void) +{ + log_write("metacall", LOG_LEVEL_INFO, "function_from_current_executable"); + + return 48; +} + TEST_F(dynlink_test, DefaultConstructor) { EXPECT_EQ((int)0, (int)log_configure("metacall", @@ -47,6 +60,7 @@ TEST_F(dynlink_test, DefaultConstructor) log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object extension: %s", dynlink_extension()); + /* Test library loading */ { #if (!defined(NDEBUG) || defined(DEBUG) || defined(_DEBUG) || defined(__DEBUG) || defined(__DEBUG__)) const char library_name[] = "mock_loaderd"; @@ -60,13 +74,13 @@ TEST_F(dynlink_test, DefaultConstructor) environment_variable_path_destroy(path); - EXPECT_NE(handle, (dynlink)NULL); + ASSERT_NE(handle, (dynlink)NULL); log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file: %s", dynlink_get_name_impl(handle)); if (handle != NULL) { - static dynlink_symbol_addr mock_loader_print_info_addr; + dynlink_symbol_addr mock_loader_print_info_addr; EXPECT_EQ((int)0, dynlink_symbol(handle, "mock_loader_print_info", &mock_loader_print_info_addr)); @@ -89,4 +103,23 @@ TEST_F(dynlink_test, DefaultConstructor) dynlink_unload(handle); } } + + /* Test loading symbols from current process */ + { + dynlink proc = dynlink_load_self(DYNLINK_FLAGS_BIND_GLOBAL | DYNLINK_FLAGS_BIND_LAZY); + + ASSERT_NE((dynlink)proc, (dynlink)(NULL)); + + dynlink_symbol_addr addr; + + EXPECT_EQ((int)0, dynlink_symbol(proc, "function_from_current_executable", &addr)); + + ASSERT_NE((dynlink)proc, (dynlink)(NULL)); + + int (*fn_ptr)(void) = (int (*)(void))addr; + + EXPECT_EQ((int)48, fn_ptr()); + + dynlink_unload(proc); /* Should do nothing except by freeing the handle */ + } } From a50b5a98cb84ad679a0dc97d5b941961638cc044 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Tue, 25 Mar 2025 21:37:04 +0100 Subject: [PATCH 02/68] Add base of plthook. --- .github/workflows/benchmark.yml | 2 - .github/workflows/macos-test.yml | 4 +- .github/workflows/windows-test.yml | 2 +- NOTICE | 10 +- docker-compose.test.yml | 2 +- docker-compose.yml | 2 +- docs/README.md | 8 +- source/detour/include/detour/detour.h | 90 +++++++++-- .../detour/include/detour/detour_interface.h | 13 +- source/detour/source/detour.c | 113 +++++++++---- source/detours/CMakeLists.txt | 4 +- .../funchook_detour/funchook_detour_impl.h | 92 ----------- .../funchook_detour/source/funchook_detour.c | 45 ------ .../source/funchook_detour_impl.c | 78 --------- .../CMakeLists.txt | 83 +++------- .../include/plthook_detour/plthook_detour.h} | 12 +- .../plthook_detour/plthook_detour_impl.h | 151 ++++++++++++++++++ .../plthook_detour/source/plthook_detour.c | 48 ++++++ .../source/plthook_detour_impl.c | 122 ++++++++++++++ source/dynlink/source/dynlink_impl_unix.c | 3 + source/metacall/source/metacall.c | 2 +- source/tests/detour_test/CMakeLists.txt | 10 +- .../tests/detour_test/source/detour_test.cpp | 31 ++-- .../tests/metacall_fork_test/CMakeLists.txt | 2 +- tools/metacall-environment.ps1 | 4 - tools/metacall-environment.sh | 15 -- tools/metacall-sanitizer.sh | 2 +- 27 files changed, 567 insertions(+), 383 deletions(-) delete mode 100644 source/detours/funchook_detour/include/funchook_detour/funchook_detour_impl.h delete mode 100644 source/detours/funchook_detour/source/funchook_detour.c delete mode 100644 source/detours/funchook_detour/source/funchook_detour_impl.c rename source/detours/{funchook_detour => plthook_detour}/CMakeLists.txt (50%) rename source/detours/{funchook_detour/include/funchook_detour/funchook_detour.h => plthook_detour/include/plthook_detour/plthook_detour.h} (80%) create mode 100644 source/detours/plthook_detour/include/plthook_detour/plthook_detour_impl.h create mode 100644 source/detours/plthook_detour/source/plthook_detour.c create mode 100644 source/detours/plthook_detour/source/plthook_detour_impl.c diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 33349ce4d..928da375a 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -56,12 +56,10 @@ jobs: - name: Build working-directory: ./build - # TODO: Remove the disable option for fork safe once funchook problem is solved run: | if [ "$(uname)" == "Darwin" ]; then . .env fi - cmake -DOPTION_FORK_SAFE=OFF .. bash ../tools/metacall-build.sh $METACALL_BUILD_OPTIONS env: METACALL_BUILD_OPTIONS: release benchmarks diff --git a/.github/workflows/macos-test.yml b/.github/workflows/macos-test.yml index 64a768757..c98f66f09 100644 --- a/.github/workflows/macos-test.yml +++ b/.github/workflows/macos-test.yml @@ -77,7 +77,7 @@ jobs: - name: Set up the environment run: sh ./tools/metacall-environment.sh $METACALL_INSTALL_OPTIONS env: - METACALL_INSTALL_OPTIONS: base python nodejs typescript java ruby wasm rpc file cobol go backtrace #netcore5 c rust rapidjson funchook swig pack # clangformat v8rep51 coverage + METACALL_INSTALL_OPTIONS: base python nodejs typescript java ruby wasm rpc file cobol go backtrace #netcore5 c rust rapidjson swig pack # clangformat v8rep51 coverage - name: Configure run: | @@ -89,10 +89,8 @@ jobs: - name: Build working-directory: ./build - # TODO: Remove the disable option for fork safe once funchook problem is solved run: | . .env - cmake -DOPTION_FORK_SAFE=OFF .. bash ../tools/metacall-build.sh $METACALL_BUILD_OPTIONS env: METACALL_BUILD_OPTIONS: ${{ matrix.options.build }} tests diff --git a/.github/workflows/windows-test.yml b/.github/workflows/windows-test.yml index c7af6e0ee..c1a423616 100644 --- a/.github/workflows/windows-test.yml +++ b/.github/workflows/windows-test.yml @@ -48,7 +48,7 @@ jobs: - name: Set up the environment run: cmd.exe /c "powershell .\tools\metacall-environment.ps1 $Env:METACALL_INSTALL_OPTIONS" env: - METACALL_INSTALL_OPTIONS: python nodejs java ruby typescript wasm rpc file # netcore5 java c cobol rust rapidjson funchook swig pack # clangformat v8rep51 coverage + METACALL_INSTALL_OPTIONS: python nodejs java ruby typescript wasm rpc file # netcore5 java c cobol rust rapidjson swig pack # clangformat v8rep51 coverage - name: Configure run: | diff --git a/NOTICE b/NOTICE index 64d3172e0..e584ab4a7 100644 --- a/NOTICE +++ b/NOTICE @@ -19,7 +19,7 @@ All external code and licenses used by **METACALL** are always wrapped into plug - [2. Serials](#2-serials) - [2.1 RapidJSON](#21-rapidjson) - [3. Detours](#3-detours) - - [3.1 FuncHook](#31-funchook) + - [3.1 PLTHook](#31-fookhook) - [4. Ports](#4-ports) - [4.1 Swig](#41-swig) @@ -80,11 +80,11 @@ All external code and licenses used by **METACALL** are always wrapped into plug ## 3. Detours -### 3.1 FuncHook +### 3.1 PLTHook -| Software | License | -| :----------: | :-------------------------------------------------------------------------------------------------: | -| **FuncHook** | [GPLv2 or later with a GPL linking exception](https://github.com/kubo/funchook/blob/master/LICENSE) | +| Software | License | +| :----------: | :------------------------------------------------------------------------------------------: | +| **PLTHook** | [2-clause BSD-style license](https://github.com/metacall/plthook?tab=readme-ov-file#license) | ## 4. Ports diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 5dadee3cb..0834f67a0 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -25,7 +25,7 @@ services: build: args: METACALL_BUILD_TYPE: ${METACALL_BUILD_TYPE} - METACALL_INSTALL_OPTIONS: base python ruby netcore7 nodejs typescript file rpc wasm java c cobol go rust rapidjson funchook swig pack backtrace sandbox ${METACALL_BUILD_COVERAGE} # clangformat v8rep51 + METACALL_INSTALL_OPTIONS: base python ruby netcore7 nodejs typescript file rpc wasm java c cobol go rust rapidjson swig pack backtrace sandbox ${METACALL_BUILD_COVERAGE} # clangformat v8rep51 dev: image: metacall/core:dev build: diff --git a/docker-compose.yml b/docker-compose.yml index 38e167b44..ff548ba2a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -31,7 +31,7 @@ services: METACALL_PATH: $METACALL_PATH METACALL_TOOLS_PATH: $METACALL_PATH/tools METACALL_BUILD_TYPE: $METACALL_BUILD_TYPE - METACALL_INSTALL_OPTIONS: base python ruby nodejs typescript file rpc rapidjson funchook swig pack backtrace # clangformat v8rep51 coverage + METACALL_INSTALL_OPTIONS: base python ruby nodejs typescript file rpc rapidjson swig pack backtrace # clangformat v8rep51 coverage environment: DEBIAN_FRONTEND: noninteractive # Work around https://github.com/dotnet/cli/issues/1582 until Docker releases a diff --git a/docs/README.md b/docs/README.md index 446569788..3c348b9f8 100644 --- a/docs/README.md +++ b/docs/README.md @@ -66,7 +66,7 @@ Use the [installer](https://github.com/metacall/install) and try [some examples] - [5.3.2.1 MetaCall](#5321-metacall) - [5.3.2.2 RapidJSON](#5322-rapidjson) - [5.3.3 Detours](#533-detours) - - [5.3.3.1 FuncHook](#5331-funchook) + - [5.3.3.1 PLTHook](#5331-plthook) - [5.4 Ports](#54-ports) - [5.5 Serialization](#55-serialization) - [5.6 Memory Layout](#56-memory-layout) @@ -251,7 +251,7 @@ The environment variables are optional, in case you want to modify default paths - [`detours`](/source/detours) implement the [`detour`](/source/detour) interface by using a plugin architecture. The current list of available detour plugins is the following one. - - [`funchook_detour`](/source/detours/funchook_detour) implemented by means of FuncHook library. + - [`plthook_detour`](/source/detours/plthook_detour) implemented by means of PLTHook library. - [`dynlink`](/source/dynlink) implements a cross-platform method to dynamically load libraries. It is used to dynamically load plugins into **METACALL**. @@ -499,7 +499,7 @@ A loader must implement it to be considered a valid loader. #### 5.3.3 Detours -##### 5.3.3.1 FuncHook +##### 5.3.3.1 PLTHook ### 5.4 Ports @@ -666,7 +666,7 @@ It is possible to enable or disable concrete loaders, script, ports, serials or | **OPTION*BUILD_LOADERS*** | `C` `JS` `CS` `MOCK` `PY` `JSM` `NODE` `RB` `FILE` | | **OPTION*BUILD_SCRIPTS*** | `C` `CS` `JS` `NODE` `PY` `RB` `JAVA` | | **OPTION*BUILD_SERIALS*** | `METACALL` `RAPID_JSON` | -| **OPTION*BUILD_DETOURS*** | `FUNCHOOK` | +| **OPTION*BUILD_DETOURS*** | `PLTHOOK` | | **OPTION*BUILD_PORTS*** | `CS` `CXX` `D` `GO` `JAVA` `JS` `LUA` `NODE` `PHP` `PL` `PY` `R` `RB` | To format the entire C/C++ codebase use: diff --git a/source/detour/include/detour/detour.h b/source/detour/include/detour/detour.h index fca7d3ee1..fd0cc20a1 100644 --- a/source/detour/include/detour/detour.h +++ b/source/detour/include/detour/detour.h @@ -40,7 +40,7 @@ DETOUR_API int detour_initialize(void); * Create detour by @name * * @param[in] name -* Plugin will be used to detourize and detourize +* Plugin will be used for hooking * * @return * Pointer to detour on correct initialization, null otherwise @@ -63,35 +63,77 @@ DETOUR_API const char *detour_name(detour d); /** * @brief -* Get trampoline of the detour +* Initialize the detour of a library from @path * -* @param[in] handle -* Reference to the detour handle +* @param[in] d +* Reference to the detour +* +* @param[in] path +* String to the path or name of the library, in case of NULL, the current process will be used * * @return -* Pointer to the trampoline function +* Pointer to the detour handle * */ -DETOUR_API void (*detour_trampoline(detour_handle handle))(void); +DETOUR_API detour_handle detour_load_file(detour d, const char *path); /** * @brief -* Install detour from @target to @hook +* Initialize the detour of a library from @library dynlink handle * * @param[in] d * Reference to the detour * -* @param[in] target -* Reference to the function to be hooked +* @param[in] library +* Pointer to the library already opened by dynlink +* +* @return +* Pointer to the detour handle +* +*/ +DETOUR_API detour_handle detour_load_handle(detour d, dynlink library); + +/** +* @brief +* Initialize the detour of a library from @address, this function pointer +* must be a pointer to a function of the library that we want to hook +* +* @param[in] d +* Reference to the detour * -* @param[in] hook -* Reference to the function will be called instead of @target +* @param[in] address +* Pointer to a function of the library we want to hook * * @return * Pointer to the detour handle * */ -DETOUR_API detour_handle detour_install(detour d, void (*target)(void), void (*hook)(void)); +DETOUR_API detour_handle detour_load_address(detour d, void (*address)(void)); + +/** +* @brief +* Iterate all symbols of the library already opened +* +* @param[in] d +* Reference to the detour +* +* @param[in] handle +* Pointer to the detour hook implementation +* +* @param[out] position +* Pointer to the current index of the enumeration +* +* @param[out] name +* Pointer to the function name in string form +* +* @param[out] address +* Pointer to the pointer of the function pointer of the function to be hooked +* +* @return +* Return zero on success, different from zero otherwise +* +*/ +DETOUR_API int detour_enumerate(detour d, detour_handle handle, unsigned int *position, const char **name, void (***address)(void)); /** * @brief @@ -103,11 +145,33 @@ DETOUR_API detour_handle detour_install(detour d, void (*target)(void), void (*h * @param[in] handle * Reference to the detour handle * +* @param[in] function_name +* Function name to be hooked, it must belong to the library +* +* @param[in] function_addr +* Function pointer to the function that will replace the original function from the library +* +* @param[out] function_trampoline +* Function pointer to the original function from the library that will be replaced +* * @return * Return zero if success, different from zero otherwise * */ -DETOUR_API int detour_uninstall(detour d, detour_handle handle); +int detour_replace(detour d, detour_handle handle, const char *function_name, void (*function_addr)(void), void (**function_trampoline)(void)); + +/** +* @brief +* Destroy detour handle previously loaded by detour_load_* functions +* +* @param[in] d +* Reference to the detour +* +* @param[in] handle +* Reference to the detour handle +* +*/ +void detour_unload(detour d, detour_handle handle); /** * @brief diff --git a/source/detour/include/detour/detour_interface.h b/source/detour/include/detour/detour_interface.h index 5207622ba..d4ac5b5e8 100644 --- a/source/detour/include/detour/detour_interface.h +++ b/source/detour/include/detour/detour_interface.h @@ -25,6 +25,8 @@ #include +#include + #ifdef __cplusplus extern "C" { #endif @@ -42,10 +44,13 @@ typedef struct detour_interface_type *detour_interface; struct detour_interface_type { - detour_impl_handle (*initialize)(void); - int (*install)(detour_impl_handle, void (**)(void), void (*)(void)); - int (*uninstall)(detour_impl_handle); - int (*destroy)(detour_impl_handle); + int (*initialize_file)(detour_impl_handle *, const char *); + int (*initialize_handle)(detour_impl_handle *, dynlink); + int (*initialize_address)(detour_impl_handle *, void (*)(void)); + int (*enumerate)(detour_impl_handle, unsigned int *, const char **, void ***); + int (*replace)(detour_impl_handle, const char *, void (*)(void), void **); + const char *(*error)(detour_impl_handle); + void (*destroy)(detour_impl_handle); }; #ifdef __cplusplus diff --git a/source/detour/source/detour.c b/source/detour/source/detour.c index 9da330372..58c81e892 100644 --- a/source/detour/source/detour.c +++ b/source/detour/source/detour.c @@ -34,7 +34,11 @@ static plugin_manager_declare(detour_manager); struct detour_handle_type { - void (*target)(void); + /* TODO: Implement hash map for holding the symbol table? */ + /* TODO: Optimize the replace process by exposing the internal replace function + * and store all the symbols in the hash table then iterate and replace at the + * same time, so the functions are accessed in O(1) instead of O(n) + */ detour_impl_handle impl; }; @@ -65,37 +69,59 @@ const char *detour_name(detour d) return plugin_name(d); } -void (*detour_trampoline(detour_handle handle))(void) +detour_handle detour_load_file(detour d, const char *path) { + detour_handle handle; + + if (d == NULL) + { + log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour load arguments"); + + return NULL; + } + + handle = malloc(sizeof(struct detour_handle_type)); + if (handle == NULL) { + log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour load handle allocation"); + + return NULL; + } + + if (detour_iface(d)->initialize_file(&handle->impl, path) != 0) + { + log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour implementation handle initialization"); + + free(handle); + return NULL; } - return handle->target; + return handle; } -detour_handle detour_install(detour d, void (*target)(void), void (*hook)(void)) +detour_handle detour_load_handle(detour d, dynlink library) { - if (d == NULL || target == NULL || hook == NULL) + detour_handle handle; + + if (d == NULL) { - log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour install arguments"); + log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour load arguments"); return NULL; } - detour_handle handle = malloc(sizeof(struct detour_handle_type)); + handle = malloc(sizeof(struct detour_handle_type)); if (handle == NULL) { - log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour install handle allocation"); + log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour load handle allocation"); return NULL; } - handle->impl = detour_iface(d)->initialize(); - - if (handle->impl == NULL) + if (detour_iface(d)->initialize_handle(&handle->impl, library) != 0) { log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour implementation handle initialization"); @@ -104,55 +130,74 @@ detour_handle detour_install(detour d, void (*target)(void), void (*hook)(void)) return NULL; } - void (**target_ptr)(void) = ⌖ + return handle; +} + +detour_handle detour_load_address(detour d, void (*address)(void)) +{ + detour_handle handle; + + if (d == NULL) + { + log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour load arguments"); + + return NULL; + } + + handle = malloc(sizeof(struct detour_handle_type)); - if (detour_iface(d)->install(handle->impl, target_ptr, hook) != 0) + if (handle == NULL) { - log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour implementation handle installation"); + log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour load handle allocation"); + + return NULL; + } - if (detour_iface(d)->destroy(handle->impl) != 0) - { - log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour implementation handle destruction"); - } + if (detour_iface(d)->initialize_address(&handle->impl, address) != 0) + { + log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour implementation handle initialization"); free(handle); return NULL; } - handle->target = *target_ptr; - return handle; } -int detour_uninstall(detour d, detour_handle handle) +int detour_enumerate(detour d, detour_handle handle, unsigned int *position, const char **name, void (***address)(void)) { - int result = 0; - - if (d == NULL || handle == NULL) + if (d == NULL) { - log_write("metacall", LOG_LEVEL_ERROR, "Invalid uninstall arguments"); + log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour enumerate arguments"); return 1; } - result |= detour_iface(d)->uninstall(handle->impl); + return detour_iface(d)->enumerate(handle, position, name, (void ***)address); +} - if (result != 0) +int detour_replace(detour d, detour_handle handle, const char *function_name, void (*function_addr)(void), void (**function_trampoline)(void)) +{ + if (d == NULL) { - log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour implementation handle uninstallation"); + log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour replace arguments"); + + return 1; } - result |= detour_iface(d)->destroy(handle->impl); + return detour_iface(d)->replace(handle, function_name, function_addr, (void **)function_trampoline); +} - if (result != 0) +void detour_unload(detour d, detour_handle handle) +{ + if (d == NULL) { - log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour implementation handle destruction"); + log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour replace arguments"); + return; } - free(handle); - - return result; + detour_iface(d)->destroy(handle); } int detour_clear(detour d) diff --git a/source/detours/CMakeLists.txt b/source/detours/CMakeLists.txt index c1f851b97..1a3c51030 100644 --- a/source/detours/CMakeLists.txt +++ b/source/detours/CMakeLists.txt @@ -4,7 +4,7 @@ if(NOT OPTION_BUILD_DETOURS) endif() # Detour options -option(OPTION_BUILD_DETOURS_FUNCHOOK "FuncHook library detour." ON) +option(OPTION_BUILD_DETOURS_PLTHOOK "PLTHook library detour." ON) # Detour packages -add_subdirectory(funchook_detour) # FuncHook library +add_subdirectory(plthook_detour) # PLTHook library diff --git a/source/detours/funchook_detour/include/funchook_detour/funchook_detour_impl.h b/source/detours/funchook_detour/include/funchook_detour/funchook_detour_impl.h deleted file mode 100644 index 37cb640cd..000000000 --- a/source/detours/funchook_detour/include/funchook_detour/funchook_detour_impl.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Detour Library by Parra Studios - * A cross-platform library providing detours, function hooks and trampolines. - * - * Copyright (C) 2016 - 2025 Vicente Eduardo Ferrer Garcia - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef FUNCHOOK_DETOUR_IMPL_H -#define FUNCHOOK_DETOUR_IMPL_H 1 - -/* -- Headers -- */ - -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* -- Methods -- */ - -/** -* @brief -* Initialize FuncHook detour hook implementation -* -* @return -* Returns pointer to detour hook implementation on success, null pointer otherwise -* -*/ -FUNCHOOK_DETOUR_API detour_impl_handle funchook_detour_impl_initialize(void); - -/** -* @brief -* Install FuncHook detour implementation -* -* @param[in] handle -* Pointer to the detour hook implementation -* -* @param[in] target -* Pointer to the function to be intercepted -* -* @param[in] hook -* Function will be called instead of target -* -* @return -* Return zero on success, different from zero otherwise -* -*/ -FUNCHOOK_DETOUR_API int funchook_detour_impl_install(detour_impl_handle handle, void (**target)(void), void (*hook)(void)); - -/** -* @brief -* Uninstall FuncHook detour implementation -* -* @param[in] handle -* Pointer to the detour hook implementation -* -* @return -* Return zero on success, different from zero otherwise -* -*/ -FUNCHOOK_DETOUR_API int funchook_detour_impl_uninstall(detour_impl_handle handle); - -/** -* @brief -* Destroy FuncHook detour implementation -* -* @return -* Returns zero on correct destruction, distinct from zero otherwise -* -*/ -FUNCHOOK_DETOUR_API int funchook_detour_impl_destroy(detour_impl_handle handle); - -#ifdef __cplusplus -} -#endif - -#endif /* FUNCHOOK_DETOUR_IMPL_H */ diff --git a/source/detours/funchook_detour/source/funchook_detour.c b/source/detours/funchook_detour/source/funchook_detour.c deleted file mode 100644 index 9a15057fa..000000000 --- a/source/detours/funchook_detour/source/funchook_detour.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Detour Library by Parra Studios - * Copyright (C) 2016 - 2025 Vicente Eduardo Ferrer Garcia - * - * A cross-platform library providing detours, function hooks and trampolines. - * - */ - -/* -- Headers -- */ - -#include - -#include -#include - -/* -- Methods -- */ - -detour_interface funchook_detour_impl_interface_singleton(void) -{ - static struct detour_interface_type interface_instance_funchook = { - &funchook_detour_impl_initialize, - &funchook_detour_impl_install, - &funchook_detour_impl_uninstall, - &funchook_detour_impl_destroy - }; - - return &interface_instance_funchook; -} - -const char *funchook_detour_print_info(void) -{ - static const char funchook_detour_info[] = - "FuncHook Detour Plugin " METACALL_VERSION "\n" - "Copyright (C) 2016 - 2025 Vicente Eduardo Ferrer Garcia \n" - -#ifdef FUNCHOOK_DETOUR_STATIC_DEFINE - "Compiled as static library type\n" -#else - "Compiled as shared library type\n" -#endif - - "\n"; - - return funchook_detour_info; -} diff --git a/source/detours/funchook_detour/source/funchook_detour_impl.c b/source/detours/funchook_detour/source/funchook_detour_impl.c deleted file mode 100644 index 83c25a1dc..000000000 --- a/source/detours/funchook_detour/source/funchook_detour_impl.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Detour Library by Parra Studios - * Copyright (C) 2016 - 2025 Vicente Eduardo Ferrer Garcia - * - * A cross-platform library providing detours, function hooks and trampolines. - * - */ - -/* -- Headers -- */ - -#include - -#include - -#include - -/* -- Member Data -- */ - -union funchook_detour_impl_cast -{ - void (*hook)(void); - void *ptr; -}; - -/* -- Methods -- */ - -detour_impl_handle funchook_detour_impl_initialize(void) -{ - return (detour_impl_handle)funchook_create(); -} - -int funchook_detour_impl_install(detour_impl_handle handle, void (**target)(void), void (*hook)(void)) -{ - funchook_t *handle_impl = handle; - - if (handle_impl != NULL && target != NULL && hook != NULL) - { - union funchook_detour_impl_cast hook_cast = { hook }; - - if (funchook_prepare(handle_impl, (void **)target, hook_cast.ptr) != FUNCHOOK_ERROR_SUCCESS) - { - return 1; - } - - if (funchook_install(handle_impl, 0) != FUNCHOOK_ERROR_SUCCESS) - { - return 1; - } - - return 0; - } - - return 1; -} - -int funchook_detour_impl_uninstall(detour_impl_handle handle) -{ - funchook_t *handle_impl = handle; - - if (handle_impl != NULL) - { - return !(funchook_uninstall(handle_impl, 0) == FUNCHOOK_ERROR_SUCCESS); - } - - return 1; -} - -int funchook_detour_impl_destroy(detour_impl_handle handle) -{ - funchook_t *handle_impl = handle; - - if (handle_impl == NULL) - { - return 0; - } - - return !(funchook_destroy(handle_impl) == FUNCHOOK_ERROR_SUCCESS); -} diff --git a/source/detours/funchook_detour/CMakeLists.txt b/source/detours/plthook_detour/CMakeLists.txt similarity index 50% rename from source/detours/funchook_detour/CMakeLists.txt rename to source/detours/plthook_detour/CMakeLists.txt index ac782f31d..a5db591c1 100644 --- a/source/detours/funchook_detour/CMakeLists.txt +++ b/source/detours/plthook_detour/CMakeLists.txt @@ -1,5 +1,5 @@ # Check if this detour is enabled -if(NOT OPTION_BUILD_DETOURS OR NOT OPTION_BUILD_DETOURS_FUNCHOOK) +if(NOT OPTION_BUILD_DETOURS OR NOT OPTION_BUILD_DETOURS_PLTHOOK) return() endif() @@ -7,66 +7,35 @@ endif() # External dependencies # -find_package(Git REQUIRED) +# PLTHook +include(FetchContent) -# Target depends name -set(target_depends funchook_detour_depends) +set(PLTHook_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/plthook") -include(ExternalProject) - -set(FUNCHOOK_VERSION 1.1.3) +FetchContent_Declare(PLTHook + GIT_REPOSITORY https://github.com/metacall/plthook.git + GIT_TAG master + SOURCE_DIR ${PLTHook_SOURCE_DIR} +) -if(WIN32) - set(FUNCHOOK_LIBRARY_SUFFIX "lib") - set(FUNCHOOK_LIBRARY_INSTALL_SUFFIX "dll") -elseif(APPLE) - set(FUNCHOOK_LIBRARY_SUFFIX "dylib") -else() - set(FUNCHOOK_LIBRARY_SUFFIX "so") -endif() +FetchContent_MakeAvailable(PLTHook) -set(FUNCHOOK_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/funchook/src/funchook") +set(PLTHook_INCLUDE_DIR "${PLTHook_SOURCE_DIR}") -if(WIN32) - set(FUNCHOOK_BUILD_TARGET "INSTALL") - set(FUNCHOOK_LIBRARY_NAME "funchook_dll.${FUNCHOOK_LIBRARY_SUFFIX}") - set(FUNCHOOK_LIBRARY "${FUNCHOOK_SOURCE_DIR}/${CMAKE_BUILD_TYPE}/${FUNCHOOK_LIBRARY_NAME}") - set(FUNCHOOK_LIBRARY_INSTALL_NAME "funchook.${FUNCHOOK_LIBRARY_INSTALL_SUFFIX}") - set(FUNCHOOK_LIBRARY_INSTALL_DIR "${FUNCHOOK_SOURCE_DIR}/${CMAKE_BUILD_TYPE}/${FUNCHOOK_LIBRARY_INSTALL_NAME}") +if(APPLE) + set(PLTHook_SOURCE "${PLTHook_SOURCE_DIR}/plthook_osx.c") +elseif(WIN32 OR MINGW) + set(PLTHook_SOURCE "${PLTHook_SOURCE_DIR}/plthook_win32.c") else() - set(FUNCHOOK_BUILD_TARGET "install") - set(FUNCHOOK_LIBRARY_NAME "libfunchook.${FUNCHOOK_LIBRARY_SUFFIX}") - set(FUNCHOOK_LIBRARY "${FUNCHOOK_SOURCE_DIR}/${FUNCHOOK_LIBRARY_NAME}") - set(FUNCHOOK_LIBRARY_INSTALL_NAME "${FUNCHOOK_LIBRARY_NAME}") - set(FUNCHOOK_LIBRARY_INSTALL_DIR "${FUNCHOOK_LIBRARY}") + set(PLTHook_SOURCE "${PLTHook_SOURCE_DIR}/plthook_elf.c") endif() -set(FUNCHOOK_INSTALL_DIR "${PROJECT_OUTPUT_DIR}") -set(FUNCHOOK_LIBRARY_INSTALL "${PROJECT_OUTPUT_DIR}/${FUNCHOOK_LIBRARY_INSTALL_NAME}") -set(FUNCHOOK_INCLUDE_DIR "${FUNCHOOK_SOURCE_DIR}/include") - -ExternalProject_Add(${target_depends} - PREFIX funchook - SOURCE_DIR ${FUNCHOOK_SOURCE_DIR} - INSTALL_DIR ${FUNCHOOK_INSTALL_DIR} - DOWNLOAD_COMMAND "${GIT_EXECUTABLE}" clone --single-branch --branch v${FUNCHOOK_VERSION} --recursive https://github.com/kubo/funchook.git "${FUNCHOOK_SOURCE_DIR}" - CONFIGURE_COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" -DCMAKE_BUILD_PARALLEL_LEVEL=1 -DCMAKE_PLATFORM_NO_VERSIONED_SONAME=ON -DCMAKE_INSTALL_PREFIX=${FUNCHOOK_INSTALL_DIR} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DFUNCHOOK_BUILD_SHARED=ON -DFUNCHOOK_BUILD_TESTS=OFF -DFUNCHOOK_BUILD_STATIC=OFF . - BUILD_COMMAND ${CMAKE_COMMAND} -E env CMAKE_BUILD_PARALLEL_LEVEL=1 ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} - INSTALL_COMMAND ${CMAKE_COMMAND} -E copy "${FUNCHOOK_LIBRARY_INSTALL_DIR}" "${FUNCHOOK_INSTALL_DIR}" - UPDATE_COMMAND "" - BUILD_IN_SOURCE ON - LOG_DOWNLOAD ON - LOG_CONFIGURE ON - LOG_BUILD ON - LOG_INSTALL ON -) - # # Library name and options # # Target name -set(target funchook_detour) +set(target plthook_detour) # Exit here if required dependencies are not met message(STATUS "Detour ${target}") @@ -96,13 +65,14 @@ set(include_path "${CMAKE_CURRENT_SOURCE_DIR}/include/${target}") set(source_path "${CMAKE_CURRENT_SOURCE_DIR}/source") set(headers - ${include_path}/funchook_detour.h - ${include_path}/funchook_detour_impl.h + ${include_path}/plthook_detour.h + ${include_path}/plthook_detour_impl.h ) set(sources - ${source_path}/funchook_detour.c - ${source_path}/funchook_detour_impl.c + ${source_path}/plthook_detour.c + ${source_path}/plthook_detour_impl.c + ${PLTHook_SOURCE} # PLTHook Source ) # Group source files @@ -123,11 +93,6 @@ add_library(${target} MODULE ${headers} ) -# Add target dependencies -add_dependencies(${target} - ${target_depends} -) - # Create namespaced alias add_library(${META_PROJECT_NAME}::${target} ALIAS ${target}) @@ -162,7 +127,7 @@ target_include_directories(${target} ${CMAKE_CURRENT_BINARY_DIR}/include $ # MetaCall includes - ${FUNCHOOK_INCLUDE_DIR} # FuncHook includes + ${PLTHook_INCLUDE_DIR} # PLTHook includes PUBLIC ${DEFAULT_INCLUDE_DIRECTORIES} @@ -180,7 +145,6 @@ target_include_directories(${target} target_link_libraries(${target} PRIVATE ${META_PROJECT_NAME}::metacall # MetaCall library - ${FUNCHOOK_LIBRARY} # FuncHook libraries PUBLIC ${DEFAULT_LIBRARIES} @@ -234,7 +198,6 @@ target_link_options(${target} # Dependency install(FILES - ${FUNCHOOK_LIBRARY_INSTALL} DESTINATION ${INSTALL_LIB} COMPONENT runtime ) diff --git a/source/detours/funchook_detour/include/funchook_detour/funchook_detour.h b/source/detours/plthook_detour/include/plthook_detour/plthook_detour.h similarity index 80% rename from source/detours/funchook_detour/include/funchook_detour/funchook_detour.h rename to source/detours/plthook_detour/include/plthook_detour/plthook_detour.h index 98a71ea43..068ae11c6 100644 --- a/source/detours/funchook_detour/include/funchook_detour/funchook_detour.h +++ b/source/detours/plthook_detour/include/plthook_detour/plthook_detour.h @@ -18,12 +18,12 @@ * */ -#ifndef FUNCHOOK_DETOUR_H -#define FUNCHOOK_DETOUR_H 1 +#ifndef PLTHOOK_DETOUR_H +#define PLTHOOK_DETOUR_H 1 /* -- Headers -- */ -#include +#include #include @@ -41,7 +41,7 @@ extern "C" { * Returns pointer to interface to be used by implementation * */ -FUNCHOOK_DETOUR_API detour_interface funchook_detour_impl_interface_singleton(void); +PLTHOOK_DETOUR_API detour_interface plthook_detour_impl_interface_singleton(void); /** * @brief @@ -51,10 +51,10 @@ FUNCHOOK_DETOUR_API detour_interface funchook_detour_impl_interface_singleton(vo * Static string containing module information * */ -FUNCHOOK_DETOUR_API const char *funchook_detour_print_info(void); +PLTHOOK_DETOUR_API const char *plthook_detour_print_info(void); #ifdef __cplusplus } #endif -#endif /* FUNCHOOK_DETOUR_H */ +#endif /* PLTHOOK_DETOUR_H */ diff --git a/source/detours/plthook_detour/include/plthook_detour/plthook_detour_impl.h b/source/detours/plthook_detour/include/plthook_detour/plthook_detour_impl.h new file mode 100644 index 000000000..680cff01e --- /dev/null +++ b/source/detours/plthook_detour/include/plthook_detour/plthook_detour_impl.h @@ -0,0 +1,151 @@ +/* + * Detour Library by Parra Studios + * A cross-platform library providing detours, function hooks and trampolines. + * + * Copyright (C) 2016 - 2025 Vicente Eduardo Ferrer Garcia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef PLTHOOK_DETOUR_IMPL_H +#define PLTHOOK_DETOUR_IMPL_H 1 + +/* -- Headers -- */ + +#include + +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* -- Methods -- */ + +/** +* @brief +* Initialize PLTHook detour hook implementation by file name +* +* @param[out] handle +* When success, it returns the pointer to the detour implementation, null otherwise +* +* @param[in] path +* String containing the path or name to the dynamic library to be opened +* +* @return +* Returns zero on success, different from zero otherwise +* +*/ +PLTHOOK_DETOUR_API int plthook_detour_impl_initialize_file(detour_impl_handle *handle, const char *path); + +/** +* @brief +* Initialize PLTHook detour hook implementation by already l +* +* @param[out] handle +* When success, it returns the pointer to the detour implementation, null otherwiseoaded dynamic library handle +* +* @param[in] library +* Pointer to the dynlink handle of the library +* +* @return +* Returns zero on success, different from zero otherwise +* +*/ +PLTHOOK_DETOUR_API int plthook_detour_impl_initialize_handle(detour_impl_handle *handle, dynlink library); + +/** +* @brief +* Initialize PLTHook detour hook implementation by a functio +* +* @param[out] handle +* When success, it returns the pointer to the detour implementation, null otherwisen pointer of a function belonging to a library +* +* @param[in] address +* Function pointer of a function belonging to the library to be hooked +* +* @return +* Returns zero on success, different from zero otherwise +* +*/ +PLTHOOK_DETOUR_API int plthook_detour_impl_initialize_address(detour_impl_handle *handle, void (*address)(void)); + +/** +* @brief +* Iterate all symbols of the library already opened +* +* @param[in] handle +* Pointer to the detour hook implementation +* +* @param[out] position +* Pointer to the current index of the enumeration +* +* @param[out] name +* Pointer to the function name in string form +* +* @param[out] address +* Pointer to the pointer of the function pointer of the function to be hooked +* +* @return +* Return zero on success, different from zero otherwise +* +*/ +PLTHOOK_DETOUR_API int plthook_detour_impl_enumerate(detour_impl_handle handle, unsigned int *position, const char **name, void ***address); + +/** +* @brief +* Replace function from a library already opened by name, returns the old function pointer +* +* @param[in] handle +* Pointer to the detour hook implementation +* +* @param[in] function_name +* String containing the function name to be replaced +* +* @param[in] function_addr +* Function pointer that will be used to replace the original one +* +* @param[out] function_old_addr +* Function pointer to the original function that has been replaced +* +* @return +* Return zero on success, different from zero otherwise +* +*/ +PLTHOOK_DETOUR_API int plthook_detour_impl_replace(detour_impl_handle handle, const char *function_name, void (*function_addr)(void), void **function_old_addr); + +/** +* @brief +* Error handling PLTHook detour implementation +* +* @return +* Returns string containing the information of the error +* +*/ +PLTHOOK_DETOUR_API const char *plthook_detour_impl_error(detour_impl_handle handle); + +/** +* @brief +* Destroy PLTHook detour implementation +* +*/ +PLTHOOK_DETOUR_API void plthook_detour_impl_destroy(detour_impl_handle handle); + +#ifdef __cplusplus +} +#endif + +#endif /* PLTHOOK_DETOUR_IMPL_H */ diff --git a/source/detours/plthook_detour/source/plthook_detour.c b/source/detours/plthook_detour/source/plthook_detour.c new file mode 100644 index 000000000..b291b0b8e --- /dev/null +++ b/source/detours/plthook_detour/source/plthook_detour.c @@ -0,0 +1,48 @@ +/* + * Detour Library by Parra Studios + * Copyright (C) 2016 - 2025 Vicente Eduardo Ferrer Garcia + * + * A cross-platform library providing detours, function hooks and trampolines. + * + */ + +/* -- Headers -- */ + +#include + +#include +#include + +/* -- Methods -- */ + +detour_interface plthook_detour_impl_interface_singleton(void) +{ + static struct detour_interface_type interface_instance_plthook = { + &plthook_detour_impl_initialize_file, + &plthook_detour_impl_initialize_handle, + &plthook_detour_impl_initialize_address, + &plthook_detour_impl_enumerate, + &plthook_detour_impl_replace, + &plthook_detour_impl_error, + &plthook_detour_impl_destroy + }; + + return &interface_instance_plthook; +} + +const char *plthook_detour_print_info(void) +{ + static const char plthook_detour_info[] = + "PLTHook Detour Plugin " METACALL_VERSION "\n" + "Copyright (C) 2016 - 2025 Vicente Eduardo Ferrer Garcia \n" + +#ifdef PLTHOOK_DETOUR_STATIC_DEFINE + "Compiled as static library type\n" +#else + "Compiled as shared library type\n" +#endif + + "\n"; + + return plthook_detour_info; +} diff --git a/source/detours/plthook_detour/source/plthook_detour_impl.c b/source/detours/plthook_detour/source/plthook_detour_impl.c new file mode 100644 index 000000000..33d23850d --- /dev/null +++ b/source/detours/plthook_detour/source/plthook_detour_impl.c @@ -0,0 +1,122 @@ +/* + * Detour Library by Parra Studios + * Copyright (C) 2016 - 2025 Vicente Eduardo Ferrer Garcia + * + * A cross-platform library providing detours, function hooks and trampolines. + * + */ + +/* -- Headers -- */ + +#include + +#include + +/* -- Methods -- */ + +int plthook_detour_impl_initialize_file(detour_impl_handle *handle, const char *path) +{ + plthook_t *plthook; + int result; + + if (handle == NULL) + { + return 1; + } + + result = plthook_open(&plthook, path); + + if (result != PLTHOOK_SUCCESS) + { + *handle = NULL; + return result; + } + + *handle = (void *)plthook; + return 0; +} + +int plthook_detour_impl_initialize_handle(detour_impl_handle *handle, dynlink library) +{ + plthook_t *plthook; + int result; + + if (handle == NULL) + { + return 1; + } + + result = plthook_open_by_handle(&plthook, dynlink_get_impl(library)); + + if (result != PLTHOOK_SUCCESS) + { + *handle = NULL; + return result; + } + + *handle = (void *)plthook; + return 0; +} + +int plthook_detour_impl_initialize_address(detour_impl_handle *handle, void (*address)(void)) + +{ + plthook_t *plthook; + void *ptr; + int result; + + if (handle == NULL) + { + return 1; + } + + dynlink_symbol_uncast(address, ptr); + + result = plthook_open_by_address(&plthook, ptr); + + if (result != PLTHOOK_SUCCESS) + { + *handle = NULL; + return result; + } + + *handle = (void *)plthook; + return 0; +} + +int plthook_detour_impl_enumerate(detour_impl_handle handle, unsigned int *position, const char **name, void ***address) +{ + if (handle == NULL) + { + return 1; + } + + return plthook_enum(handle, position, name, address); +} + +int plthook_detour_impl_replace(detour_impl_handle handle, const char *function_name, void (*function_addr)(void), void **function_old_addr) +{ + void *ptr; + + if (handle == NULL) + { + return 1; + } + + dynlink_symbol_uncast(function_addr, ptr); + + return plthook_replace(handle, function_name, ptr, function_old_addr); +} + +const char *plthook_detour_impl_error(detour_impl_handle handle) +{ + /* TODO: The error should be stored in the handle, this must be modified from plthook library itself */ + (void)handle; + + return plthook_error(); +} + +void plthook_detour_impl_destroy(detour_impl_handle handle) +{ + plthook_close(handle); +} diff --git a/source/dynlink/source/dynlink_impl_unix.c b/source/dynlink/source/dynlink_impl_unix.c index 0354ecce7..df74485c1 100644 --- a/source/dynlink/source/dynlink_impl_unix.c +++ b/source/dynlink/source/dynlink_impl_unix.c @@ -28,12 +28,15 @@ #include +/* Enable if needed for extended API */ +/* #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #ifndef __USE_GNU #define __USE_GNU #endif +*/ #include diff --git a/source/metacall/source/metacall.c b/source/metacall/source/metacall.c index dec8182d2..273120fa0 100644 --- a/source/metacall/source/metacall.c +++ b/source/metacall/source/metacall.c @@ -47,7 +47,7 @@ #define METACALL_ARGS_SIZE 0x10 #define METACALL_SERIAL "rapid_json" -#define METACALL_DETOUR "funchook" +#define METACALL_DETOUR "plthook" /* -- Type Definitions -- */ diff --git a/source/tests/detour_test/CMakeLists.txt b/source/tests/detour_test/CMakeLists.txt index 7b722beeb..d73991ebc 100644 --- a/source/tests/detour_test/CMakeLists.txt +++ b/source/tests/detour_test/CMakeLists.txt @@ -1,5 +1,5 @@ # Check if detours are enabled -if(NOT OPTION_BUILD_DETOURS OR NOT OPTION_BUILD_DETOURS_FUNCHOOK) +if(NOT OPTION_BUILD_DETOURS OR NOT OPTION_BUILD_DETOURS_PLTHOOK) return() endif() @@ -134,6 +134,14 @@ add_test(NAME ${target} COMMAND $ ) +# +# Define dependencies +# + +add_dependencies(${target} + plthook_detour +) + # # Define test properties # diff --git a/source/tests/detour_test/source/detour_test.cpp b/source/tests/detour_test/source/detour_test.cpp index 6b84295fd..029f6171c 100644 --- a/source/tests/detour_test/source/detour_test.cpp +++ b/source/tests/detour_test/source/detour_test.cpp @@ -31,7 +31,8 @@ class detour_test : public testing::Test public: }; -static detour_handle handle; +static detour_handle handle = NULL; +static void (*trampoline)(void) = NULL; int hook_function(int x) { @@ -39,16 +40,22 @@ int hook_function(int x) log_write("metacall", LOG_LEVEL_DEBUG, "Hook function %d", x); - int (*target_function_ptr)(int) = (int (*)(int))detour_trampoline(handle); + int (*trampoline_ptr)(int) = (int (*)(int))trampoline; - int result = target_function_ptr(x + 2) + 2; + int result = trampoline_ptr(x + 2) + 2; log_write("metacall", LOG_LEVEL_DEBUG, "Hook function result %d", result); return result; } -int target_function(int x) +#ifdef _WIN32 + #define EXPORT_SYMBOL __declspec(dllexport) +#else + #define EXPORT_SYMBOL __attribute__((visibility("default"))) +#endif + +extern "C" EXPORT_SYMBOL int target_function(int x) { EXPECT_EQ((int)130, (int)x); @@ -59,7 +66,7 @@ int target_function(int x) TEST_F(detour_test, DefaultConstructor) { - static const char name[] = "funchook"; + static const char name[] = "plthook"; /* Initialize log */ EXPECT_EQ((int)0, (int)log_configure("metacall", @@ -71,23 +78,29 @@ TEST_F(detour_test, DefaultConstructor) /* Initialize detour */ EXPECT_EQ((int)0, (int)detour_initialize()); - /* Create detour funchook */ + /* Create detour plthook */ detour d = detour_create(name); - EXPECT_NE((detour)NULL, (detour)d); + ASSERT_NE((detour)NULL, (detour)d); EXPECT_EQ((int)0, (int)strcmp(name, detour_name(d))); + /* Load detour */ + handle = detour_load_file(d, NULL); + /* Install detour */ - handle = detour_install(d, (void (*)(void)) & target_function, (void (*)(void)) & hook_function); + detour_replace(d, handle, "target_function", (void (*)(void))(&hook_function), &trampoline); EXPECT_NE((detour_handle)NULL, (detour_handle)handle); + /* Old funciton must equal to the trampoline returned by replace */ + EXPECT_EQ((int (*)(int))trampoline, (int (*)(int))(&target_function)); + /* Call detour, it should call hooked function */ EXPECT_EQ((int)132, (int)target_function(128)); /* Uninstall detour */ - EXPECT_EQ((int)0, (int)detour_uninstall(d, handle)); + detour_unload(d, handle); /* Clear detour */ EXPECT_EQ((int)0, (int)detour_clear(d)); diff --git a/source/tests/metacall_fork_test/CMakeLists.txt b/source/tests/metacall_fork_test/CMakeLists.txt index 47d389592..122637bdd 100644 --- a/source/tests/metacall_fork_test/CMakeLists.txt +++ b/source/tests/metacall_fork_test/CMakeLists.txt @@ -128,7 +128,7 @@ add_test(NAME ${target} # add_dependencies(${target} - funchook_detour + plthook_detour ) # diff --git a/tools/metacall-environment.ps1 b/tools/metacall-environment.ps1 index 8d60574a7..72ce3659b 100755 --- a/tools/metacall-environment.ps1 +++ b/tools/metacall-environment.ps1 @@ -310,9 +310,6 @@ function Configure { if ("$var" -eq 'rapidjson') { Write-Output "rapidjson selected" } - if ("$var" -eq 'funchook') { - Write-Output "funchook selected" - } if (("$var" -eq 'v8') -or ("$var" -eq 'v8rep54')) { Write-Output "v8 selected" } @@ -387,7 +384,6 @@ function Help { Write-Output " netcore2" Write-Output " netcore5" Write-Output " rapidjson" - Write-Output " funchook" Write-Output " v8" Write-Output " v8rep51" Write-Output " v8rep54" diff --git a/tools/metacall-environment.sh b/tools/metacall-environment.sh index 5735bc28a..593ac4b93 100755 --- a/tools/metacall-environment.sh +++ b/tools/metacall-environment.sh @@ -30,7 +30,6 @@ INSTALL_BASE=1 INSTALL_PYTHON=0 INSTALL_RUBY=0 INSTALL_RAPIDJSON=0 -INSTALL_FUNCHOOK=0 INSTALL_NETCORE=0 INSTALL_NETCORE2=0 INSTALL_NETCORE5=0 @@ -262,12 +261,6 @@ sub_rapidjson(){ fi } -# FuncHook -sub_funchook(){ - echo "configure funchook" - -} - # NetCore sub_netcore(){ echo "configure netcore" @@ -917,9 +910,6 @@ sub_install(){ if [ $INSTALL_RAPIDJSON = 1 ]; then sub_rapidjson fi - if [ $INSTALL_FUNCHOOK = 1 ]; then - sub_funchook - fi if [ $INSTALL_NETCORE = 1 ]; then sub_netcore fi @@ -1039,10 +1029,6 @@ sub_options(){ echo "rapidjson selected" INSTALL_RAPIDJSON=1 fi - if [ "$option" = 'funchook' ]; then - echo "funchook selected" - INSTALL_FUNCHOOK=1 - fi if [ "$option" = 'v8' ] || [ "$option" = 'v8rep54' ]; then echo "v8 selected" INSTALL_V8REPO=1 @@ -1149,7 +1135,6 @@ sub_help() { echo " netcore5" echo " netcore7" echo " rapidjson" - echo " funchook" echo " v8" echo " v8rep51" echo " v8rep54" diff --git a/tools/metacall-sanitizer.sh b/tools/metacall-sanitizer.sh index 49677c734..d5f9ac529 100755 --- a/tools/metacall-sanitizer.sh +++ b/tools/metacall-sanitizer.sh @@ -35,7 +35,7 @@ if [ "${BUILD_SANITIZER}" != "address-sanitizer" ] && [ "${BUILD_SANITIZER}" != fi # Install -"${SCRIPT_DIR}/metacall-environment.sh" base ${BUILD_LANGUAGES[@]} rapidjson funchook swig pack backtrace +"${SCRIPT_DIR}/metacall-environment.sh" base ${BUILD_LANGUAGES[@]} rapidjson swig pack backtrace # Configure and Build export NODE_PATH="/usr/lib/node_modules" From e6b92a2d028e2196ec104fe39f7ccd300bfbbe0f Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Fri, 28 Mar 2025 18:03:18 +0100 Subject: [PATCH 03/68] Detour working properly, enum still failing. --- source/detour/source/detour.c | 14 ++-- .../tests/detour_test/source/detour_test.cpp | 72 ++++++++++++++----- 2 files changed, 60 insertions(+), 26 deletions(-) diff --git a/source/detour/source/detour.c b/source/detour/source/detour.c index 58c81e892..d894a8d5b 100644 --- a/source/detour/source/detour.c +++ b/source/detour/source/detour.c @@ -167,37 +167,37 @@ detour_handle detour_load_address(detour d, void (*address)(void)) int detour_enumerate(detour d, detour_handle handle, unsigned int *position, const char **name, void (***address)(void)) { - if (d == NULL) + if (d == NULL || handle == NULL) { - log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour enumerate arguments"); + log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour replace arguments"); return 1; } - return detour_iface(d)->enumerate(handle, position, name, (void ***)address); + return detour_iface(d)->enumerate(handle->impl, position, name, (void ***)address); } int detour_replace(detour d, detour_handle handle, const char *function_name, void (*function_addr)(void), void (**function_trampoline)(void)) { - if (d == NULL) + if (d == NULL || handle == NULL) { log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour replace arguments"); return 1; } - return detour_iface(d)->replace(handle, function_name, function_addr, (void **)function_trampoline); + return detour_iface(d)->replace(handle->impl, function_name, function_addr, (void **)function_trampoline); } void detour_unload(detour d, detour_handle handle) { - if (d == NULL) + if (d == NULL || handle == NULL) { log_write("metacall", LOG_LEVEL_ERROR, "Invalid detour replace arguments"); return; } - detour_iface(d)->destroy(handle); + detour_iface(d)->destroy(handle->impl); } int detour_clear(detour d) diff --git a/source/tests/detour_test/source/detour_test.cpp b/source/tests/detour_test/source/detour_test.cpp index 029f6171c..f4009bf97 100644 --- a/source/tests/detour_test/source/detour_test.cpp +++ b/source/tests/detour_test/source/detour_test.cpp @@ -24,6 +24,8 @@ #include +#include + #include class detour_test : public testing::Test @@ -32,21 +34,31 @@ class detour_test : public testing::Test }; static detour_handle handle = NULL; -static void (*trampoline)(void) = NULL; +static const char *(*trampoline)(void) = NULL; -int hook_function(int x) +int check_detour_hook(const char *(*fp)(void)) { - EXPECT_EQ((int)128, (int)x); + static const char str_without_hook[] = "Detour Library"; + + const char *str = fp(); + + log_write("metacall", LOG_LEVEL_DEBUG, "Check: %s", str); - log_write("metacall", LOG_LEVEL_DEBUG, "Hook function %d", x); + return strncmp(str, str_without_hook, sizeof(str_without_hook) - 1); +} - int (*trampoline_ptr)(int) = (int (*)(int))trampoline; +const char *hook_function(void) +{ + static const char str_with_hook[] = "Yeet"; - int result = trampoline_ptr(x + 2) + 2; + log_write("metacall", LOG_LEVEL_DEBUG, "HOOK WORKING PROPERLY"); + log_write("metacall", LOG_LEVEL_DEBUG, "Original function: %s", trampoline()); - log_write("metacall", LOG_LEVEL_DEBUG, "Hook function result %d", result); + /* Here we check that we got the correct trampoline implementation (aka the original function) + and we can call it from inside of the body of the hook function */ + EXPECT_EQ((int)0, (int)check_detour_hook(trampoline)); - return result; + return str_with_hook; } #ifdef _WIN32 @@ -55,10 +67,8 @@ int hook_function(int x) #define EXPORT_SYMBOL __attribute__((visibility("default"))) #endif -extern "C" EXPORT_SYMBOL int target_function(int x) +extern "C" EXPORT_SYMBOL int test_exported_symbols_from_executable(int x) { - EXPECT_EQ((int)130, (int)x); - log_write("metacall", LOG_LEVEL_DEBUG, "Target function %d", x); return x; @@ -85,19 +95,43 @@ TEST_F(detour_test, DefaultConstructor) EXPECT_EQ((int)0, (int)strcmp(name, detour_name(d))); - /* Load detour */ + /* Load detour of detour library */ handle = detour_load_file(d, NULL); - /* Install detour */ - detour_replace(d, handle, "target_function", (void (*)(void))(&hook_function), &trampoline); + ASSERT_NE((detour_handle)NULL, (detour_handle)handle); + + /* Check if it can list exported symbols from executable */ + test_exported_symbols_from_executable(3); + + unsigned int position = 0; + const char *fn_name = NULL; + void (**addr)(void) = NULL; + bool found = false; + while (detour_enumerate(d, handle, &position, &fn_name, &addr) == 0) + { + log_write("metacall", LOG_LEVEL_DEBUG, "[%d] %p %s", position, *addr, fn_name); - EXPECT_NE((detour_handle)NULL, (detour_handle)handle); + if (strcmp("test_exported_symbols_from_executable", fn_name) == 0) + { + found = true; + EXPECT_EQ((void *)(*addr), (void *)(&test_exported_symbols_from_executable)); + break; + } + } + + EXPECT_EQ((bool)true, (bool)found); + + /* Install detour */ + union + { + const char *(**trampoline)(void); + void (**ptr)(void); + } cast = { &trampoline }; - /* Old funciton must equal to the trampoline returned by replace */ - EXPECT_EQ((int (*)(int))trampoline, (int (*)(int))(&target_function)); + ASSERT_EQ((int)0, detour_replace(d, handle, "detour_print_info", (void (*)(void))(&hook_function), cast.ptr)); - /* Call detour, it should call hooked function */ - EXPECT_EQ((int)132, (int)target_function(128)); + /* This must return "Yeet", so when checking the test it should return distinct from 0, then the funtion is properly hooked */ + EXPECT_NE((int)0, (int)check_detour_hook(&detour_print_info)); /* Uninstall detour */ detour_unload(d, handle); From 46f840b132215c62ee3779be86ba8dd6e2953fb4 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 2 Apr 2025 17:55:15 +0200 Subject: [PATCH 04/68] Solved metacall fork in linux. --- .../metacall/include/metacall/metacall_fork.h | 5 +- .../metacall/include/metacall/metacall_link.h | 5 +- source/metacall/source/metacall.c | 10 +-- source/metacall/source/metacall_fork.c | 73 +++++++++---------- source/metacall/source/metacall_link.c | 62 +++++++++------- source/ports/rs_port/src/bindings.rs | 4 +- .../ports/zig_port/src/metacall-bindings.zig | 2 +- .../tests/detour_test/source/detour_test.cpp | 20 +++++ 8 files changed, 97 insertions(+), 84 deletions(-) diff --git a/source/metacall/include/metacall/metacall_fork.h b/source/metacall/include/metacall/metacall_fork.h index fd9915fce..53eb2478e 100644 --- a/source/metacall/include/metacall/metacall_fork.h +++ b/source/metacall/include/metacall/metacall_fork.h @@ -88,11 +88,8 @@ METACALL_API void metacall_fork(metacall_pre_fork_callback_ptr pre_callback, met /** * @brief * Unregister fork detours and destroy shared memory -* -* @return -* Zero if success, different from zero otherwise */ -METACALL_API int metacall_fork_destroy(void); +METACALL_API void metacall_fork_destroy(void); #ifdef __cplusplus } diff --git a/source/metacall/include/metacall/metacall_link.h b/source/metacall/include/metacall/metacall_link.h index fc4f3a2c4..b9de5afff 100644 --- a/source/metacall/include/metacall/metacall_link.h +++ b/source/metacall/include/metacall/metacall_link.h @@ -76,11 +76,8 @@ METACALL_API int metacall_link_unregister(const char *symbol); /** * @brief * Unregister link detours and destroy shared memory -* -* @return -* Zero if success, different from zero otherwise */ -METACALL_API int metacall_link_destroy(void); +METACALL_API void metacall_link_destroy(void); #ifdef __cplusplus } diff --git a/source/metacall/source/metacall.c b/source/metacall/source/metacall.c index 273120fa0..12f2f14dc 100644 --- a/source/metacall/source/metacall.c +++ b/source/metacall/source/metacall.c @@ -199,19 +199,13 @@ int metacall_plugin_extension_load(void) void metacall_detour_destructor(void) { /* Destroy link */ - if (metacall_link_destroy() != 0) - { - log_write("metacall", LOG_LEVEL_ERROR, "Invalid MetaCall link destruction"); - } + metacall_link_destroy(); /* Destroy fork */ #ifdef METACALL_FORK_SAFE if (metacall_config_flags & METACALL_FLAGS_FORK_SAFE) { - if (metacall_fork_destroy() != 0) - { - log_write("metacall", LOG_LEVEL_ERROR, "Invalid MetaCall fork destruction"); - } + metacall_fork_destroy(); } #endif /* METACALL_FORK_SAFE */ diff --git a/source/metacall/source/metacall_fork.c b/source/metacall/source/metacall_fork.c index 422c00a0e..e353879fd 100644 --- a/source/metacall/source/metacall_fork.c +++ b/source/metacall/source/metacall_fork.c @@ -29,6 +29,8 @@ #include +/* -- Methods -- */ + #if defined(WIN32) || defined(_WIN32) || \ defined(__CYGWIN__) || defined(__CYGWIN32__) || \ defined(__MINGW32__) || defined(__MINGW64__) @@ -43,10 +45,6 @@ #endif #include -/* -- Definitions -- */ - - #define metacall_fork_pid _getpid - /* -- Type Definitions -- */ typedef long NTSTATUS; @@ -89,8 +87,6 @@ typedef NTSTATUS(NTAPI *RtlCloneUserProcessPtr)(ULONG ProcessFlags, /* -- Methods -- */ -void (*metacall_fork_func(void))(void); - NTSTATUS NTAPI metacall_fork_hook(ULONG ProcessFlags, PSECURITY_DESCRIPTOR ProcessSecurityDescriptor, PSECURITY_DESCRIPTOR ThreadSecurityDescriptor, @@ -104,8 +100,6 @@ NTSTATUS NTAPI metacall_fork_hook(ULONG ProcessFlags, /* -- Methods -- */ -void (*metacall_fork_func(void))(void); - pid_t metacall_fork_hook(void); #else @@ -125,21 +119,14 @@ static metacall_post_fork_callback_ptr metacall_post_fork_callback = NULL; defined(__CYGWIN__) || defined(__CYGWIN32__) || \ defined(__MINGW32__) || defined(__MINGW64__) -void (*metacall_fork_func(void))(void) -{ - HMODULE module; - RtlCloneUserProcessPtr clone_ptr; +typedef RtlCloneUserProcessPtr metacall_fork_trampoline_type; - module = GetModuleHandle("ntdll.dll"); +static const char metacall_fork_func_name[] = "RtlCloneUserProcess"; +static metacall_fork_trampoline_type metacall_fork_trampoline = NULL; - if (!module) - { - return NULL; - } - - clone_ptr = (RtlCloneUserProcessPtr)GetProcAddress(module, "RtlCloneUserProcess"); - - return (void (*)(void))clone_ptr; +static detour_handle metacall_fork_handle(detour d) +{ + return detour_load_file(d, "ntdll.dll"); } NTSTATUS NTAPI metacall_fork_hook(ULONG ProcessFlags, @@ -148,8 +135,6 @@ NTSTATUS NTAPI metacall_fork_hook(ULONG ProcessFlags, HANDLE DebugPort, PRTL_USER_PROCESS_INFORMATION ProcessInformation) { - RtlCloneUserProcessPtr metacall_fork_trampoline = (RtlCloneUserProcessPtr)detour_trampoline(detour_fork_handle); - metacall_pre_fork_callback_ptr pre_callback = metacall_pre_fork_callback; metacall_post_fork_callback_ptr post_callback = metacall_post_fork_callback; @@ -213,15 +198,18 @@ NTSTATUS NTAPI metacall_fork_hook(ULONG ProcessFlags, defined(__CYGWIN__) || defined(__CYGWIN32__) || \ (defined(__APPLE__) && defined(__MACH__)) || defined(__MACOSX__) -void (*metacall_fork_func(void))(void) +typedef pid_t (*metacall_fork_trampoline_type)(void); + +static const char metacall_fork_func_name[] = "fork"; +static metacall_fork_trampoline_type metacall_fork_trampoline = NULL; + +static detour_handle metacall_fork_handle(detour d) { - return (void (*)(void))(&fork); + return detour_load_file(d, NULL); } pid_t metacall_fork_hook(void) { - pid_t (*metacall_fork_trampoline)(void) = (pid_t(*)(void))detour_trampoline(detour_fork_handle); - metacall_pre_fork_callback_ptr pre_callback = metacall_pre_fork_callback; metacall_post_fork_callback_ptr post_callback = metacall_post_fork_callback; @@ -285,7 +273,14 @@ int metacall_fork_initialize(void) if (detour_fork_handle == NULL) { - detour_fork_handle = detour_install(d, (void (*)(void))metacall_fork_func(), (void (*)(void))(&metacall_fork_hook)); + /* Casting for getting the original function */ + union + { + metacall_fork_trampoline_type *trampoline; + void (**ptr)(void); + } cast = { &metacall_fork_trampoline }; + + detour_fork_handle = metacall_fork_handle(d); if (detour_fork_handle == NULL) { @@ -295,6 +290,15 @@ int metacall_fork_initialize(void) return 1; } + + if (detour_replace(d, detour_fork_handle, metacall_fork_func_name, (void (*)(void))(&metacall_fork_hook), cast.ptr) != 0) + { + log_write("metacall", LOG_LEVEL_ERROR, "MetaCall invalid detour fork replacement"); + + metacall_link_destroy(); + + return 1; + } } return 0; @@ -306,26 +310,17 @@ void metacall_fork(metacall_pre_fork_callback_ptr pre_callback, metacall_post_fo metacall_post_fork_callback = post_callback; } -int metacall_fork_destroy(void) +void metacall_fork_destroy(void) { - int result = 0; - if (detour_fork_handle != NULL) { detour d = detour_create(metacall_detour()); - if (detour_uninstall(d, detour_fork_handle) != 0) - { - log_write("metacall", LOG_LEVEL_ERROR, "MetaCall invalid detour fork uninstall"); - - result = 1; - } + detour_unload(d, detour_fork_handle); detour_fork_handle = NULL; } metacall_pre_fork_callback = NULL; metacall_post_fork_callback = NULL; - - return result; } diff --git a/source/metacall/source/metacall_link.c b/source/metacall/source/metacall_link.c index 3526c6b18..9812211b2 100644 --- a/source/metacall/source/metacall_link.c +++ b/source/metacall/source/metacall_link.c @@ -47,23 +47,22 @@ static threading_mutex_type link_mutex = THREADING_MUTEX_INITIALIZE; #include -void (*metacall_link_func(void))(void) +typedef FARPROC (*metacall_link_trampoline_type)(HMODULE, LPCSTR); + +static const char metacall_link_func_name[] = "GetProcAddress"; +static metacall_link_trampoline_type metacall_link_trampoline = NULL; + +static detour_handle metacall_link_handle(detour d) { - return (void (*)(void))(&GetProcAddress); + return detour_load_address(d, (void (*)(void))(&GetProcAddress)); } FARPROC metacall_link_hook(HMODULE handle, LPCSTR symbol) { - typedef FARPROC (*metacall_link_func_ptr)(HMODULE, LPCSTR); - - metacall_link_func_ptr metacall_link_trampoline; - void *ptr; threading_mutex_lock(&link_mutex); - metacall_link_trampoline = (metacall_link_func_ptr)detour_trampoline(detour_link_handle); - /* Intercept if any */ ptr = set_get(metacall_link_table, (set_key)symbol); @@ -93,18 +92,22 @@ void (*metacall_link_func(void))(void) return (void (*)(void))(&dlsym); } -void *metacall_link_hook(void *handle, const char *symbol) -{ - typedef void *(*metacall_link_func_ptr)(void *, const char *); +typedef void *(*metacall_link_trampoline_type)(void *, const char *); + +static const char metacall_link_func_name[] = "dlsym"; +static metacall_link_trampoline_type metacall_link_trampoline = NULL; - metacall_link_func_ptr metacall_link_trampoline; +static detour_handle metacall_link_handle(detour d) +{ + return detour_load_address(d, (void (*)(void))(&dlsym)); +} +void *metacall_link_hook(void *handle, const char *symbol) +{ void *ptr; threading_mutex_lock(&link_mutex); - metacall_link_trampoline = (metacall_link_func_ptr)detour_trampoline(detour_link_handle); - /* Intercept function if any */ ptr = set_get(metacall_link_table, (set_key)symbol); @@ -140,7 +143,14 @@ int metacall_link_initialize(void) if (detour_link_handle == NULL) { - detour_link_handle = detour_install(d, (void (*)(void))metacall_link_func(), (void (*)(void))(&metacall_link_hook)); + /* Casting for getting the original function */ + union + { + metacall_link_trampoline_type *trampoline; + void (**ptr)(void); + } cast = { &metacall_link_trampoline }; + + detour_link_handle = metacall_link_handle(d); if (detour_link_handle == NULL) { @@ -150,6 +160,15 @@ int metacall_link_initialize(void) return 1; } + + if (detour_replace(d, detour_link_handle, metacall_link_func_name, (void (*)(void))(&metacall_link_hook), cast.ptr) != 0) + { + log_write("metacall", LOG_LEVEL_ERROR, "MetaCall invalid detour link replacement"); + + metacall_link_destroy(); + + return 1; + } } if (metacall_link_table == NULL) @@ -193,22 +212,15 @@ int metacall_link_unregister(const char *symbol) return (set_remove(metacall_link_table, (set_key)symbol) == NULL); } -int metacall_link_destroy(void) +void metacall_link_destroy(void) { - int result = 0; - threading_mutex_lock(&link_mutex); if (detour_link_handle != NULL) { detour d = detour_create(metacall_detour()); - if (detour_uninstall(d, detour_link_handle) != 0) - { - log_write("metacall", LOG_LEVEL_ERROR, "MetaCall invalid detour fork uninstall"); - - result = 1; - } + detour_unload(d, detour_link_handle); detour_link_handle = NULL; } @@ -223,6 +235,4 @@ int metacall_link_destroy(void) threading_mutex_unlock(&link_mutex); threading_mutex_destroy(&link_mutex); - - return result; } diff --git a/source/ports/rs_port/src/bindings.rs b/source/ports/rs_port/src/bindings.rs index c4319b2ac..26a41b7bd 100644 --- a/source/ports/rs_port/src/bindings.rs +++ b/source/ports/rs_port/src/bindings.rs @@ -627,8 +627,8 @@ unsafe extern "C" { ); } unsafe extern "C" { - #[doc = " @brief\n Unregister fork detours and destroy shared memory\n\n @return\n Zero if success, different from zero otherwise"] - pub fn metacall_fork_destroy() -> ::std::os::raw::c_int; + #[doc = " @brief\n Unregister fork detours and destroy shared memory"] + pub fn metacall_fork_destroy(); } #[repr(C)] #[derive(Debug, Copy, Clone)] diff --git a/source/ports/zig_port/src/metacall-bindings.zig b/source/ports/zig_port/src/metacall-bindings.zig index 0615eb723..9e51c89cd 100644 --- a/source/ports/zig_port/src/metacall-bindings.zig +++ b/source/ports/zig_port/src/metacall-bindings.zig @@ -1235,7 +1235,7 @@ pub const metacall_pre_fork_callback_ptr = ?*const fn (?*anyopaque) callconv(.C) pub const metacall_post_fork_callback_ptr = ?*const fn (metacall_pid, ?*anyopaque) callconv(.C) c_int; pub extern fn metacall_fork_initialize() c_int; pub extern fn metacall_fork(pre_callback: metacall_pre_fork_callback_ptr, post_callback: metacall_post_fork_callback_ptr) void; -pub extern fn metacall_fork_destroy() c_int; +pub extern fn metacall_fork_destroy() void; pub const struct_metacall_initialize_configuration_type = extern struct { tag: [*c]u8 = @import("std").mem.zeroes([*c]u8), options: ?*anyopaque = @import("std").mem.zeroes(?*anyopaque), diff --git a/source/tests/detour_test/source/detour_test.cpp b/source/tests/detour_test/source/detour_test.cpp index f4009bf97..15b56ec58 100644 --- a/source/tests/detour_test/source/detour_test.cpp +++ b/source/tests/detour_test/source/detour_test.cpp @@ -61,6 +61,24 @@ const char *hook_function(void) return str_with_hook; } +/* TODO: +* This test is not going to work because detour_enumeration does not walk in +* the following sections: +* T Global text symbol +* t Local text symbol +* This funtion we are searching for is stored in: +* 0000000000073630 T test_exported_symbols_from_executable +* 00000000000736e0 t _Z13hook_functionv +* 0000000000072e34 t _Z13hook_functionv.cold +* 0000000000073680 t _Z17check_detour_hookPFPKcvE +* We can find all the sections here: https://en.wikipedia.org/wiki/Nm_(Unix) +* For listing properly all the symbols we should replicate something like +* GNU libc does under the hood for dlsym, which is implemented through do_lookup: +* https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=elf/dl-lookup.c;hb=HEAD +* We will leave this for future versions, including support for GNU hashed symbols. +*/ +#define TODO_TEST_EXPORTED_SYMBOLS_FROM_EXECUTABLE 1 + #ifdef _WIN32 #define EXPORT_SYMBOL __declspec(dllexport) #else @@ -101,6 +119,7 @@ TEST_F(detour_test, DefaultConstructor) ASSERT_NE((detour_handle)NULL, (detour_handle)handle); /* Check if it can list exported symbols from executable */ +#ifndef TODO_TEST_EXPORTED_SYMBOLS_FROM_EXECUTABLE test_exported_symbols_from_executable(3); unsigned int position = 0; @@ -120,6 +139,7 @@ TEST_F(detour_test, DefaultConstructor) } EXPECT_EQ((bool)true, (bool)found); +#endif /* Install detour */ union From 0e8dcc497aaa030c34272e315bac655968dc0b8d Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 2 Apr 2025 18:35:55 +0200 Subject: [PATCH 05/68] Start to improve node loader. --- source/loaders/node_loader/CMakeLists.txt | 70 +++++++-------- .../node_loader_win32_delay_load.h | 85 ------------------- .../node_loader/source/node_loader_impl.cpp | 49 ++++++++++- 3 files changed, 79 insertions(+), 125 deletions(-) delete mode 100644 source/loaders/node_loader/include/node_loader/node_loader_win32_delay_load.h diff --git a/source/loaders/node_loader/CMakeLists.txt b/source/loaders/node_loader/CMakeLists.txt index e557fba41..746b684ad 100644 --- a/source/loaders/node_loader/CMakeLists.txt +++ b/source/loaders/node_loader/CMakeLists.txt @@ -22,6 +22,34 @@ if(NodeJS_LIBRARY_NAME_PATH AND WIN32) file(COPY "${NodeJS_LIBRARY_NAME_PATH}" DESTINATION ${PROJECT_OUTPUT_DIR}) endif() +# Runtime (pack NodeJS DLL in windows) +# TODO: https://cmake.org/cmake/help/latest/command/file.html#get-runtime-dependencies +# TODO: https://gist.github.com/micahsnyder/5d98ac8548b429309ec5a35bca9366da +set(NodeJS_LIBRARY_DEVELOPMENT "${NodeJS_LIBRARY}") + +if(NodeJS_LIBRARY_NAME_PATH AND WIN32) + install(FILES + "${NodeJS_LIBRARY_NAME_PATH}" + DESTINATION ${INSTALL_LIB} + COMPONENT runtime + ) + + get_filename_component(NodeJS_LIBRARY_NAME "${NodeJS_LIBRARY_NAME_PATH}" NAME) + set(NodeJS_LIBRARY_DEVELOPMENT "${NodeJS_LIBRARY_NAME_PATH}") + set(NodeJS_LIBRARY_INSTALL "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB}/${NodeJS_LIBRARY_NAME}") +elseif(NodeJS_BUILD_FROM_SOURCE AND NOT WIN32) + install(FILES + "${NodeJS_LIBRARY}" + DESTINATION ${INSTALL_LIB} + COMPONENT runtime + ) + + get_filename_component(NodeJS_LIBRARY_NAME "${NodeJS_LIBRARY}" NAME) + set(NodeJS_LIBRARY_INSTALL "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB}/${NodeJS_LIBRARY_NAME}") +else() + set(NodeJS_LIBRARY_INSTALL "${NodeJS_LIBRARY}") +endif() + # # Plugin name and options # @@ -74,13 +102,6 @@ set(sources ${source_path}/node_loader_trampoline.cpp ) -if(WIN32 AND MSVC_VERSION GREATER_EQUAL 1200) - set(headers - ${headers} - ${include_path}/node_loader_win32_delay_load.h - ) -endif() - # Group source files set(header_group "Header Files (API)") set(source_group "Source Files") @@ -157,8 +178,9 @@ target_link_libraries(${target} PRIVATE ${META_PROJECT_NAME}::metacall # MetaCall library - # TODO: Replace this by /FORCE:UNRESOLVED on MSVC for later on resolving it ourselves? - $<$:${NodeJS_LIBRARY}> # NodeJS library + # Delay load for MSVC + $<$:libnode2> + $<$:delayimp> PUBLIC ${DEFAULT_LIBRARIES} @@ -172,7 +194,6 @@ target_link_libraries(${target} target_compile_definitions(${target} PRIVATE - $<$:NODEJS_LIBRARY_NAME="${NodeJS_LIBRARY_NAME}"> $<$>:_LARGEFILE_SOURCE> $<$>:_FILE_OFFSET_BITS=64> $<$,$>:_DARWIN_USE_64_BIT_INODE=1> @@ -204,6 +225,7 @@ target_compile_options(${target} target_link_options(${target} PRIVATE $<$,$>:-Wl,-undefined,dynamic_lookup> + $<$:/DELAYLOAD:${NodeJS_LIBRARY_NAME}> PUBLIC ${DEFAULT_LINKER_OPTIONS} @@ -231,34 +253,6 @@ install(TARGETS ${target} ARCHIVE DESTINATION ${INSTALL_LIB} COMPONENT dev ) -set(NodeJS_LIBRARY_DEVELOPMENT "${NodeJS_LIBRARY}") - -# Runtime (pack NodeJS DLL in windows) -# TODO: https://cmake.org/cmake/help/latest/command/file.html#get-runtime-dependencies -# TODO: https://gist.github.com/micahsnyder/5d98ac8548b429309ec5a35bca9366da -if(NodeJS_LIBRARY_NAME_PATH AND WIN32) - install(FILES - "${NodeJS_LIBRARY_NAME_PATH}" - DESTINATION ${INSTALL_LIB} - COMPONENT runtime - ) - - get_filename_component(NodeJS_LIBRARY_NAME "${NodeJS_LIBRARY_NAME_PATH}" NAME) - set(NodeJS_LIBRARY_DEVELOPMENT "${NodeJS_LIBRARY_NAME_PATH}") - set(NodeJS_LIBRARY_INSTALL "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB}/${NodeJS_LIBRARY_NAME}") -elseif(NodeJS_BUILD_FROM_SOURCE AND NOT WIN32) - install(FILES - "${NodeJS_LIBRARY}" - DESTINATION ${INSTALL_LIB} - COMPONENT runtime - ) - - get_filename_component(NodeJS_LIBRARY_NAME "${NodeJS_LIBRARY}" NAME) - set(NodeJS_LIBRARY_INSTALL "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB}/${NodeJS_LIBRARY_NAME}") -else() - set(NodeJS_LIBRARY_INSTALL "${NodeJS_LIBRARY}") -endif() - # # Configuration # diff --git a/source/loaders/node_loader/include/node_loader/node_loader_win32_delay_load.h b/source/loaders/node_loader/include/node_loader/node_loader_win32_delay_load.h deleted file mode 100644 index 47d425cee..000000000 --- a/source/loaders/node_loader/include/node_loader/node_loader_win32_delay_load.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Loader Library by Parra Studios - * A plugin for loading nodejs code at run-time into a process. - * - * Copyright (C) 2016 - 2025 Vicente Eduardo Ferrer Garcia - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -/* -- Headers -- */ - -#define WIN32_LEAN_AND_MEAN -#include - -#include -#include - -inline void *node_loader_hook_import_address_table(const char *module_name, const char *function_name, void *hook) -{ - LPVOID image_base = GetModuleHandle(module_name); - PIMAGE_DOS_HEADER dos_headers = (PIMAGE_DOS_HEADER)image_base; - - if (dos_headers->e_magic != IMAGE_DOS_SIGNATURE) - { - return NULL; - } - - PIMAGE_NT_HEADERS nt_headers = (PIMAGE_NT_HEADERS)((DWORD_PTR)image_base + dos_headers->e_lfanew); - - if (nt_headers->Signature != IMAGE_NT_SIGNATURE) - { - return NULL; - } - - IMAGE_DATA_DIRECTORY *imports_directory = &nt_headers->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT]; - - if (imports_directory->Size == 0 || imports_directory->VirtualAddress == 0) - { - return NULL; - } - - PIMAGE_IMPORT_DESCRIPTOR import_descriptor = (PIMAGE_IMPORT_DESCRIPTOR)(imports_directory->VirtualAddress + (DWORD_PTR)image_base); - - for (; import_descriptor->FirstThunk != NULL; ++import_descriptor) - { - PIMAGE_THUNK_DATA original_first_thunk = (PIMAGE_THUNK_DATA)((DWORD_PTR)image_base + import_descriptor->OriginalFirstThunk); // Image thunk data names - PIMAGE_THUNK_DATA first_thunk = (PIMAGE_THUNK_DATA)((DWORD_PTR)image_base + import_descriptor->FirstThunk); // Image thunk data address - - for (; original_first_thunk->u1.AddressOfData != NULL; ++original_first_thunk, ++first_thunk) - { - if ((original_first_thunk->u1.Ordinal & IMAGE_ORDINAL_FLAG) == 0) - { - PIMAGE_IMPORT_BY_NAME func = (PIMAGE_IMPORT_BY_NAME)((DWORD_PTR)image_base + original_first_thunk->u1.AddressOfData); - - if (strcmp(func->Name, function_name) == 0) - { - LPVOID original_address = (LPVOID)(first_thunk->u1.Function); - LPVOID import_func_load_address = (LPVOID)(&first_thunk->u1.Function); - DWORD old_page_protect, unused_old_page_protect; - - VirtualProtect(import_func_load_address, sizeof(void *), PAGE_EXECUTE_READWRITE, &old_page_protect); - - memcpy(import_func_load_address, &hook, sizeof(hook)); - - VirtualProtect(import_func_load_address, sizeof(void *), old_page_protect, &unused_old_page_protect); - - return (void *)original_address; - } - } - } - } - - return NULL; -} diff --git a/source/loaders/node_loader/source/node_loader_impl.cpp b/source/loaders/node_loader/source/node_loader_impl.cpp index e15575fec..2008cc111 100644 --- a/source/loaders/node_loader/source/node_loader_impl.cpp +++ b/source/loaders/node_loader/source/node_loader_impl.cpp @@ -899,6 +899,7 @@ static void node_loader_impl_try_destroy(loader_impl_node node_impl); /* Required for the DelayLoad hook interposition, solves bug of NodeJS extensions requiring node.exe instead of node.dll */ static HMODULE node_loader_node_dll_handle = NULL; static HMODULE (*get_module_handle_a_ptr)(_In_opt_ LPCSTR) = NULL; /* TODO: Implement W version too? */ +static detour_handle node_module_handle_a_handle = NULL; #endif /* -- Methods -- */ @@ -3690,8 +3691,38 @@ void *node_loader_impl_register(void *node_impl_ptr, void *env_ptr, void *functi /* On Windows, hook node extension loading mechanism in order to patch extensions linked to node.exe */ #if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER >= 1200) - node_loader_node_dll_handle = GetModuleHandle(NODEJS_LIBRARY_NAME); - get_module_handle_a_ptr = (HMODULE(*)(_In_opt_ LPCSTR))node_loader_hook_import_address_table("kernel32.dll", "GetModuleHandleA", &get_module_handle_a_hook); + { + /* As the library handle is correctly resolved here, either to executable, library of the executable, + or the loader dependency we can directly obtain the handle of this dependency from a function pointer */ + if (!GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT | GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, &napi_create_reference, &node_loader_node_dll_handle)) + { + napi_throw_type_error(env, nullptr, "Failed to initialize the hooking against node extensions load mechanism"); + } + + detour d = detour_create(metacall_detour()); + + node_module_handle_a_handle = detour_load_file(d, "kernel32.dll"); + + if (node_module_handle_a_handle == NULL) + { + napi_throw_type_error(env, nullptr, "Invalid creation of the detour handle for hooking node extension load mechanism"); + } + else + { + typedef HMODULE (*get_module_handle_a_type)(_In_opt_ LPCSTR); + + union + { + get_module_handle_a_type *trampoline; + void (**ptr)(void); + } cast = { &get_module_handle_a_ptr }; + + if (detour_replace(d, node_module_handle_a_handle, "GetModuleHandleA", (void (*)(void))(&get_module_handle_a_hook), cast.ptr) != 0) + { + napi_throw_type_error(env, nullptr, "Invalid replacement of GetModuleHandle for hooking node extension load mechanism"); + } + } + } #endif /* On host mode, register delayed paths */ @@ -4628,6 +4659,20 @@ int node_loader_impl_destroy(loader_impl impl) uv_thread_join(&node_impl->thread_log_id); #endif + /* On Windows, destroy the node extension hooking mechanism */ +#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER >= 1200) + { + if (node_module_handle_a_handle != NULL) + { + detour d = detour_create(metacall_detour()); + + detour_unload(d, node_module_handle_a_handle); + + node_module_handle_a_handle = NULL; + } + } +#endif + /* Print NodeJS execution result */ log_write("metacall", LOG_LEVEL_DEBUG, "NodeJS execution return status %d", node_impl->result); From 73492ee71d57133b2c2382da05f73bceedbbcaa7 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 9 Apr 2025 00:59:45 +0200 Subject: [PATCH 06/68] Improve dynlink and prepare it for managing the dependencies of the loaders. --- source/dynlink/include/dynlink/dynlink.h | 9 ++ source/dynlink/include/dynlink/dynlink_impl.h | 9 ++ .../include/dynlink/dynlink_interface.h | 4 +- source/dynlink/source/dynlink.c | 36 ++++++- source/dynlink/source/dynlink_impl.c | 15 ++- source/dynlink/source/dynlink_impl_beos.c | 18 ++-- source/dynlink/source/dynlink_impl_macos.c | 16 ++-- source/dynlink/source/dynlink_impl_unix.c | 18 ++-- source/dynlink/source/dynlink_impl_win32.c | 26 +++-- .../include/portability/portability_path.h | 2 + source/portability/source/portability_path.c | 55 +++++++++++ source/ports/node_port/CMakeLists.txt | 95 ++++++++++--------- .../source/metacall_serial_impl_serialize.c | 2 +- .../dynlink_test/source/dynlink_test.cpp | 78 ++++++++++++--- 14 files changed, 273 insertions(+), 110 deletions(-) diff --git a/source/dynlink/include/dynlink/dynlink.h b/source/dynlink/include/dynlink/dynlink.h index 57bea7ab5..3154e93fd 100644 --- a/source/dynlink/include/dynlink/dynlink.h +++ b/source/dynlink/include/dynlink/dynlink.h @@ -36,6 +36,15 @@ extern "C" { /* -- Methods -- */ +/** +* @brief +* Get the library prefix for specified platform (normally "lib") +* +* @return +* A constant string pointer to the platform prefix +*/ +DYNLINK_API const char *dynlink_prefix(void); + /** * @brief * Get the library extension for specified platform diff --git a/source/dynlink/include/dynlink/dynlink_impl.h b/source/dynlink/include/dynlink/dynlink_impl.h index f6af1d6fb..69696a55d 100644 --- a/source/dynlink/include/dynlink/dynlink_impl.h +++ b/source/dynlink/include/dynlink/dynlink_impl.h @@ -35,6 +35,15 @@ extern "C" { /* -- Methods -- */ +/** +* @brief +* Dynamically linked shared object handle prefix implementation (normally "lib") +* +* @return +* A const string reference to the prefix depending on the OS implementation +*/ +DYNLINK_API const char *dynlink_impl_prefix(void); + /** * @brief * Dynamically linked shared object handle extension implementation diff --git a/source/dynlink/include/dynlink/dynlink_interface.h b/source/dynlink/include/dynlink/dynlink_interface.h index 80b34fc39..f9b55e1d6 100644 --- a/source/dynlink/include/dynlink/dynlink_interface.h +++ b/source/dynlink/include/dynlink/dynlink_interface.h @@ -54,16 +54,16 @@ extern "C" { typedef dynlink_symbol_addr *dynlink_symbol_addr_ptr; +typedef const char *(*dynlink_impl_interface_prefix)(void); typedef const char *(*dynlink_impl_interface_extension)(void); -typedef void (*dynlink_impl_interface_get_name)(dynlink_name, dynlink_name_impl, size_t); typedef dynlink_impl (*dynlink_impl_interface_load)(dynlink); typedef int (*dynlink_impl_interface_symbol)(dynlink, dynlink_impl, dynlink_symbol_name, dynlink_symbol_addr_ptr); typedef int (*dynlink_impl_interface_unload)(dynlink, dynlink_impl); struct dynlink_impl_interface_type { + dynlink_impl_interface_prefix prefix; dynlink_impl_interface_extension extension; - dynlink_impl_interface_get_name get_name; dynlink_impl_interface_load load; dynlink_impl_interface_symbol symbol; dynlink_impl_interface_unload unload; diff --git a/source/dynlink/source/dynlink.c b/source/dynlink/source/dynlink.c index 57a70b238..ced93d585 100644 --- a/source/dynlink/source/dynlink.c +++ b/source/dynlink/source/dynlink.c @@ -43,6 +43,11 @@ struct dynlink_type /* -- Methods -- */ +const char *dynlink_prefix(void) +{ + return dynlink_impl_prefix(); +} + const char *dynlink_extension(void) { return dynlink_impl_extension(); @@ -94,13 +99,33 @@ dynlink dynlink_load(dynlink_path path, dynlink_name name, dynlink_flags flags) dynlink dynlink_load_absolute(dynlink_path path, dynlink_flags flags) { dynlink handle = malloc(sizeof(struct dynlink_type)); + size_t path_size, name_size, prefix_length; + const char *prefix = dynlink_prefix(); if (handle == NULL) { return NULL; } - strncpy(handle->name_impl, path, strnlen(path, PORTABILITY_PATH_SIZE) + 1); + path_size = strnlen(path, PORTABILITY_PATH_SIZE) + 1; + + strncpy(handle->name_impl, path, path_size); + + /* Get the library name without any extension */ + name_size = portability_path_get_name_canonical(path, path_size, handle->name, PORTABILITY_PATH_SIZE); + + /* Remove the library prefix */ + prefix_length = strlen(prefix); + + if (strncmp(prefix, handle->name, prefix_length) == 0) + { + size_t current, next = prefix_length, end = name_size - prefix_length; + + for (current = 0; current < end; ++current, ++next) + { + handle->name[current] = handle->name[next]; + } + } DYNLINK_FLAGS_SET(handle->flags, flags); @@ -125,10 +150,19 @@ dynlink dynlink_load_self(dynlink_flags flags) return NULL; } + /* Retrieve the executable path for the full name */ portability_executable_path(handle->name_impl, &path_length); + + /* Get the name without the extension */ portability_path_get_name(handle->name_impl, path_length + 1, handle->name, PORTABILITY_PATH_SIZE); + + /* Set the flags with the additional special flag for itself, + this will help to identify that the handle loaded is the current executable + and behave accordingly depending on the implementation + */ DYNLINK_FLAGS_SET(handle->flags, flags); DYNLINK_FLAGS_ADD(handle->flags, DYNLINK_FLAGS_BIND_SELF); + handle->impl = dynlink_impl_load(handle); if (handle->impl == NULL) diff --git a/source/dynlink/source/dynlink_impl.c b/source/dynlink/source/dynlink_impl.c index 86092ad43..bd0fd942c 100644 --- a/source/dynlink/source/dynlink_impl.c +++ b/source/dynlink/source/dynlink_impl.c @@ -28,6 +28,13 @@ /* -- Methods -- */ +const char *dynlink_impl_prefix(void) +{ + dynlink_impl_interface_singleton_ptr singleton = dynlink_interface(); + + return singleton()->prefix(); +} + const char *dynlink_impl_extension(void) { dynlink_impl_interface_singleton_ptr singleton = dynlink_interface(); @@ -39,9 +46,13 @@ void dynlink_impl_get_name(dynlink_name name, dynlink_name_impl name_impl, size_ { if (name != NULL && name_impl != NULL && size > 1) { - dynlink_impl_interface_singleton_ptr singleton = dynlink_interface(); + strncpy(name_impl, dynlink_impl_prefix(), size); + + strncat(name_impl, name, size - 1); + + strncat(name_impl, ".", size - 1); - singleton()->get_name(name, name_impl, size); + strncat(name_impl, dynlink_impl_extension(), size - 1); } } diff --git a/source/dynlink/source/dynlink_impl_beos.c b/source/dynlink/source/dynlink_impl_beos.c index 6a5e225f1..60688b5b7 100644 --- a/source/dynlink/source/dynlink_impl_beos.c +++ b/source/dynlink/source/dynlink_impl_beos.c @@ -31,22 +31,18 @@ /* -- Methods -- */ -const char *dynlink_impl_interface_extension_beos(void) +const char *dynlink_impl_interface_prefix_beos(void) { - static const char extension_beos[] = "so"; + static const char prefix_beos[] = "lib"; - return extension_beos; + return prefix_beos; } -void dynlink_impl_interface_get_name_beos(dynlink_name name, dynlink_name_impl name_impl, size_t size) +const char *dynlink_impl_interface_extension_beos(void) { - strncpy(name_impl, "lib", size); - - strncat(name_impl, name, size - 1); - - strncat(name_impl, ".", size - 1); + static const char extension_beos[] = "so"; - strncat(name_impl, dynlink_impl_extension(), size - 1); + return extension_beos; } dynlink_impl dynlink_impl_interface_load_beos(dynlink handle) @@ -124,8 +120,8 @@ int dynlink_impl_interface_unload_beos(dynlink handle, dynlink_impl impl) dynlink_impl_interface dynlink_impl_interface_singleton(void) { static struct dynlink_impl_interface_type impl_interface_beos = { + &dynlink_impl_interface_prefix_beos, &dynlink_impl_interface_extension_beos, - &dynlink_impl_interface_get_name_beos, &dynlink_impl_interface_load_beos, &dynlink_impl_interface_symbol_beos, &dynlink_impl_interface_unload_beos, diff --git a/source/dynlink/source/dynlink_impl_macos.c b/source/dynlink/source/dynlink_impl_macos.c index b09c8e078..c210c9bd3 100644 --- a/source/dynlink/source/dynlink_impl_macos.c +++ b/source/dynlink/source/dynlink_impl_macos.c @@ -38,20 +38,18 @@ static void *dynlink_impl_global_handle_macos = NULL; /* -- Methods -- */ -const char *dynlink_impl_interface_extension_macos(void) +const char *dynlink_impl_interface_prefix_macos(void) { - static const char extension_macos[] = "dylib"; + static const char prefix_macos[] = "lib"; - return extension_macos; + return prefix_macos; } -void dynlink_impl_interface_get_name_macos(dynlink_name name, dynlink_name_impl name_impl, size_t size) +const char *dynlink_impl_interface_extension_macos(void) { - strncpy(name_impl, name, size); - - strncat(name_impl, ".", size - 1); + static const char extension_macos[] = "dylib"; - strncat(name_impl, dynlink_impl_extension(), size - 1); + return extension_macos; } dynlink_impl dynlink_impl_interface_load_macos(dynlink handle) @@ -193,8 +191,8 @@ int dynlink_impl_interface_unload_macos(dynlink handle, dynlink_impl impl) dynlink_impl_interface dynlink_impl_interface_singleton(void) { static struct dynlink_impl_interface_type impl_interface_macos = { + &dynlink_impl_interface_prefix_macos, &dynlink_impl_interface_extension_macos, - &dynlink_impl_interface_get_name_macos, &dynlink_impl_interface_load_macos, &dynlink_impl_interface_symbol_macos, &dynlink_impl_interface_unload_macos, diff --git a/source/dynlink/source/dynlink_impl_unix.c b/source/dynlink/source/dynlink_impl_unix.c index df74485c1..b6a234abe 100644 --- a/source/dynlink/source/dynlink_impl_unix.c +++ b/source/dynlink/source/dynlink_impl_unix.c @@ -42,22 +42,18 @@ /* -- Methods -- */ -const char *dynlink_impl_interface_extension_unix(void) +const char *dynlink_impl_interface_prefix_unix(void) { - static const char extension_unix[] = "so"; + static const char prefix_unix[] = "lib"; - return extension_unix; + return prefix_unix; } -void dynlink_impl_interface_get_name_unix(dynlink_name name, dynlink_name_impl name_impl, size_t size) +const char *dynlink_impl_interface_extension_unix(void) { - strncpy(name_impl, "lib", size); - - strncat(name_impl, name, size - 1); - - strncat(name_impl, ".", size - 1); + static const char extension_unix[] = "so"; - strncat(name_impl, dynlink_impl_extension(), size - 1); + return extension_unix; } dynlink_impl dynlink_impl_interface_load_unix(dynlink handle) @@ -142,8 +138,8 @@ int dynlink_impl_interface_unload_unix(dynlink handle, dynlink_impl impl) dynlink_impl_interface dynlink_impl_interface_singleton(void) { static struct dynlink_impl_interface_type impl_interface_unix = { + &dynlink_impl_interface_prefix_unix, &dynlink_impl_interface_extension_unix, - &dynlink_impl_interface_get_name_unix, &dynlink_impl_interface_load_unix, &dynlink_impl_interface_symbol_unix, &dynlink_impl_interface_unload_unix, diff --git a/source/dynlink/source/dynlink_impl_win32.c b/source/dynlink/source/dynlink_impl_win32.c index 5d0af2a0e..9d3ec0425 100644 --- a/source/dynlink/source/dynlink_impl_win32.c +++ b/source/dynlink/source/dynlink_impl_win32.c @@ -32,26 +32,22 @@ /* -- Methods -- */ -const char *dynlink_impl_interface_extension_win32(void) -{ - static const char extension_win32[] = "dll"; - - return extension_win32; -} - -void dynlink_impl_interface_get_name_win32(dynlink_name name, dynlink_name_impl name_impl, size_t size) +const char *dynlink_impl_interface_prefix_win32(void) { #if defined(__MINGW32__) || defined(__MINGW64__) - strncpy(name_impl, "lib", size); - - strncat(name_impl, name, size - 1); + static const char prefix_win32[] = "lib"; #else - strncpy(name_impl, name, size); + static const char prefix_win32[] = ""; #endif - strncat(name_impl, ".", size - 1); + return prefix_win32; +} - strncat(name_impl, dynlink_impl_extension(), size - 1); +const char *dynlink_impl_interface_extension_win32(void) +{ + static const char extension_win32[] = "dll"; + + return extension_win32; } dynlink_impl dynlink_impl_interface_load_win32(dynlink handle) @@ -121,8 +117,8 @@ int dynlink_impl_interface_unload_win32(dynlink handle, dynlink_impl impl) dynlink_impl_interface dynlink_impl_interface_singleton(void) { static struct dynlink_impl_interface_type impl_interface_win32 = { + &dynlink_impl_interface_prefix_win32, &dynlink_impl_interface_extension_win32, - &dynlink_impl_interface_get_name_win32, &dynlink_impl_interface_load_win32, &dynlink_impl_interface_symbol_win32, &dynlink_impl_interface_unload_win32, diff --git a/source/portability/include/portability/portability_path.h b/source/portability/include/portability/portability_path.h index 36885514a..79ff0761b 100644 --- a/source/portability/include/portability/portability_path.h +++ b/source/portability/include/portability/portability_path.h @@ -111,6 +111,8 @@ extern "C" { PORTABILITY_API size_t portability_path_get_name(const char *path, size_t path_size, char *name, size_t name_size); +PORTABILITY_API size_t portability_path_get_name_canonical(const char *path, size_t path_size, char *name, size_t name_size); + PORTABILITY_API size_t portability_path_get_fullname(const char *path, size_t path_size, char *name, size_t name_size); PORTABILITY_API size_t portability_path_get_extension(const char *path, size_t path_size, char *extension, size_t extension_size); diff --git a/source/portability/source/portability_path.c b/source/portability/source/portability_path.c index 9e5232c27..ea96ca764 100644 --- a/source/portability/source/portability_path.c +++ b/source/portability/source/portability_path.c @@ -73,6 +73,61 @@ size_t portability_path_get_name(const char *path, size_t path_size, char *name, return last + 1; } +size_t portability_path_get_name_canonical(const char *path, size_t path_size, char *name, size_t name_size) +{ + if (path == NULL || name == NULL) + { + return 0; + } + + size_t i, count, last; + + for (i = 0, count = 0, last = 0; path[i] != '\0' && i < path_size && count < name_size; ++i) + { + name[count++] = path[i]; + + if (PORTABILITY_PATH_SEPARATOR(path[i])) + { + count = 0; + } + else if (path[i] == '.') + { + if (i > 0 && path[i - 1] == '.') + { + last = 0; + count = 0; + } + else + { + if (count > 0) + { + last = count - 1; + } + else + { + last = 0; + } + + /* This function is the same as portability_path_get_name but + returns the name of the file without any extension, for example: + - portability_path_get_name of libnode.so.72 is libnode.so + - portability_path_get_name_canonical of libnode.so.72 is libnode + */ + break; + } + } + } + + if (last == 0 && count > 1) + { + last = count; + } + + name[last] = '\0'; + + return last + 1; +} + size_t portability_path_get_fullname(const char *path, size_t path_size, char *name, size_t name_size) { if (path == NULL || name == NULL) diff --git a/source/ports/node_port/CMakeLists.txt b/source/ports/node_port/CMakeLists.txt index 5ddccd023..4fb44685c 100644 --- a/source/ports/node_port/CMakeLists.txt +++ b/source/ports/node_port/CMakeLists.txt @@ -89,7 +89,7 @@ install(FILES # # Check if loaders are enabled -if(NOT OPTION_BUILD_CLI OR NOT OPTION_BUILD_LOADERS OR NOT OPTION_BUILD_LOADERS_NODE OR NOT OPTION_BUILD_LOADERS_PY OR NOT OPTION_BUILD_LOADERS_RB OR NOT OPTION_BUILD_LOADERS_TS OR NOT OPTION_BUILD_SCRIPTS OR NOT OPTION_BUILD_SCRIPTS_PY OR NOT OPTION_BUILD_SCRIPTS_RB OR NOT OPTION_BUILD_SCRIPTS_TS) +if(NOT OPTION_BUILD_LOADERS OR NOT OPTION_BUILD_LOADERS_NODE OR NOT OPTION_BUILD_LOADERS_PY OR NOT OPTION_BUILD_LOADERS_RB OR NOT OPTION_BUILD_LOADERS_TS OR NOT OPTION_BUILD_SCRIPTS OR NOT OPTION_BUILD_SCRIPTS_PY OR NOT OPTION_BUILD_SCRIPTS_RB OR NOT OPTION_BUILD_SCRIPTS_TS) return() endif() @@ -116,30 +116,9 @@ if(OPTION_BUILD_THREAD_SANITIZER AND OPTION_BUILD_LOADERS_CS) endif() # -# Define test +# Define environment variables # -set(node_port_test "${target}_test") - -message(STATUS "Test ${node_port_test}") - -add_test(NAME ${target} - COMMAND ${CMAKE_COMMAND} -D "EXECUTABLE=$" -D "INPUT=${CMAKE_CURRENT_SOURCE_DIR}/test/commands/node_port.txt" -P "${CMAKE_SOURCE_DIR}/source/cli/metacallcli/test/commands/command_runner.cmake" - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -) - -# -# Define test labels -# - -set_property(TEST ${target} - PROPERTY LABELS ${node_port_test} -) - -set_tests_properties(${target} PROPERTIES - PASS_REGULAR_EXPRESSION "Tests passed without errors" -) - include(TestEnvironmentVariables) # Enable cobol test if it is built @@ -160,19 +139,7 @@ if(OPTION_BUILD_LOADERS_RS) set(TESTS_ENVIRONMENT_VARIABLES_RS "OPTION_BUILD_LOADERS_RS=1") endif() -# Add dependencies and optional dependencies -add_dependencies(${target} - node_loader - mock_loader - py_loader - rb_loader - ts_loader - ${COBOL_DEPENDENCY} - ${C_DEPENDENCY} - ${RS_DEPENDENCY} -) - -# Disable OpenSSL related tests if versions are incompatible +# Disable OpenSSL related tests if versions are incompatible (TODO: Review this bug and remove the workaround if possible) set(NodeJS_EXECUTABLE_ONLY ON) find_package(NodeJS) @@ -207,14 +174,54 @@ if(NodeJS_FOUND AND Python_Interpreter_FOUND) endif() endif() -test_environment_variables(${target} - "" - ${TESTS_ENVIRONMENT_VARIABLES} - ${TESTS_ENVIRONMENT_VARIABLES_COB} - ${TESTS_ENVIRONMENT_VARIABLES_C} - ${TESTS_ENVIRONMENT_VARIABLES_RS} - ${TESTS_ENVIRONMENT_VARIABLES_OPENSSL} -) +# +# Test importing NodeJS Port from CLI +# + +set(node_port_test "${target}_test") + +if(OPTION_BUILD_CLI) + message(STATUS "Test ${node_port_test}") + + add_test(NAME ${target} + COMMAND ${CMAKE_COMMAND} -D "EXECUTABLE=$" -D "INPUT=${CMAKE_CURRENT_SOURCE_DIR}/test/commands/node_port.txt" -P "${CMAKE_SOURCE_DIR}/source/cli/metacallcli/test/commands/command_runner.cmake" + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) + + # + # Define test labels + # + + set_property(TEST ${target} + PROPERTY LABELS ${node_port_test} + ) + + set_tests_properties(${target} PROPERTIES + PASS_REGULAR_EXPRESSION "Tests passed without errors" + ) + + # Add dependencies and optional dependencies + add_dependencies(${target} + node_loader + mock_loader + py_loader + rb_loader + ts_loader + ${COBOL_DEPENDENCY} + ${C_DEPENDENCY} + ${RS_DEPENDENCY} + ) + + # Environment variables + test_environment_variables(${target} + "" + ${TESTS_ENVIRONMENT_VARIABLES} + ${TESTS_ENVIRONMENT_VARIABLES_COB} + ${TESTS_ENVIRONMENT_VARIABLES_C} + ${TESTS_ENVIRONMENT_VARIABLES_RS} + ${TESTS_ENVIRONMENT_VARIABLES_OPENSSL} + ) +endif() # # Test importing NodeJS Port from node.exe diff --git a/source/serials/metacall_serial/source/metacall_serial_impl_serialize.c b/source/serials/metacall_serial/source/metacall_serial_impl_serialize.c index e618f935e..16dd1d267 100644 --- a/source/serials/metacall_serial/source/metacall_serial_impl_serialize.c +++ b/source/serials/metacall_serial/source/metacall_serial_impl_serialize.c @@ -221,7 +221,7 @@ void metacall_serial_impl_serialize_array(value v, char *dest, size_t size, cons (void)format; - /* Calculate sum of all array values lenght */ + /* Calculate sum of all array values length */ for (iterator = 0; iterator < array_size; ++iterator) { value current_value = array_value[iterator]; diff --git a/source/tests/dynlink_test/source/dynlink_test.cpp b/source/tests/dynlink_test/source/dynlink_test.cpp index ae8813715..5bf29f76c 100644 --- a/source/tests/dynlink_test/source/dynlink_test.cpp +++ b/source/tests/dynlink_test/source/dynlink_test.cpp @@ -28,7 +28,7 @@ #define DYNLINK_TEST_LIBRARY_PATH "DYNLINK_TEST_LIBRARY_PATH" -typedef void (*mock_loader_print_func)(void); +typedef void (*dynlink_print_func)(void); class dynlink_test : public testing::Test { @@ -60,39 +60,41 @@ TEST_F(dynlink_test, DefaultConstructor) log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object extension: %s", dynlink_extension()); - /* Test library loading */ - { #if (!defined(NDEBUG) || defined(DEBUG) || defined(_DEBUG) || defined(__DEBUG) || defined(__DEBUG__)) - const char library_name[] = "mock_loaderd"; + const char library_name[] = "dynlinkd"; #else - const char library_name[] = "mock_loader"; + const char library_name[] = "dynlink"; #endif - char *path = environment_variable_path_create(DYNLINK_TEST_LIBRARY_PATH, NULL, 0, NULL); + char *path = environment_variable_path_create(DYNLINK_TEST_LIBRARY_PATH, NULL, 0, NULL); - dynlink handle = dynlink_load(path, library_name, DYNLINK_FLAGS_BIND_NOW | DYNLINK_FLAGS_BIND_GLOBAL); + ASSERT_NE((char *)path, (char *)NULL); - environment_variable_path_destroy(path); + /* Test library loading */ + { + dynlink handle = dynlink_load(path, library_name, DYNLINK_FLAGS_BIND_NOW | DYNLINK_FLAGS_BIND_GLOBAL); ASSERT_NE(handle, (dynlink)NULL); log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file: %s", dynlink_get_name_impl(handle)); + EXPECT_EQ((int)0, (int)strcmp(library_name, dynlink_get_name(handle))); + if (handle != NULL) { - dynlink_symbol_addr mock_loader_print_info_addr; + dynlink_symbol_addr dynlink_print_info_addr; - EXPECT_EQ((int)0, dynlink_symbol(handle, "mock_loader_print_info", &mock_loader_print_info_addr)); + EXPECT_EQ((int)0, dynlink_symbol(handle, "dynlink_print_info", &dynlink_print_info_addr)); - if (mock_loader_print_info_addr != NULL) + if (dynlink_print_info_addr != NULL) { - mock_loader_print_func print = mock_loader_print_info_addr; + dynlink_print_func print = dynlink_print_info_addr; log_write("metacall", LOG_LEVEL_DEBUG, "Print function: %p", (void *)print); - log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)mock_loader_print_info_addr); + log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)dynlink_print_info_addr); - if (mock_loader_print_info_addr != NULL) + if (dynlink_print_info_addr != NULL) { log_write("metacall", LOG_LEVEL_DEBUG, "Pointer is valid"); } @@ -122,4 +124,52 @@ TEST_F(dynlink_test, DefaultConstructor) dynlink_unload(proc); /* Should do nothing except by freeing the handle */ } + + /* Test loading symbols from absolute path */ + { + char library_name_platform[PORTABILITY_PATH_SIZE]; + char absolute_path[PORTABILITY_PATH_SIZE]; + + dynlink_platform_name(library_name, library_name_platform); + + portability_path_join(path, strlen(path) + 1, library_name_platform, strlen(library_name_platform) + 1, absolute_path, PORTABILITY_PATH_SIZE); + + dynlink handle = dynlink_load_absolute(absolute_path, DYNLINK_FLAGS_BIND_NOW | DYNLINK_FLAGS_BIND_GLOBAL); + + ASSERT_NE(handle, (dynlink)NULL); + + log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object absolute path: %s", absolute_path); + log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file name: %s", dynlink_get_name_impl(handle)); + log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file: %s", dynlink_get_name(handle)); + + EXPECT_EQ((int)0, (int)strcmp(absolute_path, dynlink_get_name_impl(handle))); + EXPECT_EQ((int)0, (int)strcmp(library_name, dynlink_get_name(handle))); + + if (handle != NULL) + { + dynlink_symbol_addr dynlink_print_info_addr; + + EXPECT_EQ((int)0, dynlink_symbol(handle, "dynlink_print_info", &dynlink_print_info_addr)); + + if (dynlink_print_info_addr != NULL) + { + dynlink_print_func print = dynlink_print_info_addr; + + log_write("metacall", LOG_LEVEL_DEBUG, "Print function: %p", (void *)print); + + log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)dynlink_print_info_addr); + + if (dynlink_print_info_addr != NULL) + { + log_write("metacall", LOG_LEVEL_DEBUG, "Pointer is valid"); + } + + print(); + } + + dynlink_unload(handle); + } + } + + environment_variable_path_destroy(path); } From 70de2c43c63a6a4349a236881b73ba31f624672d Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 9 Apr 2025 18:13:45 +0200 Subject: [PATCH 07/68] Add loading of the dependencies. --- source/loader/source/loader.c | 13 +- source/loader/source/loader_impl.c | 203 ++++++++++++++++-- source/portability/CMakeLists.txt | 2 + .../portability/portability_dependency.h | 44 ++++ .../portability/source/portability_atexit.c | 1 + .../source/portability_dependency.c | 135 ++++++++++++ 6 files changed, 373 insertions(+), 25 deletions(-) create mode 100644 source/portability/include/portability/portability_dependency.h create mode 100644 source/portability/source/portability_dependency.c diff --git a/source/loader/source/loader.c b/source/loader/source/loader.c index 02ec13573..2db2b641b 100644 --- a/source/loader/source/loader.c +++ b/source/loader/source/loader.c @@ -265,9 +265,9 @@ plugin loader_get_impl_plugin(const loader_tag tag) } /* Dynamic link loader dependencies if it is not host */ - if (loader_impl_get_option_host(impl) == 0) + if (loader_impl_dependencies(impl) != 0) { - loader_impl_dependencies(impl); + goto plugin_manager_create_error; } /* Dynamic link the loader */ @@ -278,6 +278,15 @@ plugin loader_get_impl_plugin(const loader_tag tag) goto plugin_manager_create_error; } + /* If it is host, relink the loader symbols to the host (either the executable or a library) */ + if (loader_impl_get_option_host(impl) == 1) + { + // if (loader_impl_relink(impl) != 0) + // { + // goto plugin_manager_create_error; + // } + } + /* Store in the loader implementation the reference to the plugin which belongs to */ loader_impl_attach(impl, p); diff --git a/source/loader/source/loader_impl.c b/source/loader/source/loader_impl.c index 2ad8034d8..24d6045a7 100644 --- a/source/loader/source/loader_impl.c +++ b/source/loader/source/loader_impl.c @@ -36,6 +36,8 @@ #include +#include + #include #include @@ -90,6 +92,7 @@ struct loader_impl_type value options; /* Additional initialization options passed in the initialize phase */ set exec_path_map; /* Set of execution paths passed by the end user */ configuration config; /* Reference to the loader configuration, it contains execution_paths, dependencies and additional info */ + set dependencies_map; /* List of handles (dynlink) to the dependencies of the loader */ }; struct loader_handle_impl_type @@ -120,6 +123,14 @@ struct loader_impl_metadata_cb_iterator_type static loader_impl loader_impl_allocate(const loader_tag tag); +static void loader_impl_configuration_execution_paths(loader_impl_interface iface, loader_impl impl); + +static int loader_impl_dependencies_self_list(const char *library, void *data); + +static int loader_impl_dependencies_self_find(loader_impl impl, const char *key_str, vector dependencies_self); + +static int loader_impl_dependencies_load(loader_impl impl, const char *key_str, value *paths_array, size_t paths_size); + static configuration loader_impl_initialize_configuration(const loader_tag tag); static int loader_impl_initialize_registered(plugin_manager manager, plugin p); @@ -208,8 +219,17 @@ loader_impl loader_impl_allocate(const loader_tag tag) goto alloc_exec_path_map_error; } + impl->dependencies_map = set_create(&hash_callback_str, &comparable_callback_str); + + if (impl->dependencies_map == NULL) + { + goto alloc_dependencies_map_error; + } + return impl; +alloc_dependencies_map_error: + set_destroy(impl->exec_path_map); alloc_exec_path_map_error: context_destroy(impl->ctx); alloc_ctx_error: @@ -289,15 +309,113 @@ void loader_impl_configuration_execution_paths(loader_impl_interface iface, load } } +int loader_impl_dependencies_self_list(const char *library, void *data) +{ + vector dependencies_self = (vector)data; + + vector_push_back_empty(dependencies_self); + + strncpy(vector_back(dependencies_self), library, strnlen(library, PORTABILITY_PATH_SIZE)); + + return 0; +} + +int loader_impl_dependencies_self_find(loader_impl impl, const char *key_str, vector dependencies_self) +{ + size_t iterator, size = vector_size(dependencies_self); + char library_self_name[PORTABILITY_PATH_SIZE]; + + for (iterator = 0; iterator < size; ++iterator) + { + const char *library_self = vector_at(dependencies_self, iterator); + + /* Get the name of the library */ + portability_path_get_fullname(library_self, strnlen(library_self, PORTABILITY_PATH_SIZE) + 1, library_self_name, PORTABILITY_PATH_SIZE); + + /* Try to find the dependency name in the library */ + if (strstr(library_self_name, key_str) != NULL) + { + dynlink handle = dynlink_load_absolute(library_self, DYNLINK_FLAGS_BIND_LAZY | DYNLINK_FLAGS_BIND_GLOBAL); + + if (handle != NULL && set_insert(impl->dependencies_map, (const set_key)key_str, (set_value)handle) == 0) + { + return 0; + } + + dynlink_unload(handle); + + return 1; + } + } + + return 1; +} + +int loader_impl_dependencies_load(loader_impl impl, const char *key_str, value *paths_array, size_t paths_size) +{ + size_t iterator; + + for (iterator = 0; iterator < paths_size; ++iterator) + { + if (value_type_id(paths_array[iterator]) == TYPE_STRING) + { + const char *library_path = value_to_string(paths_array[iterator]); + + if (library_path != NULL) + { + dynlink handle = dynlink_load_absolute(library_path, DYNLINK_FLAGS_BIND_LAZY | DYNLINK_FLAGS_BIND_GLOBAL); + + if (handle != NULL && set_insert(impl->dependencies_map, (const set_key)key_str, (set_value)handle) == 0) + { + return 0; + } + + dynlink_unload(handle); + } + } + } + + return 1; +} + int loader_impl_dependencies(loader_impl impl) { - /* Dependencies have the following format */ - /* + const int host = loader_impl_get_option_host(impl); + + /* Dependencies have the following format: + { "dependencies": { "node": ["/usr/lib/x86_64-linux-gnu/libnode.so.72"] } } + + The algorithm works in the following way: + 1) If current loader is the host: + - Take the dependency name and try to find if it is already + loaded as a library in the current process, for example: + + "dependencies": { + "node": ["/usr/lib/x86_64-linux-gnu/libnode.so.72"] + } + + Will search for all libraries, looking for the library name + with the following substring (lib)node, so if we find: + + "/usr/lib/x86_64-linux-gnu/libnode.so.108" + + It will test against libnode.so.108 the substring (lib)node. + + - If it has not been found, then get the handle of the current process. + + 2) Otherwise, the current loader is not the host: + - Iterate the dependencies and if they are properly loaded, index + them by name in the dependency map, for example: + + [ Key ] => [ Value ] + "node" => "/usr/lib/x86_64-linux-gnu/libnode.so.72" + + The value in this case will be the library loaded, instead of the full path. */ value dependencies_value = configuration_value_type(impl->config, "dependencies", TYPE_MAP); @@ -305,49 +423,67 @@ int loader_impl_dependencies(loader_impl impl) { size_t size = value_type_count(dependencies_value); value *dependencies_map = value_to_map(dependencies_value); + vector dependencies_self = NULL; size_t iterator; + /* In case of host, get all loaded dependencies into an array */ + if (host == 1) + { + dependencies_self = vector_create(sizeof(char) * PORTABILITY_PATH_SIZE); + + if (dependencies_self == NULL) + { + return 1; + } + + if (portability_dependendency_iterate(&loader_impl_dependencies_self_list, (void *)dependencies_self) != 0) + { + vector_destroy(dependencies_self); + return 1; + } + } + + /* Iterate through the dependencies */ for (iterator = 0; iterator < size; ++iterator) { if (value_type_id(dependencies_map[iterator]) == TYPE_ARRAY) { value *library_tuple = value_to_array(dependencies_map[iterator]); - if (value_type_id(library_tuple[1]) == TYPE_ARRAY) + if (value_type_id(library_tuple[0]) == TYPE_STRING) { - value *paths_array = value_to_array(library_tuple[1]); - size_t paths_size = value_type_count(library_tuple[1]); - size_t path; - int found = 0; + const char *key_str = value_to_string(library_tuple[0]); - for (path = 0; path < paths_size; ++path) + if (host == 0) { - if (value_type_id(paths_array[iterator]) == TYPE_STRING) + /* If the loader is not the host, iterate through all dependencies and load them */ + if (value_type_id(library_tuple[1]) == TYPE_ARRAY) { - const char *library_path = value_to_string(paths_array[iterator]); + value *paths_array = value_to_array(library_tuple[1]); + size_t paths_size = value_type_count(library_tuple[1]); - if (library_path != NULL) + if (loader_impl_dependencies_load(impl, key_str, paths_array, paths_size) != 0) { - dynlink handle = dynlink_load_absolute(library_path, DYNLINK_FLAGS_BIND_LAZY | DYNLINK_FLAGS_BIND_GLOBAL); - - if (handle != NULL) - { - found = 1; - break; - } + log_write("metacall", LOG_LEVEL_ERROR, "Failed to load dependency '%s' from loader configuration '%s.json'", key_str, plugin_name(impl->p)); + return 1; } } } - - if (!found) + else { - const char *dependency = value_type_id(library_tuple[0]) == TYPE_STRING ? value_to_string(library_tuple[0]) : "unknown_library"; - log_write("metacall", LOG_LEVEL_ERROR, "Failed to load dependency '%s' from loader configuration '%s.json'", dependency, plugin_name(impl->p)); - return 1; + /* Otherwise try to find if the library is already loaded, and if not, load the process */ + if (loader_impl_dependencies_self_find(impl, key_str, dependencies_self) != 0) + { + log_write("metacall", LOG_LEVEL_ERROR, "Failed to load dependency '%s' from loader '%s' as a host", key_str, plugin_name(impl->p)); + vector_destroy(dependencies_self); + return 1; + } } } } } + + vector_destroy(dependencies_self); } return 0; @@ -1580,6 +1716,22 @@ int loader_impl_destroy_exec_path_map_cb_iterate(set s, set_key key, set_value v return 0; } +int loader_impl_destroy_dependencies_map_cb_iterate(set s, set_key key, set_value val, set_cb_iterate_args args) +{ + (void)s; + (void)key; + (void)args; + + if (val != NULL) + { + dynlink dependency = val; + + dynlink_unload(dependency); + } + + return 0; +} + void loader_impl_destroy_objects(loader_impl impl) { /* This iterates through all functions, classes objects and types, @@ -1637,6 +1789,11 @@ void loader_impl_destroy_deallocate(loader_impl impl) value_type_destroy(impl->options); } + /* Unload all the dependencies when everything has been destroyed and the loader is unloaded */ + set_iterate(impl->dependencies_map, &loader_impl_destroy_dependencies_map_cb_iterate, NULL); + + set_destroy(impl->dependencies_map); + free(impl); } diff --git a/source/portability/CMakeLists.txt b/source/portability/CMakeLists.txt index 1855258d2..b6baba4a8 100644 --- a/source/portability/CMakeLists.txt +++ b/source/portability/CMakeLists.txt @@ -41,6 +41,7 @@ set(headers ${include_path}/portability_working_path.h ${include_path}/portability_path.h ${include_path}/portability_atexit.h + ${include_path}/portability_dependency.h ) set(sources @@ -50,6 +51,7 @@ set(sources ${source_path}/portability_working_path.c ${source_path}/portability_path.c ${source_path}/portability_atexit.c + ${source_path}/portability_dependency.c ) # Group source files diff --git a/source/portability/include/portability/portability_dependency.h b/source/portability/include/portability/portability_dependency.h new file mode 100644 index 000000000..2fbf4cce2 --- /dev/null +++ b/source/portability/include/portability/portability_dependency.h @@ -0,0 +1,44 @@ +/* + * Portability Library by Parra Studios + * A generic cross-platform portability utility. + * + * Copyright (C) 2016 - 2025 Vicente Eduardo Ferrer Garcia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef PORTABILITY_DEPENDENCY_H +#define PORTABILITY_DEPENDENCY_H 1 + +/* -- Headers -- */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* -- Type Definitions -- */ + +typedef int (*portability_dependendency_iterate_cb)(const char *library, void *data); + +/* -- Methods -- */ + +int portability_dependendency_iterate(portability_dependendency_iterate_cb callback, void *data); + +#ifdef __cplusplus +} +#endif + +#endif /* PORTABILITY_DEPENDENCY_H */ diff --git a/source/portability/source/portability_atexit.c b/source/portability/source/portability_atexit.c index 5dafc48a9..ee18e7795 100644 --- a/source/portability/source/portability_atexit.c +++ b/source/portability/source/portability_atexit.c @@ -54,6 +54,7 @@ static void portability_atexit_destroy(void) } free(prev); + } while (atexit_list != NULL); atexit_list = NULL; diff --git a/source/portability/source/portability_dependency.c b/source/portability/source/portability_dependency.c new file mode 100644 index 000000000..55e633de4 --- /dev/null +++ b/source/portability/source/portability_dependency.c @@ -0,0 +1,135 @@ +/* + * MetaCall Library by Parra Studios + * A library for providing a foreign function interface calls. + * + * Copyright (C) 2016 - 2025 Vicente Eduardo Ferrer Garcia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* -- Headers -- */ + +#include + +#include + +#if defined(linux) || defined(__linux__) || defined(__linux) || defined(__gnu_linux) || \ + defined(__FreeBSD__) + + #ifndef _GNU_SOURCE + #define _GNU_SOURCE + #endif + #include + +#elif (defined(__APPLE__) && defined(__MACH__)) || defined(__MACOSX__) + + #include + +#elif defined(WIN32) || defined(_WIN32) + + #include + #include + +#else + #error "Unsupported platform for portability_dependendency_iterate" +#endif + +#if defined(linux) || defined(__linux__) || defined(__linux) || defined(__gnu_linux) || \ + defined(__FreeBSD__) + +/* -- Type Definitions -- */ + +typedef struct portability_dependendency_iterate_phdr_type *portability_dependendency_iterate_phdr; + +/* -- Member Data -- */ + +struct portability_dependendency_iterate_phdr_type +{ + portability_dependendency_iterate_cb callback; + void *data; +}; + +/* -- Private Methods -- */ + +static int portability_dependendency_iterate_phdr_callback(struct dl_phdr_info *info, size_t size, void *data) +{ + portability_dependendency_iterate_phdr phdr = (portability_dependendency_iterate_phdr)data; + + (void)size; + + return phdr->callback(info->dlpi_name, phdr->data); +} + +#endif + +int portability_dependendency_iterate(portability_dependendency_iterate_cb callback, void *data) +{ + if (callback == NULL) + { + return 1; + } + +#if defined(linux) || defined(__linux__) || defined(__linux) || defined(__gnu_linux) || \ + defined(__FreeBSD__) + { + struct portability_dependendency_iterate_phdr_type phdr = { + callback, + data + }; + + return dl_iterate_phdr(&portability_dependendency_iterate_phdr_callback, (void *)&phdr); + } +#elif (defined(__APPLE__) && defined(__MACH__)) || defined(__MACOSX__) + { + uint32_t iterator, size = _dyld_image_count(); + + for (iterator = 0; iterator < size; ++iterator) + { + const char *image_name = _dyld_get_image_name(iterator); + + if (callback(image_name, data) != 0) + { + return 1; + } + } + + return 0; + } +#elif defined(WIN32) || defined(_WIN32) + { + HANDLE process = GetCurrentProcess(); + HMODULE modules[1024]; + DWORD modules_size; + + if (EnumProcessModules(process, modules, sizeof(modules), &modules_size)) + { + size_t iterator, size = modules_size / sizeof(HMODULE); + char module_name[MAX_PATH]; + + for (iterator = 0; i < size; ++iterator) + { + if (GetModuleFileNameExA(process, modules[iterator], module_name, sizeof(module_name) / sizeof(char))) + { + if (callback(module_name, data) != 0) + { + return 1; + } + } + } + } + + return 0; + } +#endif +} From 7c43f635e7ee0bf93aa1f80ed1bc7c391c288f88 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 9 Apr 2025 22:29:59 +0200 Subject: [PATCH 08/68] Improve the implementation. --- .../environment/source/environment_variable.c | 2 +- source/loader/include/loader/loader_impl.h | 2 + source/loader/source/loader.c | 11 +- source/loader/source/loader_impl.c | 108 ++++++++++++++---- .../node_loader/source/node_loader_impl.cpp | 9 +- .../node_loader/source/node_loader_port.cpp | 2 +- .../metacall/include/metacall/metacall_link.h | 18 ++- source/metacall/source/metacall_link.c | 15 ++- source/plugin/include/plugin/plugin_impl.h | 2 +- source/plugin/source/plugin_impl.c | 2 +- 10 files changed, 131 insertions(+), 40 deletions(-) diff --git a/source/environment/source/environment_variable.c b/source/environment/source/environment_variable.c index 9323e0163..a9e94eb23 100644 --- a/source/environment/source/environment_variable.c +++ b/source/environment/source/environment_variable.c @@ -77,7 +77,7 @@ const char *environment_variable_get(const char *name, const char *default_value int environment_variable_set(const char *name, const char *value_string) { -#if defined(_WIN32) +#if defined(WIN32) || defined(_WIN32) return _putenv_s(name, value_string); #else return setenv(name, value_string, 1); diff --git a/source/loader/include/loader/loader_impl.h b/source/loader/include/loader/loader_impl.h index f7c7d56cb..3a2655e39 100644 --- a/source/loader/include/loader/loader_impl.h +++ b/source/loader/include/loader/loader_impl.h @@ -45,6 +45,8 @@ LOADER_API loader_impl loader_impl_create_host(const loader_tag tag); LOADER_API int loader_impl_dependencies(loader_impl impl); +LOADER_API int loader_impl_link(plugin p, loader_impl impl); + LOADER_API void loader_impl_attach(loader_impl impl, plugin p); LOADER_API plugin loader_impl_plugin(loader_impl impl); diff --git a/source/loader/source/loader.c b/source/loader/source/loader.c index 2db2b641b..8511f2715 100644 --- a/source/loader/source/loader.c +++ b/source/loader/source/loader.c @@ -278,13 +278,10 @@ plugin loader_get_impl_plugin(const loader_tag tag) goto plugin_manager_create_error; } - /* If it is host, relink the loader symbols to the host (either the executable or a library) */ - if (loader_impl_get_option_host(impl) == 1) + /* If it is host, link the loader symbols to the host (either the executable or a library) */ + if (loader_impl_link(p, impl) != 0) { - // if (loader_impl_relink(impl) != 0) - // { - // goto plugin_manager_create_error; - // } + goto plugin_manager_create_error; } /* Store in the loader implementation the reference to the plugin which belongs to */ @@ -793,7 +790,7 @@ void loader_unload_children(loader_impl impl) * the loader has been unloaded, and the function interface will point to an unloaded * plugin, generating a segmentation fault. All the plugins will be unloaded on plugin_manager_destroy. */ - plugin_destroy_delayed(order->p); + plugin_destructor(order->p); /* Mark loader as destroyed (prevents access to already freed memory and defines what loaders are destroyed) */ loader_manager_impl_set_destroyed(manager_impl, destroyed_impl); diff --git a/source/loader/source/loader_impl.c b/source/loader/source/loader_impl.c index 24d6045a7..9ccb51d00 100644 --- a/source/loader/source/loader_impl.c +++ b/source/loader/source/loader_impl.c @@ -92,7 +92,7 @@ struct loader_impl_type value options; /* Additional initialization options passed in the initialize phase */ set exec_path_map; /* Set of execution paths passed by the end user */ configuration config; /* Reference to the loader configuration, it contains execution_paths, dependencies and additional info */ - set dependencies_map; /* List of handles (dynlink) to the dependencies of the loader */ + set library_map; /* List of handles (dynlink) to the dependencies of the loader and the loader itself */ }; struct loader_handle_impl_type @@ -219,16 +219,16 @@ loader_impl loader_impl_allocate(const loader_tag tag) goto alloc_exec_path_map_error; } - impl->dependencies_map = set_create(&hash_callback_str, &comparable_callback_str); + impl->library_map = set_create(&hash_callback_str, &comparable_callback_str); - if (impl->dependencies_map == NULL) + if (impl->library_map == NULL) { - goto alloc_dependencies_map_error; + goto alloc_library_map_error; } return impl; -alloc_dependencies_map_error: +alloc_library_map_error: set_destroy(impl->exec_path_map); alloc_exec_path_map_error: context_destroy(impl->ctx); @@ -324,7 +324,9 @@ int loader_impl_dependencies_self_find(loader_impl impl, const char *key_str, ve { size_t iterator, size = vector_size(dependencies_self); char library_self_name[PORTABILITY_PATH_SIZE]; + dynlink handle; + /* Try to load it from the dependencies of the executable */ for (iterator = 0; iterator < size; ++iterator) { const char *library_self = vector_at(dependencies_self, iterator); @@ -335,19 +337,24 @@ int loader_impl_dependencies_self_find(loader_impl impl, const char *key_str, ve /* Try to find the dependency name in the library */ if (strstr(library_self_name, key_str) != NULL) { - dynlink handle = dynlink_load_absolute(library_self, DYNLINK_FLAGS_BIND_LAZY | DYNLINK_FLAGS_BIND_GLOBAL); + handle = dynlink_load_absolute(library_self, DYNLINK_FLAGS_BIND_LAZY | DYNLINK_FLAGS_BIND_GLOBAL); - if (handle != NULL && set_insert(impl->dependencies_map, (const set_key)key_str, (set_value)handle) == 0) - { - return 0; - } + goto dependencies_map_insert; + } + } - dynlink_unload(handle); + /* If it is not found in the dependencies, it is linked statically to the executable, load it */ + handle = dynlink_load_self(DYNLINK_FLAGS_BIND_LAZY | DYNLINK_FLAGS_BIND_GLOBAL); - return 1; - } +dependencies_map_insert: + + if (handle != NULL && set_insert(impl->library_map, (const set_key)key_str, (set_value)handle) == 0) + { + return 0; } + dynlink_unload(handle); + return 1; } @@ -365,7 +372,7 @@ int loader_impl_dependencies_load(loader_impl impl, const char *key_str, value * { dynlink handle = dynlink_load_absolute(library_path, DYNLINK_FLAGS_BIND_LAZY | DYNLINK_FLAGS_BIND_GLOBAL); - if (handle != NULL && set_insert(impl->dependencies_map, (const set_key)key_str, (set_value)handle) == 0) + if (handle != NULL && set_insert(impl->library_map, (const set_key)key_str, (set_value)handle) == 0) { return 0; } @@ -380,17 +387,16 @@ int loader_impl_dependencies_load(loader_impl impl, const char *key_str, value * int loader_impl_dependencies(loader_impl impl) { - const int host = loader_impl_get_option_host(impl); - /* Dependencies have the following format: - { "dependencies": { "node": ["/usr/lib/x86_64-linux-gnu/libnode.so.72"] } } + */ + value dependencies_value = configuration_value_type(impl->config, "dependencies", TYPE_MAP); - The algorithm works in the following way: + /* The algorithm works in the following way: 1) If current loader is the host: - Take the dependency name and try to find if it is already loaded as a library in the current process, for example: @@ -417,7 +423,6 @@ int loader_impl_dependencies(loader_impl impl) The value in this case will be the library loaded, instead of the full path. */ - value dependencies_value = configuration_value_type(impl->config, "dependencies", TYPE_MAP); if (dependencies_value != NULL) { @@ -425,6 +430,7 @@ int loader_impl_dependencies(loader_impl impl) value *dependencies_map = value_to_map(dependencies_value); vector dependencies_self = NULL; size_t iterator; + const int host = loader_impl_get_option_host(impl); /* In case of host, get all loaded dependencies into an array */ if (host == 1) @@ -489,6 +495,55 @@ int loader_impl_dependencies(loader_impl impl) return 0; } +int loader_impl_link(plugin p, loader_impl impl) +{ + plugin_descriptor desc = plugin_desc(p); + + /* On Linux and MacOS, if the symbols are exported, + the linker when loading the library automatically resolves the symbols + so there is no need for doing the link manually, in Windows meanwhile + we link the dependency with delay load linking. Before we execute anything, + we should relink all the symbols to the host. + */ +#if defined(WIN32) || defined(_WIN32) + if (loader_impl_get_option_host(impl) == 1) + { + /* TODO: Replace loader symbols by the dependency (aka the already loaded + library if the host is linked dynamically, or the executable if it is + linked statically): + + loader_handle = detour_load_handle(d, desc->handle); + + while (detour_enumerate(d, loader_handle, position, name, addr)) + { + foreach(library_handle in impl->library_map) + { + symbol = dynlink_symbol(library_handle, name); + + if (symbol != NULL) + { + if (detour_replace(d, loader_handle, name, symbol, ...) == 0) + { + break; + } + } + } + } + + detour_unload(d, loader_handle); + */ + } +#endif + + /* Store itself in the library map along with the dependencies */ + if (set_insert(impl->library_map, (set_key)desc->library_name, (set_value)desc->handle) != 0) + { + return 1; + } + + return 0; +} + configuration loader_impl_initialize_configuration(const loader_tag tag) { static const char configuration_key_suffix[] = "_loader"; @@ -1789,10 +1844,16 @@ void loader_impl_destroy_deallocate(loader_impl impl) value_type_destroy(impl->options); } + /* TODO: I am not sure this will work. + This must be done when the plugin handle (aka the loader) gets unloaded, + at this point it is not unloaded yet, because the plugin destructor is called before doing: + dynlink_unload(p->descriptor->handle); + In theory it should work because normally those handles are reference counted but "I don't trust like that". + */ /* Unload all the dependencies when everything has been destroyed and the loader is unloaded */ - set_iterate(impl->dependencies_map, &loader_impl_destroy_dependencies_map_cb_iterate, NULL); + set_iterate(impl->library_map, &loader_impl_destroy_dependencies_map_cb_iterate, NULL); - set_destroy(impl->dependencies_map); + set_destroy(impl->library_map); free(impl); } @@ -1822,6 +1883,11 @@ void loader_impl_destroy(plugin p, loader_impl impl) impl->init = 1; } + + /* Remove the loader library from the library list */ + plugin_descriptor desc = plugin_desc(p); + + set_remove(impl->library_map, (set_key)desc->library_name); } else { diff --git a/source/loaders/node_loader/source/node_loader_impl.cpp b/source/loaders/node_loader/source/node_loader_impl.cpp index 2008cc111..d05b2b4a6 100644 --- a/source/loaders/node_loader/source/node_loader_impl.cpp +++ b/source/loaders/node_loader/source/node_loader_impl.cpp @@ -810,7 +810,9 @@ class loader_impl_napi_constructor public: loader_impl_napi_constructor() { - if (metacall_link_register("napi_register_module_v1", (void (*)(void))(&node_loader_port_initialize)) != 0) + static const loader_tag node_loader_tag = "node"; + + if (metacall_link_register(node_loader_tag, "node", "napi_register_module_v1", (void (*)(void))(&node_loader_port_initialize)) != 0) { log_write("metacall", LOG_LEVEL_ERROR, "Node loader failed register the link hook"); } @@ -3693,8 +3695,9 @@ void *node_loader_impl_register(void *node_impl_ptr, void *env_ptr, void *functi #if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER >= 1200) { /* As the library handle is correctly resolved here, either to executable, library of the executable, - or the loader dependency we can directly obtain the handle of this dependency from a function pointer */ - if (!GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT | GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, &napi_create_reference, &node_loader_node_dll_handle)) + or the loader dependency we can directly obtain the handle of this dependency from a function pointer, + use any function that is contained in node runtime, in this case we are using napi_create_array */ + if (!GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT | GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, &napi_create_array, &node_loader_node_dll_handle)) { napi_throw_type_error(env, nullptr, "Failed to initialize the hooking against node extensions load mechanism"); } diff --git a/source/loaders/node_loader/source/node_loader_port.cpp b/source/loaders/node_loader/source/node_loader_port.cpp index f96f1f295..82eaafbff 100644 --- a/source/loaders/node_loader/source/node_loader_port.cpp +++ b/source/loaders/node_loader/source/node_loader_port.cpp @@ -1114,7 +1114,7 @@ napi_value node_loader_port_initialize(napi_env env, napi_value exports) node_loader_port_exports(env, exports); /* Unregister NAPI Hook */ - if (metacall_link_unregister("napi_register_module_v1") != 0) + if (metacall_link_unregister(node_loader_tag, "node", "napi_register_module_v1") != 0) { // TODO: Handle error } diff --git a/source/metacall/include/metacall/metacall_link.h b/source/metacall/include/metacall/metacall_link.h index b9de5afff..598358aa9 100644 --- a/source/metacall/include/metacall/metacall_link.h +++ b/source/metacall/include/metacall/metacall_link.h @@ -50,6 +50,12 @@ METACALL_API int metacall_link_initialize(void); * Function interposition is required in order to hook into runtimes * and dynamically interpose our functions. * +* @param[in] tag +* Name of the loader which the @dependency belongs to +* +* @param[in] library +* Name of the library that is going to be hooked +* * @param[in] symbol * Name of the function to be interposed * @@ -59,19 +65,25 @@ METACALL_API int metacall_link_initialize(void); * @return * Zero if success, different from zero otherwise */ -METACALL_API int metacall_link_register(const char *symbol, void (*fn)(void)); +METACALL_API int metacall_link_register(const char *tag, const char *library, const char *symbol, void (*fn)(void)); /** * @brief * Remove the hook previously registered * +* @param[in] tag +* Name of the loader which the @dependency belongs to +* +* @param[in] library +* Name of the library that is going to be hooked +* * @param[in] symbol -* Name of the function to be removed +* Name of the function to be interposed * * @return * Zero if success, different from zero otherwise */ -METACALL_API int metacall_link_unregister(const char *symbol); +METACALL_API int metacall_link_unregister(const char *tag, const char *library, const char *symbol); /** * @brief diff --git a/source/metacall/source/metacall_link.c b/source/metacall/source/metacall_link.c index 9812211b2..838207de6 100644 --- a/source/metacall/source/metacall_link.c +++ b/source/metacall/source/metacall_link.c @@ -97,9 +97,20 @@ typedef void *(*metacall_link_trampoline_type)(void *, const char *); static const char metacall_link_func_name[] = "dlsym"; static metacall_link_trampoline_type metacall_link_trampoline = NULL; +/* TODO: We have to implement a lazy loaded map for +detours and load it from the loaders whenever hooking +is required, on destroy we can delete all the hook handles +*/ + static detour_handle metacall_link_handle(detour d) { + /* return detour_load_address(d, (void (*)(void))(&dlsym)); + */ + /* + return detour_load_file(d, NULL); + */ + return detour_load_file(d, "/lib/x86_64-linux-gnu/libnode.so.72"); } void *metacall_link_hook(void *handle, const char *symbol) @@ -188,7 +199,7 @@ int metacall_link_initialize(void) return 0; } -int metacall_link_register(const char *symbol, void (*fn)(void)) +int metacall_link_register(const char *tag, const char *library, const char *symbol, void (*fn)(void)) { void *ptr; @@ -202,7 +213,7 @@ int metacall_link_register(const char *symbol, void (*fn)(void)) return set_insert(metacall_link_table, (set_key)symbol, ptr); } -int metacall_link_unregister(const char *symbol) +int metacall_link_unregister(const char *tag, const char *library, const char *symbol) { if (metacall_link_table == NULL) { diff --git a/source/plugin/include/plugin/plugin_impl.h b/source/plugin/include/plugin/plugin_impl.h index c74706197..bc8b51ecf 100644 --- a/source/plugin/include/plugin/plugin_impl.h +++ b/source/plugin/include/plugin/plugin_impl.h @@ -59,7 +59,7 @@ PLUGIN_API void *plugin_iface(plugin p); PLUGIN_API void *plugin_impl(plugin p); -PLUGIN_API void plugin_destroy_delayed(plugin p); +PLUGIN_API void plugin_destructor(plugin p); PLUGIN_API void plugin_destroy(plugin p); diff --git a/source/plugin/source/plugin_impl.c b/source/plugin/source/plugin_impl.c index 1de83e55f..5cb9e6f2c 100644 --- a/source/plugin/source/plugin_impl.c +++ b/source/plugin/source/plugin_impl.c @@ -101,7 +101,7 @@ void *plugin_impl(plugin p) return p->impl; } -void plugin_destroy_delayed(plugin p) +void plugin_destructor(plugin p) { if (p != NULL) { From 4954d8dfbd46ecc35104504668fbea6686ef3426 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 10 Apr 2025 17:22:13 +0200 Subject: [PATCH 09/68] Typo on notice. --- NOTICE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NOTICE b/NOTICE index e584ab4a7..f51329169 100644 --- a/NOTICE +++ b/NOTICE @@ -19,7 +19,7 @@ All external code and licenses used by **METACALL** are always wrapped into plug - [2. Serials](#2-serials) - [2.1 RapidJSON](#21-rapidjson) - [3. Detours](#3-detours) - - [3.1 PLTHook](#31-fookhook) + - [3.1 PLTHook](#31-plthook) - [4. Ports](#4-ports) - [4.1 Swig](#41-swig) From 9a31798945b707702611d37aa2f59d6738eeed62 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 10 Apr 2025 17:23:40 +0200 Subject: [PATCH 10/68] First version of plthook working, improved dylink and added support for hooking the loaders. --- source/dynlink/include/dynlink/dynlink.h | 18 +-- source/dynlink/include/dynlink/dynlink_impl.h | 12 +- .../include/dynlink/dynlink_interface.h | 2 +- source/dynlink/include/dynlink/dynlink_type.h | 12 +- source/dynlink/source/dynlink.c | 44 ++++---- source/dynlink/source/dynlink_impl.c | 14 +-- source/dynlink/source/dynlink_impl_beos.c | 4 +- source/dynlink/source/dynlink_impl_macos.c | 4 +- source/dynlink/source/dynlink_impl_unix.c | 14 +-- source/dynlink/source/dynlink_impl_win32.c | 6 +- source/loader/include/loader/loader.h | 6 + source/loader/include/loader/loader_impl.h | 6 +- .../include/loader/loader_manager_impl.h | 1 + source/loader/source/loader.c | 24 +++- source/loader/source/loader_impl.c | 83 +++++++++++++- .../loaders/c_loader/source/c_loader_impl.cpp | 2 +- .../ext_loader/source/ext_loader_impl.cpp | 2 +- .../node_loader/source/node_loader_impl.cpp | 24 +--- .../metacall/include/metacall/metacall_link.h | 31 ++++- source/metacall/source/metacall.c | 13 ++- source/metacall/source/metacall_link.c | 106 ++++++++---------- source/plugin/source/plugin_manager.c | 2 +- .../sandbox_plugin/source/sandbox_plugin.cpp | 5 +- .../dynlink_test/source/dynlink_test.cpp | 6 +- .../source/metacall_dynlink_path_test.cpp | 2 +- 25 files changed, 268 insertions(+), 175 deletions(-) diff --git a/source/dynlink/include/dynlink/dynlink.h b/source/dynlink/include/dynlink/dynlink.h index 3154e93fd..1a94636f0 100644 --- a/source/dynlink/include/dynlink/dynlink.h +++ b/source/dynlink/include/dynlink/dynlink.h @@ -70,7 +70,7 @@ DYNLINK_API const char *dynlink_extension(void); * @return * A handle to the dynamically linked shared object */ -DYNLINK_API dynlink dynlink_load(dynlink_path path, dynlink_name name, dynlink_flags flags); +DYNLINK_API dynlink dynlink_load(const char *path, const char *name, dynlink_flags flags); /** * @brief @@ -85,7 +85,7 @@ DYNLINK_API dynlink dynlink_load(dynlink_path path, dynlink_name name, dynlink_f * @return * A handle to the dynamically linked shared object */ -DYNLINK_API dynlink dynlink_load_absolute(dynlink_path path, dynlink_flags flags); +DYNLINK_API dynlink dynlink_load_absolute(const char *path, dynlink_flags flags); /** * @brief @@ -109,19 +109,19 @@ DYNLINK_API dynlink dynlink_load_self(dynlink_flags flags); * @return * Reference to the name of the dynamically linked shared object */ -DYNLINK_API dynlink_name dynlink_get_name(dynlink handle); +DYNLINK_API const char *dynlink_get_name(dynlink handle); /** * @brief -* Retreive the file name of the dynamically linked shared object handle +* Retreive the path of the dynamically linked shared object handle * * @param[in] handle * Handle of dynamically linked shared object * * @return -* Reference to the file name of the dynamically linked shared object +* Reference to the path of the dynamically linked shared object */ -DYNLINK_API dynlink_name dynlink_get_name_impl(dynlink handle); +DYNLINK_API const char *dynlink_get_path(dynlink handle); /** * @brief @@ -163,7 +163,7 @@ DYNLINK_API dynlink_impl dynlink_get_impl(dynlink handle); * @return * Returns zero on correct dynamic linking, distinct from zero otherwise */ -DYNLINK_API int dynlink_symbol(dynlink handle, dynlink_symbol_name symbol_name, dynlink_symbol_addr *symbol_address); +DYNLINK_API int dynlink_symbol(dynlink handle, const char *symbol_name, dynlink_symbol_addr *symbol_address); /** * @brief @@ -190,7 +190,7 @@ DYNLINK_API void dynlink_unload(dynlink handle); * @return * Returns zero if it could find the path, different from zero if not found */ -DYNLINK_API int dynlink_library_path(dynlink_name name, dynlink_library_path_str path, size_t *length); +DYNLINK_API int dynlink_library_path(const char *name, dynlink_path path, size_t *length); /** * @brief @@ -202,7 +202,7 @@ DYNLINK_API int dynlink_library_path(dynlink_name name, dynlink_library_path_str * @param[out] result * The resulting library name that will be generated (i.e libexample.so in Linux, or example.dll in Windows) */ -DYNLINK_API void dynlink_platform_name(dynlink_name name, dynlink_name_impl result); +DYNLINK_API void dynlink_platform_name(const char *name, dynlink_path result); /** * @brief diff --git a/source/dynlink/include/dynlink/dynlink_impl.h b/source/dynlink/include/dynlink/dynlink_impl.h index 69696a55d..d5d8728e6 100644 --- a/source/dynlink/include/dynlink/dynlink_impl.h +++ b/source/dynlink/include/dynlink/dynlink_impl.h @@ -60,19 +60,19 @@ DYNLINK_API const char *dynlink_impl_extension(void); * @param[in] name * Name of dynamically linked shared object * -* @param[out] name_impl -* Pointer to the dynamically linked shared object handle +* @param[out] destination +* Pointer to string where final platform dependant name will be stored * * @param[in] size -* Size of string @name_impl +* Size of string @destination */ -DYNLINK_API void dynlink_impl_get_name(dynlink_name name, dynlink_name_impl name_impl, size_t size); +DYNLINK_API void dynlink_impl_get_name(const char *name, dynlink_path destination, size_t size); /** * @brief * Load a dynamically linked shared object implementation * -* @param[in] name +* @param[in] handle * Pointer to the dynamically linked shared object handle * * @return @@ -99,7 +99,7 @@ DYNLINK_API dynlink_impl dynlink_impl_load(dynlink handle); * @return * Returns zero on correct dynamic linking, distinct from zero otherwise */ -DYNLINK_API int dynlink_impl_symbol(dynlink handle, dynlink_impl impl, dynlink_symbol_name symbol_name, dynlink_symbol_addr *symbol_address); +DYNLINK_API int dynlink_impl_symbol(dynlink handle, dynlink_impl impl, const char *symbol_name, dynlink_symbol_addr *symbol_address); /** * @brief diff --git a/source/dynlink/include/dynlink/dynlink_interface.h b/source/dynlink/include/dynlink/dynlink_interface.h index f9b55e1d6..445a0cd4d 100644 --- a/source/dynlink/include/dynlink/dynlink_interface.h +++ b/source/dynlink/include/dynlink/dynlink_interface.h @@ -57,7 +57,7 @@ typedef dynlink_symbol_addr *dynlink_symbol_addr_ptr; typedef const char *(*dynlink_impl_interface_prefix)(void); typedef const char *(*dynlink_impl_interface_extension)(void); typedef dynlink_impl (*dynlink_impl_interface_load)(dynlink); -typedef int (*dynlink_impl_interface_symbol)(dynlink, dynlink_impl, dynlink_symbol_name, dynlink_symbol_addr_ptr); +typedef int (*dynlink_impl_interface_symbol)(dynlink, dynlink_impl, const char *, dynlink_symbol_addr_ptr); typedef int (*dynlink_impl_interface_unload)(dynlink, dynlink_impl); struct dynlink_impl_interface_type diff --git a/source/dynlink/include/dynlink/dynlink_type.h b/source/dynlink/include/dynlink/dynlink_type.h index cc759e25f..d6b737e57 100644 --- a/source/dynlink/include/dynlink/dynlink_type.h +++ b/source/dynlink/include/dynlink/dynlink_type.h @@ -37,14 +37,10 @@ struct dynlink_type; /* -- Type definitions -- */ -typedef struct dynlink_type *dynlink; /**< Dynamically linked shared object handle */ -typedef const char *dynlink_path; /**< Dynamically linked shared object path */ -typedef const char *dynlink_name; /**< Dynamically linked shared object name */ -typedef const char *dynlink_symbol_name; /**< Dynamically linked shared object symbol name */ -typedef portability_library_path_str dynlink_library_path_str; /**< Dynamically linked shared object symbol name */ -typedef void *dynlink_impl; /**< Dynamically linked shared object implementation */ -typedef char dynlink_name_impl[PORTABILITY_PATH_SIZE]; /**< Allocated copy of dynamically linked shared object name */ -typedef void (*dynlink_symbol_addr)(void); /**< Function pointer referring to a symbol address */ +typedef struct dynlink_type *dynlink; /**< Dynamically linked shared object handle */ +typedef void *dynlink_impl; /**< Dynamically linked shared object implementation */ +typedef char dynlink_path[PORTABILITY_PATH_SIZE]; /**< Allocated copy of dynamically linked shared object name */ +typedef void (*dynlink_symbol_addr)(void); /**< Function pointer referring to a symbol address */ /* -- Macros -- */ diff --git a/source/dynlink/source/dynlink.c b/source/dynlink/source/dynlink.c index ced93d585..580cef521 100644 --- a/source/dynlink/source/dynlink.c +++ b/source/dynlink/source/dynlink.c @@ -35,10 +35,10 @@ struct dynlink_type { - dynlink_name_impl name; /**< Dynamically linked shared object name */ - dynlink_name_impl name_impl; /**< Dynamically linked shared object file name */ - dynlink_flags flags; /**< Dynamically linked shared object flags */ - dynlink_impl impl; /**< Dynamically linked shared object loader implementation */ + dynlink_path name; /**< Dynamically linked shared object name */ + dynlink_path path; /**< Dynamically linked shared object file name */ + dynlink_flags flags; /**< Dynamically linked shared object flags */ + dynlink_impl impl; /**< Dynamically linked shared object loader implementation */ }; /* -- Methods -- */ @@ -53,7 +53,7 @@ const char *dynlink_extension(void) return dynlink_impl_extension(); } -dynlink dynlink_load(dynlink_path path, dynlink_name name, dynlink_flags flags) +dynlink dynlink_load(const char *path, const char *name, dynlink_flags flags) { if (name != NULL) { @@ -61,23 +61,23 @@ dynlink dynlink_load(dynlink_path path, dynlink_name name, dynlink_flags flags) if (handle != NULL) { - dynlink_name_impl name_impl; + dynlink_path name_impl; strncpy(handle->name, name, PORTABILITY_PATH_SIZE - 1); - dynlink_impl_get_name(dynlink_get_name(handle), name_impl, PORTABILITY_PATH_SIZE); + dynlink_impl_get_name(handle->name, name_impl, PORTABILITY_PATH_SIZE); if (path != NULL) { - dynlink_name_impl join_path; + dynlink_path join_path; size_t join_path_size = portability_path_join(path, strnlen(path, PORTABILITY_PATH_SIZE) + 1, name_impl, strnlen(name_impl, PORTABILITY_PATH_SIZE) + 1, join_path, PORTABILITY_PATH_SIZE); - (void)portability_path_canonical(join_path, join_path_size, handle->name_impl, PORTABILITY_PATH_SIZE); + (void)portability_path_canonical(join_path, join_path_size, handle->path, PORTABILITY_PATH_SIZE); } else { - strncpy(handle->name_impl, name_impl, strnlen(name_impl, PORTABILITY_PATH_SIZE) + 1); + strncpy(handle->path, name_impl, strnlen(name_impl, PORTABILITY_PATH_SIZE) + 1); } DYNLINK_FLAGS_SET(handle->flags, flags); @@ -96,7 +96,7 @@ dynlink dynlink_load(dynlink_path path, dynlink_name name, dynlink_flags flags) return NULL; } -dynlink dynlink_load_absolute(dynlink_path path, dynlink_flags flags) +dynlink dynlink_load_absolute(const char *path, dynlink_flags flags) { dynlink handle = malloc(sizeof(struct dynlink_type)); size_t path_size, name_size, prefix_length; @@ -109,7 +109,7 @@ dynlink dynlink_load_absolute(dynlink_path path, dynlink_flags flags) path_size = strnlen(path, PORTABILITY_PATH_SIZE) + 1; - strncpy(handle->name_impl, path, path_size); + strncpy(handle->path, path, path_size); /* Get the library name without any extension */ name_size = portability_path_get_name_canonical(path, path_size, handle->name, PORTABILITY_PATH_SIZE); @@ -151,10 +151,10 @@ dynlink dynlink_load_self(dynlink_flags flags) } /* Retrieve the executable path for the full name */ - portability_executable_path(handle->name_impl, &path_length); + portability_executable_path(handle->path, &path_length); /* Get the name without the extension */ - portability_path_get_name(handle->name_impl, path_length + 1, handle->name, PORTABILITY_PATH_SIZE); + portability_path_get_name(handle->path, path_length + 1, handle->name, PORTABILITY_PATH_SIZE); /* Set the flags with the additional special flag for itself, this will help to identify that the handle loaded is the current executable @@ -174,7 +174,7 @@ dynlink dynlink_load_self(dynlink_flags flags) return handle; } -dynlink_name dynlink_get_name(dynlink handle) +const char *dynlink_get_name(dynlink handle) { if (handle != NULL) { @@ -184,11 +184,11 @@ dynlink_name dynlink_get_name(dynlink handle) return NULL; } -dynlink_name dynlink_get_name_impl(dynlink handle) +const char *dynlink_get_path(dynlink handle) { if (handle != NULL) { - return handle->name_impl; + return handle->path; } return NULL; @@ -214,7 +214,7 @@ dynlink_impl dynlink_get_impl(dynlink handle) return NULL; } -int dynlink_symbol(dynlink handle, dynlink_symbol_name symbol_name, dynlink_symbol_addr *symbol_address) +int dynlink_symbol(dynlink handle, const char *symbol_name, dynlink_symbol_addr *symbol_address) { if (handle != NULL && handle->impl != NULL && symbol_name != NULL && symbol_address != NULL) { @@ -234,9 +234,9 @@ void dynlink_unload(dynlink handle) } } -int dynlink_library_path(dynlink_name name, dynlink_library_path_str path, size_t *length) +int dynlink_library_path(const char *name, dynlink_path path, size_t *length) { - dynlink_name_impl name_impl; + dynlink_path name_impl; dynlink_impl_get_name(name, name_impl, PORTABILITY_PATH_SIZE); @@ -251,13 +251,13 @@ int dynlink_library_path(dynlink_name name, dynlink_library_path_str path, size_ } else { - (void)portability_path_get_directory_inplace(path, strnlen(path, sizeof(dynlink_library_path_str) / sizeof(char)) + 1); + (void)portability_path_get_directory_inplace(path, strnlen(path, PORTABILITY_PATH_SIZE)); } return 0; } -void dynlink_platform_name(dynlink_name name, dynlink_name_impl result) +void dynlink_platform_name(const char *name, dynlink_path result) { dynlink_impl_get_name(name, result, PORTABILITY_PATH_SIZE); } diff --git a/source/dynlink/source/dynlink_impl.c b/source/dynlink/source/dynlink_impl.c index bd0fd942c..f49fece5c 100644 --- a/source/dynlink/source/dynlink_impl.c +++ b/source/dynlink/source/dynlink_impl.c @@ -42,17 +42,17 @@ const char *dynlink_impl_extension(void) return singleton()->extension(); } -void dynlink_impl_get_name(dynlink_name name, dynlink_name_impl name_impl, size_t size) +void dynlink_impl_get_name(const char *name, dynlink_path destination, size_t size) { - if (name != NULL && name_impl != NULL && size > 1) + if (name != NULL && destination != NULL && size > 1) { - strncpy(name_impl, dynlink_impl_prefix(), size); + strncpy(destination, dynlink_impl_prefix(), size); - strncat(name_impl, name, size - 1); + strncat(destination, name, size - 1); - strncat(name_impl, ".", size - 1); + strncat(destination, ".", size - 1); - strncat(name_impl, dynlink_impl_extension(), size - 1); + strncat(destination, dynlink_impl_extension(), size - 1); } } @@ -63,7 +63,7 @@ dynlink_impl dynlink_impl_load(dynlink handle) return singleton()->load(handle); } -int dynlink_impl_symbol(dynlink handle, dynlink_impl impl, dynlink_symbol_name symbol_name, dynlink_symbol_addr *symbol_address) +int dynlink_impl_symbol(dynlink handle, dynlink_impl impl, const char *symbol_name, dynlink_symbol_addr *symbol_address) { if (impl != NULL) { diff --git a/source/dynlink/source/dynlink_impl_beos.c b/source/dynlink/source/dynlink_impl_beos.c index 60688b5b7..98d5a07cc 100644 --- a/source/dynlink/source/dynlink_impl_beos.c +++ b/source/dynlink/source/dynlink_impl_beos.c @@ -65,7 +65,7 @@ dynlink_impl dynlink_impl_interface_load_beos(dynlink handle) } else { - impl = load_add_on(dynlink_get_name_impl(handle)); + impl = load_add_on(dynlink_get_path(handle)); } if (impl < B_NO_ERROR) @@ -77,7 +77,7 @@ dynlink_impl dynlink_impl_interface_load_beos(dynlink handle) return (dynlink_impl)impl; } -int dynlink_impl_interface_symbol_beos(dynlink handle, dynlink_impl impl, dynlink_symbol_name name, dynlink_symbol_addr *addr) +int dynlink_impl_interface_symbol_beos(dynlink handle, dynlink_impl impl, const char *name, dynlink_symbol_addr *addr) { void *symbol = NULL; diff --git a/source/dynlink/source/dynlink_impl_macos.c b/source/dynlink/source/dynlink_impl_macos.c index c210c9bd3..48c7a4daf 100644 --- a/source/dynlink/source/dynlink_impl_macos.c +++ b/source/dynlink/source/dynlink_impl_macos.c @@ -61,7 +61,7 @@ dynlink_impl dynlink_impl_interface_load_macos(dynlink handle) { unsigned long flags_impl; NSObjectFileImage image; - const char *name = dynlink_get_name_impl(handle); + const char *name = dynlink_get_path(handle); NSObjectFileImageReturnCode ret = NSCreateObjectFileImageFromFile(name, &image); if (ret != NSObjectFileImageSuccess) @@ -136,7 +136,7 @@ dynlink_impl dynlink_impl_interface_load_macos(dynlink handle) return (dynlink_impl)impl; } -int dynlink_impl_interface_symbol_macos(dynlink handle, dynlink_impl impl, dynlink_symbol_name name, dynlink_symbol_addr *addr) +int dynlink_impl_interface_symbol_macos(dynlink handle, dynlink_impl impl, const char *name, dynlink_symbol_addr *addr) { dynlink_flags flags = dynlink_get_flags(handle); NSSymbol symbol; diff --git a/source/dynlink/source/dynlink_impl_unix.c b/source/dynlink/source/dynlink_impl_unix.c index b6a234abe..7a6d35711 100644 --- a/source/dynlink/source/dynlink_impl_unix.c +++ b/source/dynlink/source/dynlink_impl_unix.c @@ -28,16 +28,6 @@ #include -/* Enable if needed for extended API */ -/* -#ifndef _GNU_SOURCE - #define _GNU_SOURCE -#endif -#ifndef __USE_GNU - #define __USE_GNU -#endif -*/ - #include /* -- Methods -- */ @@ -90,7 +80,7 @@ dynlink_impl dynlink_impl_interface_load_unix(dynlink handle) } else { - impl = dlopen(dynlink_get_name_impl(handle), flags_impl); + impl = dlopen(dynlink_get_path(handle), flags_impl); } if (impl == NULL) @@ -103,7 +93,7 @@ dynlink_impl dynlink_impl_interface_load_unix(dynlink handle) return (dynlink_impl)impl; } -int dynlink_impl_interface_symbol_unix(dynlink handle, dynlink_impl impl, dynlink_symbol_name name, dynlink_symbol_addr *addr) +int dynlink_impl_interface_symbol_unix(dynlink handle, dynlink_impl impl, const char *name, dynlink_symbol_addr *addr) { void *symbol = dlsym(impl, name); diff --git a/source/dynlink/source/dynlink_impl_win32.c b/source/dynlink/source/dynlink_impl_win32.c index 9d3ec0425..d1956a965 100644 --- a/source/dynlink/source/dynlink_impl_win32.c +++ b/source/dynlink/source/dynlink_impl_win32.c @@ -61,7 +61,7 @@ dynlink_impl dynlink_impl_interface_load_win32(dynlink handle) } else { - impl = LoadLibrary(dynlink_get_name_impl(handle)); + impl = LoadLibrary(dynlink_get_path(handle)); } if (impl == NULL) @@ -72,7 +72,7 @@ dynlink_impl dynlink_impl_interface_load_win32(dynlink handle) size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, error_id, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&message_buffer, 0, NULL); - log_write("metacall", LOG_LEVEL_ERROR, "Failed to load: %s with error code [%d]: %.*s", dynlink_get_name_impl(handle), error_id, size - 1, (const char *)message_buffer); + log_write("metacall", LOG_LEVEL_ERROR, "Failed to load: %s with error code [%d]: %.*s", dynlink_get_path(handle), error_id, size - 1, (const char *)message_buffer); LocalFree(message_buffer); @@ -82,7 +82,7 @@ dynlink_impl dynlink_impl_interface_load_win32(dynlink handle) return (dynlink_impl)impl; } -int dynlink_impl_interface_symbol_win32(dynlink handle, dynlink_impl impl, dynlink_symbol_name name, dynlink_symbol_addr *addr) +int dynlink_impl_interface_symbol_win32(dynlink handle, dynlink_impl impl, const char *name, dynlink_symbol_addr *addr) { FARPROC proc_addr = GetProcAddress(impl, name); diff --git a/source/loader/include/loader/loader.h b/source/loader/include/loader/loader.h index b4b8816a3..8fe36fd1e 100644 --- a/source/loader/include/loader/loader.h +++ b/source/loader/include/loader/loader.h @@ -59,6 +59,12 @@ LOADER_API int loader_register(const char *name, loader_register_invoke invoke, LOADER_API int loader_register_impl(void *impl, void *handle, const char *name, loader_register_invoke invoke, type_id return_type, size_t arg_size, type_id args_type_id[]); +LOADER_API void loader_detour(detour d); + +LOADER_API detour_handle loader_hook(const loader_tag tag, const char *library, int (*load_cb)(detour, detour_handle)); + +LOADER_API detour_handle loader_hook_impl(void *impl, const char *library, int (*load_cb)(detour, detour_handle)); + LOADER_API const char *loader_library_path(void); LOADER_API int loader_execution_path(const loader_tag tag, const loader_path path); diff --git a/source/loader/include/loader/loader_impl.h b/source/loader/include/loader/loader_impl.h index 3a2655e39..44b242928 100644 --- a/source/loader/include/loader/loader_impl.h +++ b/source/loader/include/loader/loader_impl.h @@ -29,6 +29,8 @@ #include #include +#include + #ifdef __cplusplus extern "C" { #endif @@ -43,10 +45,12 @@ LOADER_API loader_impl loader_impl_create(const loader_tag tag); LOADER_API loader_impl loader_impl_create_host(const loader_tag tag); -LOADER_API int loader_impl_dependencies(loader_impl impl); +LOADER_API int loader_impl_dependencies(loader_impl impl, detour d); LOADER_API int loader_impl_link(plugin p, loader_impl impl); +LOADER_API detour_handle loader_impl_detour(loader_impl impl, const char *library, int (*load_cb)(detour, detour_handle)); + LOADER_API void loader_impl_attach(loader_impl impl, plugin p); LOADER_API plugin loader_impl_plugin(loader_impl impl); diff --git a/source/loader/include/loader/loader_manager_impl.h b/source/loader/include/loader/loader_manager_impl.h index 124aaf55c..3e9c4d82c 100644 --- a/source/loader/include/loader/loader_manager_impl.h +++ b/source/loader/include/loader/loader_manager_impl.h @@ -53,6 +53,7 @@ struct loader_manager_impl_type uint64_t init_thread_id; /* Stores the thread id of the thread that initialized metacall */ vector script_paths; /* Vector of search path for the scripts */ set destroy_map; /* Tracks the list of destroyed runtimes during destruction of the manager (loader_impl -> NULL) */ + detour d; /* Stores the detour manager that is being used for hooking */ }; /* -- Type Definitions -- */ diff --git a/source/loader/source/loader.c b/source/loader/source/loader.c index 8511f2715..b4b13e5df 100644 --- a/source/loader/source/loader.c +++ b/source/loader/source/loader.c @@ -33,8 +33,6 @@ #include -#include - #include #include @@ -134,6 +132,9 @@ int loader_initialize(void) /* Insert into destruction list */ loader_initialization_register_plugin(manager_impl->host); + /* Initialize detours */ + manager_impl->d = NULL; + /* TODO: Disable logs here until log is completely thread safe and async signal safe */ /* log_write("metacall", LOG_LEVEL_DEBUG, "Loader host initialized"); */ @@ -248,6 +249,23 @@ int loader_register_impl(void *impl, void *handle, const char *name, loader_regi return loader_host_register((loader_impl)impl, loader_impl_handle_context(handle), name, invoke, NULL, return_type, arg_size, args_type_id); } +void loader_detour(detour d) +{ + loader_manager_impl manager_impl = plugin_manager_impl_type(&loader_manager, loader_manager_impl); + + manager_impl->d = d; +} + +detour_handle loader_hook(const loader_tag tag, const char *library, int (*load_cb)(detour, detour_handle)) +{ + return loader_impl_detour(loader_get_impl(tag), library, load_cb); +} + +detour_handle loader_hook_impl(void *impl, const char *library, int (*load_cb)(detour, detour_handle)) +{ + return loader_impl_detour((loader_impl)impl, library, load_cb); +} + plugin loader_get_impl_plugin(const loader_tag tag) { plugin p = plugin_manager_get(&loader_manager, tag); @@ -265,7 +283,7 @@ plugin loader_get_impl_plugin(const loader_tag tag) } /* Dynamic link loader dependencies if it is not host */ - if (loader_impl_dependencies(impl) != 0) + if (loader_impl_dependencies(impl, plugin_manager_impl_type(&loader_manager, loader_manager_impl)->d) != 0) { goto plugin_manager_create_error; } diff --git a/source/loader/source/loader_impl.c b/source/loader/source/loader_impl.c index 9ccb51d00..0221b4a5e 100644 --- a/source/loader/source/loader_impl.c +++ b/source/loader/source/loader_impl.c @@ -93,6 +93,8 @@ struct loader_impl_type set exec_path_map; /* Set of execution paths passed by the end user */ configuration config; /* Reference to the loader configuration, it contains execution_paths, dependencies and additional info */ set library_map; /* List of handles (dynlink) to the dependencies of the loader and the loader itself */ + detour d; /* Reference to the detour which was used for hooking the loader or its dependencies */ + set detour_map; /* List of detour handles (detour_handle) to the dependencies of the loader and the loader itself */ }; struct loader_handle_impl_type @@ -226,8 +228,17 @@ loader_impl loader_impl_allocate(const loader_tag tag) goto alloc_library_map_error; } + impl->detour_map = set_create(&hash_callback_str, &comparable_callback_str); + + if (impl->detour_map == NULL) + { + goto alloc_detour_map_error; + } + return impl; +alloc_detour_map_error: + set_destroy(impl->library_map); alloc_library_map_error: set_destroy(impl->exec_path_map); alloc_exec_path_map_error: @@ -385,7 +396,7 @@ int loader_impl_dependencies_load(loader_impl impl, const char *key_str, value * return 1; } -int loader_impl_dependencies(loader_impl impl) +int loader_impl_dependencies(loader_impl impl, detour d) { /* Dependencies have the following format: { @@ -424,6 +435,10 @@ int loader_impl_dependencies(loader_impl impl) The value in this case will be the library loaded, instead of the full path. */ + /* Initialize the loader detour */ + impl->d = d; + + /* Check if the loader has dependencies and load them */ if (dependencies_value != NULL) { size_t size = value_type_count(dependencies_value); @@ -544,6 +559,42 @@ int loader_impl_link(plugin p, loader_impl impl) return 0; } +detour_handle loader_impl_detour(loader_impl impl, const char *library, int (*load_cb)(detour, detour_handle)) +{ + detour_handle handle = set_get(impl->detour_map, (const set_key)library); + + if (handle == NULL) + { + dynlink library_handle = set_get(impl->library_map, (const set_key)library); + + if (library_handle == NULL) + { + return NULL; + } + + handle = detour_load_handle(impl->d, library_handle); + + if (handle == NULL) + { + return NULL; + } + + if (load_cb(impl->d, handle) != 0) + { + detour_unload(impl->d, handle); + return NULL; + } + + if (set_insert(impl->detour_map, (set_key)library, handle) != 0) + { + detour_unload(impl->d, handle); + return NULL; + } + } + + return handle; +} + configuration loader_impl_initialize_configuration(const loader_tag tag) { static const char configuration_key_suffix[] = "_loader"; @@ -1771,6 +1822,22 @@ int loader_impl_destroy_exec_path_map_cb_iterate(set s, set_key key, set_value v return 0; } +int loader_impl_destroy_detour_map_cb_iterate(set s, set_key key, set_value val, set_cb_iterate_args args) +{ + (void)s; + (void)key; + + if (val != NULL && args != NULL) + { + detour d = args; + detour_handle handle = val; + + detour_unload(d, handle); + } + + return 0; +} + int loader_impl_destroy_dependencies_map_cb_iterate(set s, set_key key, set_value val, set_cb_iterate_args args) { (void)s; @@ -1844,12 +1911,18 @@ void loader_impl_destroy_deallocate(loader_impl impl) value_type_destroy(impl->options); } + /* Destroy detour map */ + set_iterate(impl->detour_map, &loader_impl_destroy_detour_map_cb_iterate, impl->d); + + set_destroy(impl->detour_map); + /* TODO: I am not sure this will work. - This must be done when the plugin handle (aka the loader) gets unloaded, - at this point it is not unloaded yet, because the plugin destructor is called before doing: - dynlink_unload(p->descriptor->handle); - In theory it should work because normally those handles are reference counted but "I don't trust like that". + This must be done when the plugin handle (aka the loader) gets unloaded, + at this point it is not unloaded yet, because the plugin destructor is called before doing: + dynlink_unload(p->descriptor->handle); + In theory it should work because normally those handles are reference counted but "I don't trust like that". */ + /* Unload all the dependencies when everything has been destroyed and the loader is unloaded */ set_iterate(impl->library_map, &loader_impl_destroy_dependencies_map_cb_iterate, NULL); diff --git a/source/loaders/c_loader/source/c_loader_impl.cpp b/source/loaders/c_loader/source/c_loader_impl.cpp index f9530b7ab..a4e57914c 100644 --- a/source/loaders/c_loader/source/c_loader_impl.cpp +++ b/source/loaders/c_loader/source/c_loader_impl.cpp @@ -315,7 +315,7 @@ typedef struct loader_impl_c_handle_dynlink_type : loader_impl_c_handle_base_typ { /* This function will try to check if the library exists before loading it, so we avoid error messages from dynlink when guessing the file path for relative load from file */ - dynlink_name_impl platform_name; + dynlink_path platform_name; dynlink_platform_name(library_name, platform_name); diff --git a/source/loaders/ext_loader/source/ext_loader_impl.cpp b/source/loaders/ext_loader/source/ext_loader_impl.cpp index c41db8f1b..ab4f182bd 100644 --- a/source/loaders/ext_loader/source/ext_loader_impl.cpp +++ b/source/loaders/ext_loader/source/ext_loader_impl.cpp @@ -142,7 +142,7 @@ dynlink ext_loader_impl_load_from_file_dynlink(const char *path, const char *lib { /* This function will try to check if the library exists before loading it, so we avoid error messages from dynlink when guessing the file path for relative load from file */ - dynlink_name_impl platform_name; + dynlink_path platform_name; dynlink_platform_name(library_name, platform_name); diff --git a/source/loaders/node_loader/source/node_loader_impl.cpp b/source/loaders/node_loader/source/node_loader_impl.cpp index d05b2b4a6..d622cbb0d 100644 --- a/source/loaders/node_loader/source/node_loader_impl.cpp +++ b/source/loaders/node_loader/source/node_loader_impl.cpp @@ -805,25 +805,6 @@ typedef struct loader_impl_napi_to_value_callback_closure_type } * loader_impl_napi_to_value_callback_closure; -class loader_impl_napi_constructor -{ -public: - loader_impl_napi_constructor() - { - static const loader_tag node_loader_tag = "node"; - - if (metacall_link_register(node_loader_tag, "node", "napi_register_module_v1", (void (*)(void))(&node_loader_port_initialize)) != 0) - { - log_write("metacall", LOG_LEVEL_ERROR, "Node loader failed register the link hook"); - } - } - - ~loader_impl_napi_constructor() {} -}; - -/* Initializer of napi_register_module_v1 */ -static loader_impl_napi_constructor loader_impl_napi_ctor; - /* Type conversion */ static napi_value node_loader_impl_napi_to_value_callback(napi_env env, napi_callback_info info); @@ -4027,6 +4008,11 @@ loader_impl_data node_loader_impl_initialize(loader_impl impl, configuration con /* Result will never be defined properly */ node_impl->result = 0; + + if (metacall_link_register_impl(impl, "node", "napi_register_module_v1", (void (*)(void))(&node_loader_port_initialize)) != 0) + { + log_write("metacall", LOG_LEVEL_ERROR, "Node Loader failed to hook napi_register_module_v1"); + } } /* Register initialization */ diff --git a/source/metacall/include/metacall/metacall_link.h b/source/metacall/include/metacall/metacall_link.h index 598358aa9..5012810fe 100644 --- a/source/metacall/include/metacall/metacall_link.h +++ b/source/metacall/include/metacall/metacall_link.h @@ -51,7 +51,7 @@ METACALL_API int metacall_link_initialize(void); * and dynamically interpose our functions. * * @param[in] tag -* Name of the loader which the @dependency belongs to +* Name of the loader which the @library belongs to * * @param[in] library * Name of the library that is going to be hooked @@ -67,12 +67,39 @@ METACALL_API int metacall_link_initialize(void); */ METACALL_API int metacall_link_register(const char *tag, const char *library, const char *symbol, void (*fn)(void)); +/** +* @brief +* Register a function pointer in order to allow function +* interposition when loading a library, if you register a +* function @symbol called 'foo', when you try to dlsym (or the equivalent +* on every platform), you will get the pointer to @fn, even if +* the symbol does not exist in the library, it will work. +* Function interposition is required in order to hook into runtimes +* and dynamically interpose our functions. +* +* @param[in] loader +* Pointer to the loader which the @library belongs to +* +* @param[in] library +* Name of the library that is going to be hooked +* +* @param[in] symbol +* Name of the function to be interposed +* +* @param[in] fn +* Function pointer that will be returned by dlsym (or equivalent) when accessing to @symbol +* +* @return +* Zero if success, different from zero otherwise +*/ +METACALL_API int metacall_link_register_impl(void *loader, const char *library, const char *symbol, void (*fn)(void)); + /** * @brief * Remove the hook previously registered * * @param[in] tag -* Name of the loader which the @dependency belongs to +* Name of the loader which the @library belongs to * * @param[in] library * Name of the library that is going to be hooked diff --git a/source/metacall/source/metacall.c b/source/metacall/source/metacall.c index 12f2f14dc..c865e1ccd 100644 --- a/source/metacall/source/metacall.c +++ b/source/metacall/source/metacall.c @@ -256,12 +256,6 @@ int metacall_initialize(void) return 1; } - /* Initialize link */ - if (metacall_link_initialize() != 0) - { - log_write("metacall", LOG_LEVEL_ERROR, "Invalid MetaCall link initialization"); - } - #ifdef METACALL_FORK_SAFE if (metacall_config_flags & METACALL_FLAGS_FORK_SAFE) { @@ -316,6 +310,7 @@ int metacall_initialize(void) } } + /* Initialize loader subsystem */ if (loader_initialize() != 0) { configuration_destroy(); @@ -323,6 +318,12 @@ int metacall_initialize(void) return 1; } + /* Initialize link */ + if (metacall_link_initialize() != 0) + { + log_write("metacall", LOG_LEVEL_ERROR, "Invalid MetaCall link initialization"); + } + /* Load core plugins */ if (metacall_plugin_extension_load() != 0) { diff --git a/source/metacall/source/metacall_link.c b/source/metacall/source/metacall_link.c index 838207de6..df4b05cce 100644 --- a/source/metacall/source/metacall_link.c +++ b/source/metacall/source/metacall_link.c @@ -33,11 +33,12 @@ #include +#include + #include /* -- Private Variables -- */ -static detour_handle detour_link_handle = NULL; static set metacall_link_table = NULL; static threading_mutex_type link_mutex = THREADING_MUTEX_INITIALIZE; @@ -52,9 +53,9 @@ typedef FARPROC (*metacall_link_trampoline_type)(HMODULE, LPCSTR); static const char metacall_link_func_name[] = "GetProcAddress"; static metacall_link_trampoline_type metacall_link_trampoline = NULL; -static detour_handle metacall_link_handle(detour d) +static metacall_link_trampoline_type metacall_link_func(void) { - return detour_load_address(d, (void (*)(void))(&GetProcAddress)); + return &GetProcAddress; } FARPROC metacall_link_hook(HMODULE handle, LPCSTR symbol) @@ -87,30 +88,14 @@ FARPROC metacall_link_hook(HMODULE handle, LPCSTR symbol) #include -void (*metacall_link_func(void))(void) -{ - return (void (*)(void))(&dlsym); -} - typedef void *(*metacall_link_trampoline_type)(void *, const char *); static const char metacall_link_func_name[] = "dlsym"; static metacall_link_trampoline_type metacall_link_trampoline = NULL; -/* TODO: We have to implement a lazy loaded map for -detours and load it from the loaders whenever hooking -is required, on destroy we can delete all the hook handles -*/ - -static detour_handle metacall_link_handle(detour d) +static metacall_link_trampoline_type metacall_link_func(void) { - /* - return detour_load_address(d, (void (*)(void))(&dlsym)); - */ - /* - return detour_load_file(d, NULL); - */ - return detour_load_file(d, "/lib/x86_64-linux-gnu/libnode.so.72"); + return &dlsym; } void *metacall_link_hook(void *handle, const char *symbol) @@ -143,8 +128,6 @@ void *metacall_link_hook(void *handle, const char *symbol) int metacall_link_initialize(void) { - detour d = detour_create(metacall_detour()); - if (threading_mutex_initialize(&link_mutex) != 0) { log_write("metacall", LOG_LEVEL_ERROR, "MetaCall invalid link mutex initialization"); @@ -152,34 +135,13 @@ int metacall_link_initialize(void) return 1; } - if (detour_link_handle == NULL) - { - /* Casting for getting the original function */ - union - { - metacall_link_trampoline_type *trampoline; - void (**ptr)(void); - } cast = { &metacall_link_trampoline }; - - detour_link_handle = metacall_link_handle(d); - - if (detour_link_handle == NULL) - { - log_write("metacall", LOG_LEVEL_ERROR, "MetaCall invalid detour link installation"); + /* Initialize the default detour for the loaders */ + loader_detour(detour_create(metacall_detour())); - metacall_link_destroy(); - - return 1; - } - - if (detour_replace(d, detour_link_handle, metacall_link_func_name, (void (*)(void))(&metacall_link_hook), cast.ptr) != 0) - { - log_write("metacall", LOG_LEVEL_ERROR, "MetaCall invalid detour link replacement"); - - metacall_link_destroy(); - - return 1; - } + if (metacall_link_trampoline == NULL) + { + /* Store the original symbol link function */ + metacall_link_trampoline = metacall_link_func(); } if (metacall_link_table == NULL) @@ -199,6 +161,13 @@ int metacall_link_initialize(void) return 0; } +static int metacall_link_register_load_cb(detour d, detour_handle handle) +{ + void (*addr)(void) = NULL; + + return detour_replace(d, handle, metacall_link_func_name, (void (*)(void))(&metacall_link_hook), &addr); +} + int metacall_link_register(const char *tag, const char *library, const char *symbol, void (*fn)(void)) { void *ptr; @@ -208,6 +177,30 @@ int metacall_link_register(const char *tag, const char *library, const char *sym return 1; } + if (loader_hook(tag, library, metacall_link_register_load_cb) == NULL) + { + return 1; + } + + dynlink_symbol_uncast(fn, ptr); + + return set_insert(metacall_link_table, (set_key)symbol, ptr); +} + +int metacall_link_register_impl(void *loader, const char *library, const char *symbol, void (*fn)(void)) +{ + void *ptr; + + if (metacall_link_table == NULL) + { + return 1; + } + + if (loader_hook_impl(loader, library, metacall_link_register_load_cb) == NULL) + { + return 1; + } + dynlink_symbol_uncast(fn, ptr); return set_insert(metacall_link_table, (set_key)symbol, ptr); @@ -220,6 +213,10 @@ int metacall_link_unregister(const char *tag, const char *library, const char *s return 1; } + /* TODO: Restore the hook? We need support for this on the detour API */ + (void)tag; + (void)library; + return (set_remove(metacall_link_table, (set_key)symbol) == NULL); } @@ -227,15 +224,6 @@ void metacall_link_destroy(void) { threading_mutex_lock(&link_mutex); - if (detour_link_handle != NULL) - { - detour d = detour_create(metacall_detour()); - - detour_unload(d, detour_link_handle); - - detour_link_handle = NULL; - } - if (metacall_link_table != NULL) { set_destroy(metacall_link_table); diff --git a/source/plugin/source/plugin_manager.c b/source/plugin/source/plugin_manager.c index 94e6cc5d3..d0f92a36a 100644 --- a/source/plugin/source/plugin_manager.c +++ b/source/plugin/source/plugin_manager.c @@ -111,7 +111,7 @@ int plugin_manager_initialize(plugin_manager manager, const char *name, const ch #endif ; - dynlink_library_path_str path; + dynlink_path path; size_t length = 0; /* The order of precedence is: diff --git a/source/plugins/sandbox_plugin/source/sandbox_plugin.cpp b/source/plugins/sandbox_plugin/source/sandbox_plugin.cpp index 884342633..48bd7a715 100644 --- a/source/plugins/sandbox_plugin/source/sandbox_plugin.cpp +++ b/source/plugins/sandbox_plugin/source/sandbox_plugin.cpp @@ -378,7 +378,10 @@ void *sandbox_signals(size_t argc, void *args[], void *data) SCMP_SYS(sigsuspend), SCMP_SYS(sigreturn), SCMP_SYS(rt_sigaction), - SCMP_SYS(rt_sigprocmask), + /* TODO: For some reason this makes the metacall-sandbox-plugin-test fail, + disabled it for now, we should review it + */ + /* SCMP_SYS(rt_sigprocmask), */ SCMP_SYS(rt_sigpending), SCMP_SYS(rt_sigsuspend), SCMP_SYS(rt_sigreturn), diff --git a/source/tests/dynlink_test/source/dynlink_test.cpp b/source/tests/dynlink_test/source/dynlink_test.cpp index 5bf29f76c..48c037205 100644 --- a/source/tests/dynlink_test/source/dynlink_test.cpp +++ b/source/tests/dynlink_test/source/dynlink_test.cpp @@ -76,7 +76,7 @@ TEST_F(dynlink_test, DefaultConstructor) ASSERT_NE(handle, (dynlink)NULL); - log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file: %s", dynlink_get_name_impl(handle)); + log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file: %s", dynlink_get_path(handle)); EXPECT_EQ((int)0, (int)strcmp(library_name, dynlink_get_name(handle))); @@ -139,10 +139,10 @@ TEST_F(dynlink_test, DefaultConstructor) ASSERT_NE(handle, (dynlink)NULL); log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object absolute path: %s", absolute_path); - log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file name: %s", dynlink_get_name_impl(handle)); + log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file name: %s", dynlink_get_path(handle)); log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file: %s", dynlink_get_name(handle)); - EXPECT_EQ((int)0, (int)strcmp(absolute_path, dynlink_get_name_impl(handle))); + EXPECT_EQ((int)0, (int)strcmp(absolute_path, dynlink_get_path(handle))); EXPECT_EQ((int)0, (int)strcmp(library_name, dynlink_get_name(handle))); if (handle != NULL) diff --git a/source/tests/metacall_dynlink_path_test/source/metacall_dynlink_path_test.cpp b/source/tests/metacall_dynlink_path_test/source/metacall_dynlink_path_test.cpp index ac6239501..a989448f4 100644 --- a/source/tests/metacall_dynlink_path_test/source/metacall_dynlink_path_test.cpp +++ b/source/tests/metacall_dynlink_path_test/source/metacall_dynlink_path_test.cpp @@ -33,7 +33,7 @@ TEST_F(metacall_dynlink_path_test, DefaultConstructor) { metacall_print_info(); - dynlink_library_path_str path; + dynlink_path path; const char name[] = "metacall" #if (!defined(NDEBUG) || defined(DEBUG) || defined(_DEBUG) || defined(__DEBUG) || defined(__DEBUG__)) From 3dd2c54e58a9619cea785a0124d91ffe777d9f3a Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 10 Apr 2025 17:46:05 +0200 Subject: [PATCH 11/68] Minor bug in cmake libgit2. --- cmake/FindLibGit2.cmake | 6 +- output | 4601 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 4604 insertions(+), 3 deletions(-) create mode 100644 output diff --git a/cmake/FindLibGit2.cmake b/cmake/FindLibGit2.cmake index f9f4497e3..cb1c0cf0a 100644 --- a/cmake/FindLibGit2.cmake +++ b/cmake/FindLibGit2.cmake @@ -44,13 +44,13 @@ endif() if(NOT LibGit2_VERSION AND LibGit2_INCLUDE_DIR) file(STRINGS "${LibGit2_INCLUDE_DIR}/git2/version.h" LibGit2_VERSION_MAJOR REGEX "^#define LIBGIT2_VER_MAJOR +([0-9]+)") - string(REGEX MATCH "([0-9]+)$" LibGit2_VERSION_MAJOR ${LibGit2_VERSION_MAJOR}) + string(REGEX MATCH "([0-9]+)$" LibGit2_VERSION_MAJOR "${LibGit2_VERSION_MAJOR}") file(STRINGS "${LibGit2_INCLUDE_DIR}/git2/version.h" LibGit2_VERSION_MINOR REGEX "^#define LIBGIT2_VER_MINOR +([0-9]+)") - string(REGEX MATCH "([0-9]+)$" LibGit2_VERSION_MINOR ${LibGit2_VERSION_MINOR}) + string(REGEX MATCH "([0-9]+)$" LibGit2_VERSION_MINOR "${LibGit2_VERSION_MINOR}") file(STRINGS "${LibGit2_INCLUDE_DIR}/git2/version.h" LibGit2_VERSION_REVISION REGEX "^#define LIBGIT2_VER_REVISION +([0-9]+)") - string(REGEX MATCH "([0-9]+)$" LibGit2_VERSION_REVISION ${LibGit2_VERSION_REVISION}) + string(REGEX MATCH "([0-9]+)$" LibGit2_VERSION_REVISION "${LibGit2_VERSION_REVISION}") set(LibGit2_VERSION "${LibGit2_VERSION_MAJOR}.${LibGit2_VERSION_MINOR}.${LibGit2_VERSION_REVISION}") endif() diff --git a/output b/output new file mode 100644 index 000000000..de325f6b5 --- /dev/null +++ b/output @@ -0,0 +1,4601 @@ ++ export COMPOSE_DOCKER_CLI_BUILD=1 ++ COMPOSE_DOCKER_CLI_BUILD=1 ++ export DOCKER_BUILDKIT=1 ++ DOCKER_BUILDKIT=1 ++ export BUILDKIT_PROGRESS=plain ++ BUILDKIT_PROGRESS=plain ++ export PROGRESS_NO_TRUNC=1 ++ PROGRESS_NO_TRUNC=1 +++ command -v docker-compose ++ '[' -x /usr/local/bin/docker-compose ']' ++ DOCKER_COMPOSE=docker-compose ++ case "$1" in ++ sub_test ++ export DOCKER_BUILDKIT=0 ++ DOCKER_BUILDKIT=0 ++ export METACALL_BUILD_SANITIZER= ++ METACALL_BUILD_SANITIZER= ++ export METACALL_BUILD_COVERAGE= ++ METACALL_BUILD_COVERAGE= ++ export METACALL_BUILD_TYPE=debug ++ METACALL_BUILD_TYPE=debug ++ ln -sf tools/deps/.dockerignore .dockerignore ++ docker-compose -f docker-compose.yml -f docker-compose.test.yml build --force-rm deps +Building deps +Sending build context to Docker daemon 41.47kB +Step 1/11 : ARG METACALL_BASE_IMAGE +Step 2/11 : FROM ${METACALL_BASE_IMAGE} AS deps + ---> 29f27ec2c121 +Step 3/11 : LABEL copyright.name="Vicente Eduardo Ferrer Garcia" copyright.address="vic798@gmail.com" maintainer.name="Vicente Eduardo Ferrer Garcia" maintainer.address="vic798@gmail.com" vendor="MetaCall Inc." version="0.1" + ---> Using cache + ---> 49a33baef77c +Step 4/11 : ARG METACALL_PATH + ---> Using cache + ---> 13cf6ef6b257 +Step 5/11 : ARG METACALL_TOOLS_PATH + ---> Using cache + ---> 74c0900e4935 +Step 6/11 : ENV DEBIAN_FRONTEND=noninteractive LTTNG_UST_REGISTER_TIMEOUT=0 NUGET_XMLDOC_MODE=skip DOTNET_CLI_TELEMETRY_OPTOUT=true + ---> Using cache + ---> 90e6f87497e7 +Step 7/11 : WORKDIR $METACALL_PATH + ---> Using cache + ---> 889e429fecde +Step 8/11 : COPY tools/metacall-environment.sh tools/nobuildtest.patch $METACALL_TOOLS_PATH/ + ---> Using cache + ---> 6039e0748a38 +Step 9/11 : ARG METACALL_BUILD_TYPE + ---> Using cache + ---> 7ef06f56da55 +Step 10/11 : ARG METACALL_INSTALL_OPTIONS + ---> Using cache + ---> 55bcc6a1ff91 +Step 11/11 : RUN chmod 500 $METACALL_TOOLS_PATH/metacall-environment.sh && $METACALL_TOOLS_PATH/metacall-environment.sh ${METACALL_BUILD_TYPE} ${METACALL_INSTALL_OPTIONS} && rm -rf $METACALL_PATH + ---> Using cache + ---> 663a36c6a1d2 +Successfully built 663a36c6a1d2 +Successfully tagged metacall/core:deps ++ ln -sf tools/dev/.dockerignore .dockerignore ++ docker-compose -f docker-compose.yml -f docker-compose.test.yml build --force-rm dev +Building dev +Sending build context to Docker daemon 145MB +Step 1/11 : FROM metacall/core:deps AS dev + ---> 663a36c6a1d2 +Step 2/11 : LABEL copyright.name="Vicente Eduardo Ferrer Garcia" copyright.address="vic798@gmail.com" maintainer.name="Vicente Eduardo Ferrer Garcia" maintainer.address="vic798@gmail.com" vendor="MetaCall Inc." version="0.1" + ---> Using cache + ---> cad39512370c +Step 3/11 : ARG METACALL_PATH + ---> Using cache + ---> 667cbb0424d2 +Step 4/11 : ENV LOADER_LIBRARY_PATH=$METACALL_PATH/build LOADER_SCRIPT_PATH=$METACALL_PATH/build/scripts CONFIGURATION_PATH=$METACALL_PATH/build/configurations/global.json SERIAL_LIBRARY_PATH=$METACALL_PATH/build DETOUR_LIBRARY_PATH=$METACALL_PATH/build PORT_LIBRARY_PATH=$METACALL_PATH/build DEBIAN_FRONTEND=noninteractive NODE_PATH=/usr/lib/node_modules DOTNET_CLI_TELEMETRY_OPTOUT=true + ---> Using cache + ---> 9880ade75ea2 +Step 5/11 : WORKDIR $METACALL_PATH + ---> Using cache + ---> 60b4d0ff9791 +Step 6/11 : COPY . $METACALL_PATH + ---> 61fa6f901dff +Step 7/11 : RUN chmod 500 $METACALL_PATH/tools/metacall-configure.sh && chmod 500 $METACALL_PATH/tools/metacall-build.sh && mkdir -p $METACALL_PATH/build + ---> Running in 83b240d9adc6 +Removing intermediate container 83b240d9adc6 + ---> 605f80d762f6 +Step 8/11 : ARG METACALL_BUILD_TYPE + ---> Running in f1af673b92af +Removing intermediate container f1af673b92af + ---> 84b68123c202 +Step 9/11 : ARG METACALL_BUILD_OPTIONS + ---> Running in c6ce85603c04 +Removing intermediate container c6ce85603c04 + ---> 2407b0953672 +Step 10/11 : RUN cd $METACALL_PATH/build && $METACALL_PATH/tools/metacall-configure.sh ${METACALL_BUILD_TYPE} ${METACALL_BUILD_OPTIONS} + ---> Running in 84f6a9010292 +Current option settings +errexit on +noglob off +ignoreeof off +interactive off +monitor off +noexec off +stdin off +xtrace on +verbose off +vi off +emacs off +noclobber off +allexport off +notify off +nounset on +privileged off +nolog off +pipefail off +debug off ++ pwd ++ ROOT_DIR=/usr/local/metacall/build ++ BUILD_TYPE=Release ++ BUILD_PYTHON=0 ++ BUILD_RUBY=0 ++ BUILD_NETCORE=0 ++ BUILD_NETCORE2=0 ++ BUILD_NETCORE5=0 ++ BUILD_NETCORE7=0 ++ BUILD_V8=0 ++ BUILD_NODEJS=0 ++ BUILD_TYPESCRIPT=0 ++ BUILD_FILE=0 ++ BUILD_RPC=0 ++ BUILD_WASM=0 ++ BUILD_JAVA=0 ++ BUILD_C=0 ++ BUILD_COBOL=0 ++ BUILD_GO=0 ++ BUILD_RUST=0 ++ BUILD_ZIG=0 ++ BUILD_SCRIPTS=0 ++ BUILD_EXAMPLES=0 ++ BUILD_TESTS=0 ++ BUILD_BENCHMARKS=0 ++ BUILD_PORTS=0 ++ BUILD_SANDBOX=0 ++ BUILD_COVERAGE=0 ++ BUILD_ADDRESS_SANITIZER=0 ++ BUILD_THREAD_SANITIZER=0 ++ BUILD_MEMORY_SANITIZER=0 ++ uname -s ++ OPERATIVE_SYSTEM=Linux ++ [ -f /etc/os-release ] ++ cat /etc/os-release ++ grep ^ID= ++ cut -f2- -d= ++ sed -e s/^[[:space:]]*// -e s/[[:space:]]*$// ++ tr -d " ++ LINUX_DISTRO=debian ++ + cat /etc/os-release +grep ^VERSION_ID= ++ cut -f2- -d= ++ sed -e s/^[[:space:]]*// -e s/[[:space:]]*$// ++ tr -d " ++ LINUX_VERSION_ID= ++ sub_options debug python ruby netcore7 nodejs typescript file rpc wasm java c cobol go rust examples tests scripts ports install pack sandbox benchmarks ++ [ debug = debug ] ++ echo Build all scripts in debug mode ++ BUILD_TYPE=Debug ++ [ debug = release ] ++ [ debug = relwithdebinfo ] ++ [ debug = python ] ++ [ debug = ruby ] ++ [ debug = netcore ] ++ [ debug = netcore2 ] ++ [ debug = netcore5 ] ++ [ debug = netcore7 ] ++ [ debug = v8 ] ++ [ debug = nodejs ] ++ [ debug = typescript ] ++ [ debug = file ] ++ [ debug = rpc ] ++ [ debug = wasm ] ++ [ debug = java ] ++ [ debug = c ]Build all scripts in debug mode + ++ [ debug = cobol ] ++ [ debug = go ] ++ [ debug = rust ] ++ [ debug = zig ] ++ [ debug = scripts ] ++ [ debug = examples ] ++ [ debug = tests ] ++ [ debug = benchmarks ] ++ [ debug = ports ] ++ [ debug = sandbox ] ++ [ debug = coverage ] ++ [ debug = address-sanitizer ] ++ [ debug = thread-sanitizer ] ++ [ debug = memory-sanitizer ] ++ [ python = debug ] ++ [ python = release ] ++ [ python = relwithdebinfo ] ++ [ python = python ] ++ echo Build with python support ++ BUILD_PYTHON=1 ++ [ python = ruby ] ++ [ python = netcore ] ++ [ python = netcore2 ] ++ [ python = netcore5 ] ++ [ python = netcore7 ] ++ [ python = v8 ] ++ [ python = nodejs ] ++ [ python = typescript ] ++ [ python = file ] ++ [ python = rpc ] ++ [ python = wasmBuild with python support + ] ++ [ python = java ] ++ [ python = c ] ++ [ python = cobol ] ++ [ python = go ] ++ [ python = rust ] ++ [ python = zig ] ++ [ python = scripts ] ++ [ python = examples ] ++ [ python = tests ] ++ [ python = benchmarks ] ++ [ python = ports ] ++ [ python = sandbox ] ++ [ python = coverage ] ++ [ python = address-sanitizer ] ++ [ python = thread-sanitizer ] ++ [ python = memory-sanitizer ] ++ Build with ruby support +[ ruby = debug ] ++ [ ruby = release ] ++ [ ruby = relwithdebinfo ] ++ [ ruby = python ] ++ [ ruby = ruby ] ++ echo Build with ruby support ++ BUILD_RUBY=1 ++ [ ruby = netcore ] ++ [ ruby = netcore2 ] ++ [ ruby = netcore5 ] ++ [ ruby = netcore7 ] ++ [ ruby = v8 ] ++ [ ruby = nodejs ] ++ [ ruby = typescript ] ++ [ ruby = file ] ++ [ ruby = rpc ] ++ [ ruby = wasm ] ++ [ ruby = java ] ++ [ ruby = c ] ++ [ ruby = cobol ] ++ [ ruby = go ] ++ [ ruby = rust ] ++ [ ruby = zig ] ++ [ ruby = scripts ] ++ [ ruby = examples ] ++ [ ruby = tests ] ++ [ ruby = benchmarks ] ++ [ ruby = ports ] ++ [ ruby = sandbox ] ++ [ ruby = coverage ] ++ [ ruby = address-sanitizer ] ++ [ ruby = thread-sanitizer ] ++ [ ruby = memory-sanitizer ] ++ [ netcore7 = debug ] ++ [ netcore7 = release ] ++ [ netcore7 = relwithdebinfo ] ++ [ netcore7 = python ] ++ [ netcore7 = ruby ] ++ [ netcore7 = netcore ] ++ [ netcore7 = netcore2 ] ++ [ netcore7 = netcore5 ] ++ [Build with netcore 7 support + netcore7 = netcore7 ] ++ echo Build with netcore 7 support ++ BUILD_NETCORE7=1 ++ [ netcore7 = v8 ] ++ [ netcore7 = nodejs ] ++ [ netcore7 = typescript ] ++ [ netcore7 = file ] ++ [ netcore7 = rpc ] ++ [ netcore7 = wasm ] ++ [ netcore7 = java ] ++ [ netcore7 = c ] ++ [ netcore7 = cobol ] ++ [ netcore7 = go ] ++ [ netcore7 = rust ] ++ [ netcore7 = zig ] ++ [ netcore7 = scripts ] ++ [ netcore7 = examples ] ++ [ netcore7 = tests ] ++ [ netcore7 = benchmarks ] ++ [ netcore7 = ports ] ++ [ netcore7 = sandbox ] ++ [ netcore7 = coverage ] ++ [ netcore7 = address-sanitizer ] ++ [ netcore7 = thread-sanitizer ] ++ [ netcore7 = memory-sanitizer ] ++ [ nodejs = debug ] ++ [ nodejs = release ] ++ [ nodejs = relwithdebinfo ] ++ [ nodejs = python ] ++ [ nodejs = ruby ] ++ [ nodejs = netcore ] ++ [ nodejs = netcore2 ] ++ [ nodejs = netcore5 ] ++ [ nodejs = netcore7 ] ++ [ nodejs = v8 ] ++ [ nodejs = nodejs ] ++ echo Build with nodejs support ++ BUILD_NODEJS=1 ++ [ nodejs = typescript ] ++ [ nodejs = file ] ++ [ nodejs = rpc ] ++ [ nodejs = wasm ] ++ [ nodejs = java ] ++ [ nodejs = c ] ++ [ nodejs = cobol ] ++ [ nodejs = go ] ++ [ nodejs = rust ] ++ [ nodejs = zig ] ++ [ nodejs = scripts ] ++ [ nodejs = examples ] ++ [ nodejs = tests ] ++ [ nodejs = benchmarks ] ++ [ nodejs = ports ] ++ [ nodejs = sandbox ] ++ [ nodejs = coverage ] ++ [ nodejs = address-sanitizer ] ++ [ nodejs = thread-sanitizer ] ++ [ nodejs = memory-sanitizer ] ++ [ typescript = debug ] ++ [ typescript = release ] ++ [ typescript = relwithdebinfo ] ++ [ typescript = python ] ++ [ typescript = ruby ] ++ [ typescript = netcore ] ++ [ typescript = netcore2 ] ++ [ typescript = netcore5 ] ++ [ typescript = netcore7 ] ++ [ typescript = v8 ] ++ [ typescript = nodejs ] ++ [ typescript = typescript ] ++ echo Build with typescript support ++ BUILD_TYPESCRIPT=1 ++ [ typescript = file ] ++ [ typescript = rpc ] ++ [ typescript = wasm ] ++ [ typescript = java ] ++ [ typescript = c ] ++ [ typescript = cobol ] ++ [ typescript = go ] ++ [ typescript = rust ] ++ [ typescript = zig ] ++ [ typescript = scripts ] ++ [ typescript = examples ] ++ [ typescript = tests ] ++ [ typescript = benchmarks ] ++ [ typescript = ports ] ++ [ typescript = sandbox ] ++ [ typescript = coverage ] ++ [ typescript = address-sanitizer ] ++ [ typescript = thread-sanitizer ] ++ [ typescript = memory-sanitizer ] ++ [ file = debug ] ++ [ file = release ] ++ [ file = relwithdebinfo ] ++ [ file = python ] ++ [ file = ruby ] ++ [ file = netcore ] ++ [ file = netcore2 ] ++ [ file = netcore5 ] ++ [ file = netcore7 ] ++ [ file = v8 ] ++ [ file = nodejs ] ++ [ file = typescript ] ++ [ file = file ] ++ echo Build with file support ++ BUILD_FILE=1 ++ [ file = rpc ] ++ [ file = wasm ] +Build with nodejs support +Build with typescript support +Build with file support ++ [ file = java ] ++ [ file = c ] ++ [ file = cobol ] ++ [ file = go ] ++ [ file = rust ] ++ [ file = zig ] ++ [ file = scripts ] ++ [ file = examples ] ++ [ file = tests ] ++ [ file = benchmarks ] ++ [ file = ports ] ++ [ file = sandbox ] ++ [ file = coverage ] ++ [ file = address-sanitizer ] ++ [ file = thread-sanitizer ] ++ [ file = memory-sanitizer ] ++ [ rpc = debug ] ++ [ rpc = release ] ++ [ rpc = relwithdebinfo ] ++ [ rpc = python ] ++ [ rpc = ruby ] ++ [ rpc = netcore ] ++ [ rpc = netcore2 ] ++ [ rpc = netcore5 ] ++ [ rpc = netcore7 ] ++ [ rpc = v8 ] ++ [ rpc = nodejs ] ++ [ rpc = typescript ] ++ [ rpc = file ] ++ [ rpc = rpc ] ++ echo Build with rpc support ++ BUILD_RPC=1 ++ [ rpc = wasm ] ++ [ rpc = java ] ++ [ rpc = c ] ++ [ rpc = cobol ] ++ [ rpc = go ] ++ [ rpc = rust ] ++ [ rpc = zig ] ++ [ rpc = scripts ] ++ [ rpc = examples ] ++ [ rpc = tests ] ++ [ rpc = benchmarks ] ++ [ rpc = ports ] ++ [ rpc = sandbox ] ++ [ rpc = coverage ] ++ [ rpc = address-sanitizer ] ++ [ rpc = thread-sanitizer ] ++ [ rpc = memory-sanitizer ] ++ [ wasm = debug ] ++ [ wasm = release ] ++ [ wasm = relwithdebinfo ] ++ [ wasm = python ] ++ [ wasm = ruby ] ++ [ wasm = netcore ] ++ [ wasm = netcore2 ] ++ [ wasm = netcore5Build with rpc support + ] ++ [ wasm = netcore7 ] ++ [ wasm = v8 ] ++ [ wasm = nodejs ] ++ [ wasm = typescript ] ++ [ wasm = file ] ++ [ wasm = rpc ] ++ [ wasm = wasm ] ++ echo Build with wasm support ++ BUILD_WASM=1 ++ [ wasm = java ] ++ [ wasm = c ] ++ [ wasm = cobol ] ++ [ wasm = go ] ++ [ wasm = rust ] ++ [ wasm = zig ] ++ [ wasm = scripts ] ++ [ wasm = examples ] ++ [ wasmBuild with wasm support + = tests ] ++ [ wasm = benchmarks ] ++ [ wasm = ports ] ++ [ wasm = sandbox ] ++ [ wasm = coverage ] ++ [ wasm = address-sanitizer ] ++ [ wasm = thread-sanitizer ] ++ [ wasm = memory-sanitizer ] ++ [ java = debug ] ++ [ java = release ] ++ [ java = relwithdebinfo ] ++ [ java = python ] ++ [ java = ruby ] ++ [ java = netcore ] ++ [ java = netcore2 ] ++ [ java = netcore5 ] ++ [ java = netcore7 ] ++ [ java = v8 ] ++ [ java = nodejs ] ++ [ java = typescript ] ++ [ java = file ] ++ [ java = rpc ] ++ [ java = wasm ] ++ [ java = java ] ++ echo Build with java support ++ BUILD_JAVA=1 ++ [ java = c ] ++ [ java = cobol ] ++ [ java = go ] ++ [ java = rust ] ++ [ java = zig ] ++ [ java = scripts ] ++ [ java = examples ] +Build with java support ++ [ java = tests ] ++ [ java = benchmarks ] ++ [ java = ports ] ++ [ java = sandbox ] ++ [ java = coverage ] ++ [ java = address-sanitizer ] ++ [ java = thread-sanitizer ] ++ [ java = memory-sanitizer ] ++ [ c = debug ] ++ [ c = release ] ++ [ c = relwithdebinfo ] ++ [ c = python ] ++ [ c = ruby ] ++ [ c = netcore ] ++ [ c = netcore2 ] ++ [ c = netcore5 ] ++ [ c = netcore7 ] ++ [ c = v8 ] ++ [ c = nodejs ] ++ [ c = typescript ] ++ [ c = file ] ++ [ c = rpc ] ++ [ c = wasm ] ++ [ c = java ] ++ [ c = c ] ++ echo Build with c support ++ BUILD_C=1 ++ [ c = cobol ] ++ [ c = go ] ++ [ c = rust ] ++ [ c = zig ] ++ [ c = scripts ] ++ [ c = examples ] ++ [ c = tests ] ++ [ c = benchmarks ] ++ [ c = ports ] ++ [ c = sandbox ] ++ [ c = coverage ] ++ [ c = address-sanitizer ] ++ [ c = thread-sanitizer ] ++ [ c = memory-sanitizer ] ++ [ cobol = debug ] ++ [ cobol = release ] ++ [ cobol = relwithdebinfo ] ++ [ cobol = python ] ++ [ cobol = ruby ] ++ [ cobol = netcore ] ++ [ cobol = netcore2 ] ++ [ cobol = netcore5 ] ++ [ cobol = netcore7 ] ++ [ cobol = v8 ] ++ [ cobol = nodejs ] ++ [ cobol = typescript ] ++ [ cobol = file ] ++ [ cobol = rpc ] ++ [ cobol = wasm ] ++ [ cobol = java ] ++ [ cobol = c ] ++ [ cobol = cobol ] ++ echo Build with cobol support ++ BUILD_COBOL=1 ++ [ cobol = go ] ++ [ cobol = rust ] ++ [ cobol = zig ] ++ [ cobol = scripts ] ++ [ cobol = examples ] ++ [ cobol = tests ] ++ [ cobol = benchmarks ] ++ [ cobol = ports ] ++ [ cobol = sandbox ] ++ [ cobol = coverage ] ++ [ cobol = address-sanitizer ] ++ [ cobol = thread-sanitizer ] ++ [ cobol = memory-sanitizer ] ++ [ go = debug ] ++ [ go = release ] ++ [ go = relwithdebinfo ] ++ [ go = python ] ++ [ go = ruby ] ++ [ go = netcore ] ++ [ go = netcore2 ] ++ [ go = netcore5 ] ++ [ go = netcore7 ] ++ [ go = v8 ] ++ [ go = nodejs ] ++ [ go = typescript ] ++ [ go = file ] ++ [ go = rpc ] ++ [ go = wasm ] ++ [ go = java ] ++ [ go = c ] ++ [ go = cobol ] ++ [ go = go ] ++ echo Build with go support ++ BUILD_GO=1 ++ [ go = rust ] ++ [ go = zig ] ++ [ go = scripts ] ++ [ go = examples ] ++ [ go = tests ] ++ [ go = benchmarks ] ++ [ go = ports ] ++ [ go = sandbox ] ++ [ go = coverage ] ++ [ go = address-sanitizer ] ++ [ go = thread-sanitizer ] ++ [ go = memory-sanitizer ] ++ [ rust = debug ] ++ [ rust = release ] ++ [ rust = relwithdebinfo ] ++ [ rust = python ] ++ [ rust = ruby ] ++ [ rust = netcore ] ++ [ rust = netcore2 ] ++ [ rust = netcore5 ] ++ [ rust = netcore7 ] ++ [ rust = v8 ] ++ [ rust = nodejs ] ++ [ rust = typescript ] ++ [ rust = file ] ++ [ rust = rpc ] ++ [ rust = wasm ] ++ [ rust = java ] ++ [ rust = c ] ++ [ rust = cobol ] ++ [ rust = go ] ++ [ rust = rust ] ++ echo Build with rust support ++ BUILD_RUST=1 ++ [ rust = zig ] ++ [ rust = scripts ] ++ [ rust = examples ] ++ [ rust = tests ] ++ [ rust = benchmarks ] ++ [ rust = ports ] ++ [ rust = sandbox ] ++ [ rust = coverage ] ++ [ rust = address-sanitizer ] ++ [ rust = thread-sanitizer ] ++ [ rust = memory-sanitizer ] ++ [ examples = debug ] ++ [ examples = release ] ++ [ examples = relwithdebinfo ] ++ [ examples = python ] ++ [ examples = ruby ] ++ [ examples = netcore ] ++ [ examples = netcore2 ] ++ [ examples = netcore5 ] ++ [ examples = netcore7 ] ++ [ examples = v8 ] ++ [ examples = nodejs ] ++ [ examples = typescript ] ++ [ examples = file ] ++ [ examples = rpc ] ++ [ examples = wasm ] ++ [ examples = java ] ++ [ examples = c ] ++ [ examples = cobol ] ++ [ examples = go ] ++ [ examples = rust ] ++ [ examples = zig ] ++ [ examples = scripts ] ++ [ examples = examples ] ++ echo Build all examples ++ BUILD_EXAMPLES=1 ++ [ examples = tests ] ++ [ examples = benchmarks ] ++ [ examples = ports ] ++ [ examples = sandbox ] ++ [ examples = coverage ] ++ [ examples = address-sanitizer ] ++ [ examples = thread-sanitizer ] ++ [ examples = memory-sanitizer ] ++ [ tests = debug ] ++ [ tests = release ] ++ [ tests = relwithdebinfo ] ++ [ tests = python ] ++ [ tests = ruby ] ++ [ tests = netcore ] ++ [ tests = netcore2 ] ++ [ tests = netcore5 ] ++ [ tests = netcore7 ] ++ [ tests = v8 ] ++ [ tests = nodejs ] ++ [ tests = typescript ] ++ [ tests = file ] ++ [ tests = rpc ] ++ [ tests = wasm ] ++ [ tests = java ] ++ [ tests = c ] ++ [ tests = cobol ] ++ [ tests = go ] ++ [ tests = rust ] ++ [ tests = zig ] ++ [ tests = scripts ] ++ [ tests = examples ] ++ [ tests = tests ] ++ echo Build all tests ++ BUILD_TESTS=1 ++ [ tests = benchmarks ] ++ [ tests = ports ] ++ [ tests = sandbox ] ++ [ tests = coverage ] ++ [ tests = address-sanitizer ] ++ [ tests = thread-sanitizer ] ++ [ tests = memory-sanitizer ] ++ [ scripts = debug ] ++ [ scripts = release ] ++ [ scripts = relwithdebinfo ] ++ [ scripts = python ]Build with c support +Build with cobol support +Build with go support +Build with rust support +Build all examples +Build all tests + ++ [ scripts = ruby ] ++ [ scripts = netcore ] ++ [ scripts = netcore2 ] ++ [ scripts = netcore5 ] ++ [ scripts = netcore7 ] ++ [ scripts = v8 ] ++ [ scripts = nodejs ] ++ [ scripts = typescript ] ++ [ scripts = file ] ++ [ scripts = rpc ] ++ [ scripts = wasm ] ++ [ scripts = java ] ++ [ scripts = c ] ++ [ scripts = cobol ] ++ [ scripts = go ] ++ [ scripts = rust ] ++ [ scripts = zig ] ++ [ scripts = scripts ] ++ echo Build all scripts ++ BUILD_SCRIPTS=1 ++ [ scripts = examples ] ++ [ scripts = tests ] ++ [ scripts = benchmarks ] ++ [ scripts = ports ] ++ [ scripts = sandbox ] ++ [ scripts = coverage ] ++ [ scripts = address-sanitizer ] ++ [ scripts = thread-sanitizer ] ++ [ scripts = memory-sanitizer ] ++ [ ports = debug ] ++ [ ports = release ] ++ [ ports = relwithdebinfo ] +Build all scripts ++ [ ports = python ] ++ [ ports = ruby ] ++ [ ports = netcore ] ++ [ ports = netcore2 ] ++ [ ports = netcore5 ] ++ [ ports = netcore7 ] ++ [ ports = v8 ] ++ [ ports = nodejs ] ++ [ ports = typescript ] ++ [ ports = file ] ++ [ ports = rpc ] ++ [ ports = wasm ] ++ [ ports = java ] ++ [ ports = c ] ++ [ ports = cobol ] ++ [ ports = go ] ++ [ ports = rust ] ++ [ ports = zig ] ++ [ ports = scripts ] ++ [ ports = examples ] ++ [ ports = tests ] ++ [ ports = benchmarks ] ++ [ ports = ports ] ++ echo Build all ports +Build all ports ++ BUILD_PORTS=1 ++ [ ports = sandbox ] ++ [ ports = coverage ] ++ [ ports = address-sanitizer ] ++ [ ports = thread-sanitizer ] ++ [ ports = memory-sanitizer ] ++ [ install = debug ] ++ [ install = release ] ++ [ install = relwithdebinfo ] ++ [ install = python ] ++ [ install = ruby ] ++ [ install = netcore ] ++ [ install = netcore2 ] ++ [ install = netcore5 ] ++ [ install = netcore7 ] ++ [ install = v8 ] ++ [ install = nodejs ] ++ [ install = typescript ] ++ [ install = file ] ++ [ install = rpc ] ++ [ install = wasm ] ++ [ install = java ] ++ [ install = c ] ++ [ install = cobol ] ++ [ install = go ] ++ [ install = rust ] ++ [ install = zig ] ++ [ install = scripts ] ++ [ install = examples ] ++ [ install = tests ] ++ [ install = benchmarks ] ++ [ install = ports ] ++ [ install = sandbox ] ++ [ install = coverage ] ++ [ install = address-sanitizer ] ++ [ install = thread-sanitizer ] ++ [ install = memory-sanitizer ] ++ [ pack = debug ] ++ [ pack = release ] ++ [ pack = relwithdebinfo ] ++ [ pack = python ] ++ [ pack = ruby ] ++ [ pack = netcore ] ++ [ pack = netcore2 ] ++ [ pack = netcore5 ] ++ [ pack = netcore7 ] ++ [ pack = v8 ] ++ [ pack = nodejs ] ++ [ pack = typescript ] ++ [ pack = file ] ++ [ pack = rpc ] ++ [ pack = wasm ] ++ [ pack = java ] ++ [ pack = c ] ++ [ pack = cobol ] ++ [ pack = go ] ++ [ pack = rust ] ++ [ pack = zig ] ++ [ pack = scripts ] ++ [ pack = examples ] ++ [ pack = tests ] ++ [ pack = benchmarks ] ++ [ pack = ports ] ++ [ pack = sandbox ] ++ [ pack = coverage ] ++ [ pack = address-sanitizer ] ++ [ pack = thread-sanitizer ] ++ [ pack = memory-sanitizer ] ++ [ sandbox = debug ] ++ [ sandbox = release ] ++ [ sandbox = relwithdebinfo ] ++ [ sandbox = python ] ++ [ sandbox = ruby ] ++ [ sandbox = netcore ] ++ [ sandbox = netcore2 ] ++ [ sandbox = netcore5 ] ++ [ sandbox = netcore7 ] ++ [ sandbox = v8 ] ++ [ sandbox = nodejs ] ++ [ sandbox = typescript ] ++ [ sandbox = file ] ++ [ sandbox = rpc ] ++ [ sandbox = wasm ] ++ [ sandbox = java ] ++ [ sandbox = c ] ++ [ sandbox = cobol ] ++ [ sandbox = go ] ++ [ sandbox = rust ] ++ [ sandbox = zig ] ++ [ sandbox = scripts ] ++ [ sandbox = examples ] ++ [ sandbox = tests ] ++ [ sandbox = benchmarks ] ++ [ sandbox = ports ] ++ [ sandbox = sandbox ] ++ echo Build with sandboxing support ++ BUILD_SANDBOX=1 ++ [ sandbox = coverage ] ++ [ sandbox = address-sanitizer ] ++ [ sandbox = thread-sanitizer ] ++ [ sandbox = memory-sanitizer ] ++ [ benchmarks = debug ] ++ [ benchmarks = release ] ++ [ benchmarks = relwithdebinfo ] ++ [ benchmarks = python ] ++ [ benchmarks = ruby ] ++ [ benchmarks = netcore ] ++ [ benchmarks = netcore2 ] ++ [ benchmarks = netcore5 ] ++ [ benchmarks = netcore7 ] ++ [ benchmarks = v8 ] ++ [ benchmarks = nodejs ] ++ [ benchmarks = typescript ] ++ [ benchmarks = file ] ++ [ benchmarks = rpcBuild with sandboxing support +Build all benchmarks + ] ++ [ benchmarks = wasm ] ++ [ benchmarks = java ] ++ [ benchmarks = c ] ++ [ benchmarks = cobol ] ++ [ benchmarks = go ] ++ [ benchmarks = rust ] ++ [ benchmarks = zig ] ++ [ benchmarks = scripts ] ++ [ benchmarks = examples ] ++ [ benchmarks = tests ] ++ [ benchmarks = benchmarks ] ++ echo Build all benchmarks ++ BUILD_BENCHMARKS=1 ++ [ benchmarks = ports ] ++ [ benchmarks = sandbox ] ++ [ benchmarks = coverage ] ++ [ benchmarks = address-sanitizer ] ++ [ benchmarks = thread-sanitizer ] ++ [ benchmarks = memory-sanitizer ] ++ sub_configure ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On ++ [ debian = alpine ] ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On ++ [ Linux = Darwin ] ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On ++ [ 0 = 1 ] ++ [ 0 = 1 ] ++ [ 0 = 1 ] ++ [ 1 = 1 ] ++ sub_find_dotnet_runtime 7 ++ dotnet --list-runtimes ++ grep -m 1 Microsoft.NETCore.App 7 ++ NETCORE_BASE_PATH=Microsoft.NETCore.App 7.0.20 [/usr/share/dotnet/shared/Microsoft.NETCore.App] ++ echo Microsoft.NETCore.App 7.0.20 [/usr/share/dotnet/shared/Microsoft.NETCore.App] ++ awk { print $3 } ++ tail -c +2 ++ head -c -2 ++ echo Microsoft.NETCore.App 7.0.20 [/usr/share/dotnet/shared/Microsoft.NETCore.App] ++ awk { print $2 } ++ echo /usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On ++ [ 0 = 1 ] ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On ++ [ debian = alpine ] ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On ++ [ 1 = 1 ] ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On ++ [ 0 = 1 ] ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On ++ [ 1 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -DOPTION_BUILD_PLUGINS_SANDBOX=On ++ [ 0 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -DOPTION_BUILD_PLUGINS_SANDBOX=On -DOPTION_COVERAGE=Off ++ [ 0 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -DOPTION_BUILD_PLUGINS_SANDBOX=On -DOPTION_COVERAGE=Off -DOPTION_BUILD_ADDRESS_SANITIZER=Off ++ [ 0 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -DOPTION_BUILD_PLUGINS_SANDBOX=On -DOPTION_COVERAGE=Off -DOPTION_BUILD_ADDRESS_SANITIZER=Off -DOPTION_BUILD_THREAD_SANITIZER=Off ++ [ 0 = 1 ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -DOPTION_BUILD_PLUGINS_SANDBOX=On -DOPTION_COVERAGE=Off -DOPTION_BUILD_ADDRESS_SANITIZER=Off -DOPTION_BUILD_THREAD_SANITIZER=Off -DOPTION_BUILD_MEMORY_SANITIZER=Off ++ CMAKE_CONFIG_FILE=/usr/local/metacall/build/CMakeConfig.txt ++ [ -f /usr/local/metacall/build/CMakeConfig.txt ] ++ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -DOPTION_BUILD_PLUGINS_SANDBOX=On -DOPTION_COVERAGE=Off -DOPTION_BUILD_ADDRESS_SANITIZER=Off -DOPTION_BUILD_THREAD_SANITIZER=Off -DOPTION_BUILD_MEMORY_SANITIZER=Off -DCMAKE_BUILD_TYPE=Debug ++ cmake -Wno-dev -DOPTION_GIT_HOOKS=Off -DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -DOPTION_BUILD_PLUGINS_SANDBOX=On -DOPTION_COVERAGE=Off -DOPTION_BUILD_ADDRESS_SANITIZER=Off -DOPTION_BUILD_THREAD_SANITIZER=Off -DOPTION_BUILD_MEMORY_SANITIZER=Off -DCMAKE_BUILD_TYPE=Debug .. +-- The C compiler identification is GNU 14.2.0 +-- The CXX compiler identification is GNU 14.2.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Detecting CXX compiler ABI info +-- Detecting CXX compiler ABI info - done +-- Check for working CXX compiler: /usr/bin/c++ - skipped +-- Detecting CXX compile features +-- Detecting CXX compile features - done +-- Target Operative System: Linux +-- Target OS Family: unix +-- Linux x86_64 64bit detected +CMake Warning at CMakeLists.txt:162 (message): + Linting disabled: clang-format executable not found + + +-- Lib version +-- Performing Test PIC_C_FLAG +-- Performing Test PIC_C_FLAG - Success +-- Performing Test STACK_PROTECTOR_STRONG_C_FLAG +-- Performing Test STACK_PROTECTOR_STRONG_C_FLAG - Success +-- Performing Test FORTIFY_SOURCE_C_FLAG +-- Performing Test FORTIFY_SOURCE_C_FLAG - Success +-- Performing Test PIC_CXX_FLAG +-- Performing Test PIC_CXX_FLAG - Success +-- Performing Test STACK_PROTECTOR_STRONG_CXX_FLAG +-- Performing Test STACK_PROTECTOR_STRONG_CXX_FLAG - Success +-- Performing Test FORTIFY_SOURCE_CXX_FLAG +-- Performing Test FORTIFY_SOURCE_CXX_FLAG - Success +-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY +-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success +-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY +-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success +-- Performing Test COMPILER_HAS_DEPRECATED_ATTR +-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success +-- Lib preprocessor +-- Lib environment +-- Lib format +-- Lib log +-- Lib memory +-- Lib portability +-- Lib threading +-- Lib adt +-- Lib filesystem +-- Lib dynlink +-- Lib plugin +-- Lib detour +-- Lib reflect +-- Lib serial +-- Lib configuration +-- Lib loader +-- Lib metacall +-- Found LibFFI: /usr/lib/x86_64-linux-gnu/libffi.so +-- Could NOT find LibTCC (missing: LIBTCC_LIBRARY LIBTCC_INCLUDE_DIR) +-- Installing LibTCC 6ec4a10 +-- Found LibClang: /usr/lib/llvm-14/lib/libclang.so +-- Plugin c_loader +-- Found COBOL: /usr/bin/cobc (found version "3.2.0") +-- Plugin cob_loader +-- Plugin cs_loader_impl implementation +-- Plugin cs_loader +-- Plugin ext_loader +-- Plugin file_loader +-- Found JNI: /usr/lib/jvm/default-java/include found components: AWT JVM +-- Found Java: /usr/bin/java (found version "21.0.7") +-- Plugin java_loader_bootstrap bootstrap +-- Plugin java_loader +-- Plugin mock_loader +-- Searching NodeJS library version 115 +-- NodeJS Library Found +-- Found NodeJS: /usr/bin/node (found version "20.19.0") +-- Found NPM: /usr/bin/npm (found version "9.2.0") +-- Plugin node_loader_bootstrap bootstrap +-- Plugin node_loader +-- Found Python3: /usr/include/python3.13d (found version "3.13.2") found components: Development Development.Module Development.Embed +-- Plugin py_loader +-- Found Ruby: /usr/bin/ruby (found suitable version "3.3.7", minimum required is "1.8.0") +-- Plugin rb_loader +CMake Warning at source/loaders/rs_loader/CMakeLists.txt:8 (message): + Rust loader is out of date, needs to be updated in order to work + + +-- Found CURL: /usr/lib/x86_64-linux-gnu/libcurl.so (found version "8.13.0") +-- Plugin rpc_loader +-- Plugin ts_loader_bootstrap bootstrap +-- Plugin ts_loader +-- Wasmtime C API library or headers not found, downloading from archive +-- [download 0% complete] +-- [download 1% complete] +-- [download 2% complete] +-- [download 3% complete] +-- [download 4% complete] +-- [download 5% complete] +-- [download 6% complete] +-- [download 7% complete] +-- [download 8% complete] +-- [download 9% complete] +-- [download 10% complete] +-- [download 11% complete] +-- [download 12% complete] +-- [download 13% complete] +-- [download 14% complete] +-- [download 15% complete] +-- [download 16% complete] +-- [download 17% complete] +-- [download 18% complete] +-- [download 19% complete] +-- [download 20% complete] +-- [download 21% complete] +-- [download 22% complete] +-- [download 23% complete] +-- [download 24% complete] +-- [download 25% complete] +-- [download 26% complete] +-- [download 27% complete] +-- [download 28% complete] +-- [download 29% complete] +-- [download 30% complete] +-- [download 31% complete] +-- [download 32% complete] +-- [download 33% complete] +-- [download 34% complete] +-- [download 35% complete] +-- [download 36% complete] +-- [download 37% complete] +-- [download 38% complete] +-- [download 39% complete] +-- [download 40% complete] +-- [download 41% complete] +-- [download 42% complete] +-- [download 43% complete] +-- [download 44% complete] +-- [download 45% complete] +-- [download 46% complete] +-- [download 47% complete] +-- [download 48% complete] +-- [download 49% complete] +-- [download 50% complete] +-- [download 51% complete] +-- [download 52% complete] +-- [download 53% complete] +-- [download 54% complete] +-- [download 55% complete] +-- [download 56% complete] +-- [download 57% complete] +-- [download 58% complete] +-- [download 59% complete] +-- [download 60% complete] +-- [download 61% complete] +-- [download 62% complete] +-- [download 63% complete] +-- [download 64% complete] +-- [download 65% complete] +-- [download 66% complete] +-- [download 67% complete] +-- [download 68% complete] +-- [download 69% complete] +-- [download 70% complete] +-- [download 71% complete] +-- [download 72% complete] +-- [download 73% complete] +-- [download 74% complete] +-- [download 75% complete] +-- [download 76% complete] +-- [download 77% complete] +-- [download 78% complete] +-- [download 79% complete] +-- [download 80% complete] +-- [download 81% complete] +-- [download 82% complete] +-- [download 83% complete] +-- [download 84% complete] +-- [download 85% complete] +-- [download 86% complete] +-- [download 87% complete] +-- [download 88% complete] +-- [download 89% complete] +-- [download 90% complete] +-- [download 91% complete] +-- [download 92% complete] +-- [download 93% complete] +-- [download 94% complete] +-- [download 95% complete] +-- [download 96% complete] +-- [download 97% complete] +-- [download 98% complete] +-- [download 99% complete] +-- [download 100% complete] +-- Found Wasmtime: /usr/local/metacall/build/wasmtime/wasmtime-v8.0.1-x86_64-linux-c-api/lib/libwasmtime.so (found suitable version "8.0.1", minimum required is "8.0.1") +-- Plugin wasm_loader +-- Serial metacall_serial +-- Found RapidJSON header files in /usr/local/include +-- Serial rapid_json_serial +-- Detour plthook_detour +-- Extension plugin_extension +-- Found libdw: /usr/lib/x86_64-linux-gnu/libdw.so +-- Could NOT find libbfd (missing: LIBBFD_LIBRARY LIBBFD_INCLUDE_DIR) +-- Could NOT find libdwarf (missing: LIBDWARF_LIBRARY LIBDWARF_INCLUDE_DIR) +-- Found Backward: /usr/local/metacall/build/_deps/backwardcpp-src +-- Could NOT find libbfd (missing: LIBBFD_LIBRARY LIBBFD_INCLUDE_DIR) +-- Could NOT find libdwarf (missing: LIBDWARF_LIBRARY LIBDWARF_INCLUDE_DIR) +-- Could NOT find libbfd (missing: LIBBFD_LIBRARY LIBBFD_INCLUDE_DIR) +-- Could NOT find libdwarf (missing: LIBDWARF_LIBRARY LIBDWARF_INCLUDE_DIR) +-- Found Backward: /usr/local/metacall/build/_deps/backwardcpp-src +-- Plugin backtrace_plugin +-- Found LibSecComp: /usr/lib/x86_64-linux-gnu/libseccomp.so (Required is at least version "2") +-- Plugin sandbox_plugin +-- Port node_port +-- Found Python: /usr/bin/python3 (found version "3.13.2") found components: Interpreter +-- Test node_port_test +-- Test node_port_test_executable +-- Port py_port +-- Found Python3: /usr/bin/python3 (found version "3.13.2") found components: Interpreter +-- The Golang compiler identification is go1.24.2 linux/amd64 +-- Check for working Golang compiler: /usr/bin/go +-- Port go_port +-- Found Rust: /root/.cargo/bin/cargo (found version "1.86.0") +-- Port rs_port + Updating crates.io index + Downloading crates ... + Downloaded bindgen-cli v0.71.1 + Installing bindgen-cli v0.71.1 + Updating crates.io index + Locking 59 packages to latest compatible versions + Adding env_logger v0.10.2 (available: v0.11.8) + Downloading crates ... + Downloaded anstyle-parse v0.2.6 + Downloaded bitflags v2.9.0 + Downloaded anstream v0.6.18 + Downloaded cfg-if v1.0.0 + Downloaded is-terminal v0.4.16 + Downloaded anstyle-query v1.1.2 + Downloaded is_terminal_polyfill v1.70.1 + Downloaded anstyle v1.0.10 + Downloaded strsim v0.11.1 + Downloaded clap_lex v0.7.4 + Downloaded utf8parse v0.2.2 + Downloaded termcolor v1.4.1 + Downloaded quote v1.0.40 + Downloaded libloading v0.8.6 + Downloaded unicode-ident v1.0.18 + Downloaded colorchoice v1.0.3 + Downloaded prettyplease v0.2.32 + Downloaded minimal-lexical v0.2.1 + Downloaded memchr v2.7.4 + Downloaded nom v7.1.3 + Downloaded itertools v0.13.0 + Downloaded clap_builder v4.5.35 + Downloaded aho-corasick v1.1.3 + Downloaded clap v4.5.35 + Downloaded bindgen v0.71.1 + Downloaded clang-sys v1.8.1 + Downloaded proc-macro2 v1.0.94 + Downloaded regex v1.11.1 + Downloaded unicode-width v0.2.0 + Downloaded syn v2.0.100 + Downloaded log v0.4.27 + Downloaded clap_complete v4.5.47 + Downloaded regex-syntax v0.8.5 + Downloaded clap_derive v4.5.32 + Downloaded cexpr v0.6.0 + Downloaded heck v0.5.0 + Downloaded glob v0.3.2 + Downloaded env_logger v0.10.2 + Downloaded shlex v1.3.0 + Downloaded rustc-hash v2.1.1 + Downloaded annotate-snippets v0.11.5 + Downloaded humantime v2.2.0 + Downloaded either v1.15.0 + Downloaded regex-automata v0.4.9 + Downloaded libc v0.2.171 + Compiling proc-macro2 v1.0.94 + Compiling memchr v2.7.4 + Compiling unicode-ident v1.0.18 + Compiling anstyle v1.0.10 + Compiling libc v0.2.171 + Compiling utf8parse v0.2.2 + Compiling anstyle-query v1.1.2 + Compiling is_terminal_polyfill v1.70.1 + Compiling colorchoice v1.0.3 + Compiling glob v0.3.2 + Compiling clap_lex v0.7.4 + Compiling strsim v0.11.1 + Compiling prettyplease v0.2.32 + Compiling regex-syntax v0.8.5 + Compiling heck v0.5.0 + Compiling minimal-lexical v0.2.1 + Compiling cfg-if v1.0.0 + Compiling bindgen v0.71.1 + Compiling unicode-width v0.2.0 + Compiling log v0.4.27 + Compiling either v1.15.0 + Compiling humantime v2.2.0 + Compiling libloading v0.8.6 + Compiling anstyle-parse v0.2.6 + Compiling bitflags v2.9.0 + Compiling termcolor v1.4.1 + Compiling shlex v1.3.0 + Compiling rustc-hash v2.1.1 + Compiling anstream v0.6.18 + Compiling itertools v0.13.0 + Compiling annotate-snippets v0.11.5 + Compiling clang-sys v1.8.1 + Compiling clap_builder v4.5.35 + Compiling aho-corasick v1.1.3 + Compiling nom v7.1.3 + Compiling quote v1.0.40 + Compiling syn v2.0.100 + Compiling is-terminal v0.4.16 + Compiling regex-automata v0.4.9 + Compiling cexpr v0.6.0 + Compiling clap_derive v4.5.32 + Compiling regex v1.11.1 + Compiling env_logger v0.10.2 + Compiling clap v4.5.35 + Compiling clap_complete v4.5.47 + Compiling bindgen-cli v0.71.1 + Finished `release` profile [optimized] target(s) in 31.97s + Installing /root/.cargo/bin/bindgen + Installed package `bindgen-cli v0.71.1` (executable `bindgen`) +-- Found SWIG: /usr/bin/swig (found version "4.3.0") +-- Port rb_port +-- Script compiled +-- Script ffi +-- Script cbks +-- Script loadtest +-- Script say +-- Script hello +-- Script static +-- Script function +-- Script sum_extension +-- Script static +-- Script favicon +-- Script glob +-- Script fibonnaci +-- Script jartest +-- Script test +-- Script nod +-- Script inline +-- Script export +-- Script host +-- Script server +-- Script factcallback +-- Script derpyramda +-- Script gram +-- Script duplicated +-- Script ramda +-- Script example +-- Script helloworld +-- Script initfini +-- Script callback +-- Script function +-- Script ducktype +-- Script rsasample +-- Script garbage +-- Script classname +-- Script web +-- Script landing +-- Script model +-- Script pointer +-- Script dicty +-- Script host +-- Script s1 +-- Script s2 +-- Script withoutfunctions +-- Script wasm +-- Script badimport +-- Script watzon +-- Script fnmesh +-- Script hello +-- Script second +-- Script blog +-- Script cache +-- Script ducktype +-- Script invalid +-- Script klass +-- Script failempty +-- Script remote +-- Script typedfunc +-- Script templating +-- Script loopfail +-- Script badrequire +-- Script server +-- Script tests +-- Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY) (Required is at least version "1.11.0") +-- Performing Test CMAKE_HAVE_LIBC_PTHREAD +-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success +-- Found Threads: TRUE +-- Install Google Test v1.11.0 +-- Test preprocessor-test +-- Test environment-test +-- Test log-test +-- Test log-custom-test +-- Test adt-set-test +-- Test adt-trie-test +-- Test adt-vector-test +-- Test adt-map-test +-- Test reflect-value-cast-test +-- Test reflect-function-test +-- Test reflect-object-class-test +-- Test reflect-scope-test +-- Test reflect-metadata-test +-- Test dynlink-test +-- Test detour-test +-- Test serial-test +-- Test configuration-test +-- Test rb-loader-parser-test +-- Test portability-path-test +-- Test metacall-logs-test +-- Test metacall-load-memory-test +-- Test metacall-load-memory-empty-test +-- Test metacall-load-configuration-test +-- Test metacall-load-configuration-fail-test +-- Test metacall-load-configuration-relative-test +-- Test metacall-load-configuration-python-node-test +-- Test metacall-load-configuration-node-python-test +-- Test metacall-duplicated-handle-test +-- Test metacall-duplicated-symbols-test +-- Test metacall-handle-export-test +-- Test metacall-handle-get-test +-- Test metacall-test +-- Test metacall-node-test +-- Test metacall-node-event-loop-test +-- Test metacall-node-event-loop-signal-test +-- Test metacall-node-call-test +-- Test metacall-node-inline-test +-- Test metacall-node-async-test +-- Test metacall-node-async-multiple-test +-- Test metacall-node-reentrant-test +-- Test metacall-node-port-test +-- Test metacall-node-port-await-test +-- Found LibGit2: /usr/lib/x86_64-linux-gnu/libgit2.so (found version "1.8.4") +-- Test metacall-node-port-c-lib-test +-- Test metacall-node-python-port-mock-test +-- Test metacall-node-python-port-ruby-test +-- Searching NodeJS library version 115 +-- NodeJS Library Found +-- Test metacall-node-python-ruby-test +-- Test metacall-node-callback-test +-- Test metacall-node-fail-test +-- Test metacall-node-fail-env-var-test +-- Test metacall-node-fail-load-leak-test +-- Test metacall-node-typescript-test +-- Test metacall-node-python-async-after-destroy-test +-- Test metacall-node-python-await-test +-- Test metacall-node-python-exception-test +-- Test metacall-node-clear-mem-test +-- Test metacall-node-async-resources-test +-- Test metacall-node-await-chain-test +-- Test metacall-node-exception-test +-- Test metacall-node-python-deadlock-test +-- Test metacall-node-native-code-test +-- Test metacall-node-extension-test +-- Searching NodeJS library version 115 +-- NodeJS Library Found +-- Script node_extension_test +-- Test metacall-node-multithread-deadlock-test +-- Test metacall-distributable-test +-- Test metacall-cast-test +-- Test metacall-init-fini-test +-- Test metacall-ducktype-test +-- Test metacall-inspect-test +-- Test metacall-integration-test +-- Test metacall-depends-test +-- Test metacall-configuration-exec-path-test +-- Test metacall-configuration-default-test +-- Test metacall-clear-test +-- Test metacall-python-test +-- Test metacall-python-object-class-test +-- Test metacall-python-gc-test +-- Test metacall-python-open-test +-- Test metacall-python-dict-test +-- Test metacall-python-pointer-test +-- Test metacall-python-reentrant-test +-- Test metacall-python-varargs-test +-- Test py-loader-port-test +-- Test metacall-python-port-https-test +-- Test metacall-python-port-callback-test +-- Test metacall-python-port-pointer-test +-- Test metacall-python-port-import-test +-- Test metacall-python-callback-test +-- Test metacall-python-fail-test +-- Test metacall-python-relative-path-test +-- Test metacall-python-without-functions-test +-- Test metacall-python-builtins-test +-- Test metacall-python-async-test +-- Test metacall-python-exception-test +-- Test metacall-python-without-env-vars-test +-- Test metacall-map-test +-- Test metacall-map-await-test +-- Test metacall-initialize-test +-- Test metacall-initialize-ex-test +-- Test metacall-reinitialize-test +-- Test metacall-initialize-destroy-multiple-test +-- Test metacall-initialize-destroy-multiple-node-test +-- Test metacall-reload-functions-test +-- Test metacall-invalid-loader-test +-- Test metacall-fork-test +-- Test metacall-return-monad-test +-- Test metacall-callback-complex-test +-- Test metacall-ruby-fail-test +-- Test metacall-ruby-fail-empty-test +-- Test metacall-ruby-object-class-test +-- Test metacall-ruby-parser-integration-test +-- Test metacall-function-test +-- Test metacall-cobol-test +-- Test metacall-file-test +-- Test metacall-file-fail-test +-- Test metacall-file-glob-test +-- Test metacall-typescript-test +-- Test metacall-typescript-node-test +-- Test metacall-typescript-call-map-test +-- Test metacall-typescript-tsx-test +-- Test metacall-typescript-tsx-loop-fail-test +-- Test metacall-typescript-require-test +-- Test metacall-typescript-jsx-default-test +-- Test metacall-rpc-test +-- Test metacall-csharp-static-class-test +-- Test metacall-ruby-test +-- Test metacall-cs-test +-- Test metacall-java-test +-- Test metacall-wasm-test +-- Test metacall-wasm-python-port-test +-- Test metacall-c-test +-- Test metacall-c-lib-test +-- Test metacall-version-test +-- Test metacall-dynlink-path-test +-- Test metacall-library-path-without-env-vars-test +-- Test metacall-ext-test +-- Test metacall-plugin-extension-test +-- Test metacall-plugin-extension-local-test +-- Test metacall-backtrace-plugin-test +-- Test metacall-sandbox-plugin-test +-- Could NOT find GBench (missing: GBENCH_INCLUDE_DIR GBENCH_LIBRARY) +-- Install Google Benchmark v1.6.1 +-- Benchmark log-bench +-- Found Python3: /usr/include/python3.13d (found version "3.13.2") found components: Development Development.Module Development.Embed +-- Benchmark metacall-py-c-api-bench +-- Benchmark metacall-py-call-bench +-- Benchmark metacall-py-init-bench +-- Benchmark metacall-node-call-bench +-- Benchmark metacall-rb-call-bench +-- Benchmark metacall-cs-call-bench +-- CLI metacallcli +-- Searching NodeJS library version 115 +-- NodeJS Library Found +-- Plugin cli_repl_plugin +-- Searching NodeJS library version 115 +-- NodeJS Library Found +-- Plugin cli_core_plugin +-- Plugin cli_cmd_plugin +-- Plugin cli_sandbox_plugin +-- Example metacalllog +-- Configuring done (84.4s) +-- Generating done (1.1s) +-- Build files have been written to: /usr/local/metacall/build +Removing intermediate container 84f6a9010292 + ---> d5122ec3833c +Step 11/11 : RUN cd $METACALL_PATH/build && $METACALL_PATH/tools/metacall-build.sh ${METACALL_BUILD_TYPE} ${METACALL_BUILD_OPTIONS} + ---> Running in 8fc0ef566964 ++ BUILD_TYPE=Release ++ BUILD_TESTS=0 ++ BUILD_BENCHMARKS=0 ++ BUILD_COVERAGE=0 ++ BUILD_INSTALL=0 +Current option settings +errexit on +noglob off +ignoreeof off +interactive off +monitor off +noexec off +stdin off +xtrace on +verbose off +vi off +emacs off +noclobber off +allexport off +notify off +nounset on +privileged off +nolog off +pipefail off +debug off ++ id -u ++ [ 0 = 0 ] ++ SUDO_CMD= ++ sub_options debug python ruby netcore7 nodejs typescript file rpc wasm java c cobol go rust examples tests scripts ports install pack sandbox benchmarks ++ [ debug = debug ] ++ echo Build all scripts in debug mode ++ BUILD_TYPE=Debug ++ [ debug = release ] ++ [Build all scripts in debug mode + debug = relwithdebinfo ] ++ [ debug = tests ] ++ [ debug = benchmarks ] ++ [ debug = coverage ] ++ [ debug = install ] ++ [ python = debug ] ++ [ python = release ] ++ [ python = relwithdebinfo ] ++ [ python = tests ] ++ [ python = benchmarks ] ++ [ python = coverage ] ++ [ python = install ] ++ [ ruby = debug ] ++ [ ruby = release ] ++ [ ruby = relwithdebinfo ] ++ [ ruby = tests ] ++ [ ruby = benchmarks ] ++ [ ruby = coverage ] ++ [ ruby = install ] ++ [ netcore7 = debug ] ++ [ netcore7 = release ] ++ [ netcore7 = relwithdebinfo ] ++ [ netcore7 = tests ] ++ [ netcore7 = benchmarks ] ++ [ netcore7 = coverage ] ++ [ netcore7 = install ] ++ [ nodejs = debug ] ++ [ nodejs = release ] ++ [ nodejs = relwithdebinfo ] ++ [ nodejs = tests ] ++ [ nodejs = benchmarks ] ++ [ nodejs = coverage ] ++ [ nodejs = install ] ++ [ typescript = debug ] ++ [ typescript = release ] ++ [ typescript = relwithdebinfo ] ++ [ typescript = tests ] ++ [ typescript = benchmarks ] ++ [ typescript = coverage ] ++ [ typescript = install ] ++ [ file = debug ] ++ [ file = release ] ++ [ file = relwithdebinfo ] ++ [ file = tests ] ++ [ file = benchmarks ] ++ [ file = coverage ] ++ [ file = install ] ++ [ rpc = debug ] ++ [ rpc = release ] ++ [ rpc = relwithdebinfo ] ++ [ rpc = tests ] ++ [ rpc = benchmarks ] ++ [ rpc = coverage ] ++ [ rpc = install ] ++ [ wasm = debug ] ++ [ wasm = release ] ++ [ wasm = relwithdebinfo ] ++ [ wasm = tests ] ++ [ wasm = benchmarks ] ++ [ wasm = coverage ] ++ [ wasm = install ] ++ [ java = debug ] ++ [ java = release ] ++ [ java = relwithdebinfo ] ++ [ java = tests ] ++ [ java = benchmarks ] ++ [ java = coverage ] ++ [ java = install ] ++ [ c = debug ] ++ [ c = release ] ++ [ c = relwithdebinfo ] ++ [ c = tests ] ++ [ c = benchmarks ] ++ [ c = coverage ] ++ [ c = install ] ++ [ cobol = debug ] ++ [ cobol = release ] ++ [ cobol = relwithdebinfo ] ++ [ cobol = tests ] ++ [ cobol = benchmarks ] ++ [ cobol = coverage ] ++ [ cobol = install ] ++ [ go = debug ] ++ [ go = release ] ++ [ go = relwithdebinfo ] ++ [ go = tests ] ++ [ go = benchmarks ] ++ [ go = coverage ] ++ [ go = install ] ++ [ rust = debug ] ++ [ rust = release ] ++ [ rust = relwithdebinfo ] ++ [ rust = tests ] ++ [ rust = benchmarks ] ++ [ rust = coverage ] ++ [ rust = install ] ++ [ examples = debug ] ++ [ examples = release ] ++ [ examples = relwithdebinfo ] ++ [ examples = tests ] ++ [ examples = benchmarks ] ++ [ examples = coverage ] ++ [ examples = install ] ++ [ tests = debug ] ++ [ tests = release ] ++ [ tests = relwithdebinfo ] ++ [ tests = tests ] ++ echo Build and run all tests ++ BUILD_TESTS=1 ++ [ tests = benchmarks ] ++ [ tests = coverage ] ++ [ tests = install ] ++ [ scripts = debug ] ++ [ scripts = release ] ++ [ scripts = relwithdebinfo ] ++ [ scripts = tests ] ++ [ scripts = benchmarks ] ++ [ scripts = coverage ] ++ [ scripts = install ] ++ [ ports = debug ] ++ [ ports = release ] ++ [ ports = relwithdebinfo ] ++ [ ports = tests ] ++ [ ports = benchmarks ] ++ [ ports = coverage ] ++ [ ports = install ] ++ [ install = debug ] ++ [ install = release ] ++ [ install = relwithdebinfo ] ++ [ install = tests ] ++ Build and run all tests +[ install = benchmarks ] ++ [ install = coverage ] ++ [ install = install ] ++ echo Install all libraries ++ BUILD_INSTALL=1 ++ [ pack = debug ] ++ [ pack = release ] ++ [ pack = relwithdebinfo ] ++ [ pack = tests ] ++ [ pack = benchmarks ] ++ [ pack = coverage ] ++ [ pack = install ] ++ [ sandbox = debug ] ++ [ sandbox = release ] ++ [ sandbox = relwithdebinfo ] ++ [ sandbox = tests ] ++ [ sandbox = benchmarks ] ++ [ sandbox = coverage ] ++ [ sandbox = install ] ++ [ benchmarks = debug ] ++ [ benchmarks = release ] ++ [ benchmarks = relwithdebinfo ] ++ [ benchmarks = tests ] ++ [ benchmarks = benchmarks ] ++ echo Build and run all benchmarks ++ BUILD_BENCHMARKS=1 ++ [ benchmarks = coverage ] ++ [ benchmarks = install ] ++ sub_build +Install all libraries +Build and run all benchmarks ++ getconf _NPROCESSORS_ONLN ++ make -j24 +[ 0%] Building C object source/version/CMakeFiles/version.dir/source/version.c.o +Installing node_loader_bootstrap dependencies +[ 0%] Creating directories for 'libtcc-depends' +[ 0%] Building CXX object source/scripts/c/loadtest/CMakeFiles/loadtest.dir/source/loadtest.cpp.o +[ 1%] Building CXX object _deps/backwardcpp-build/CMakeFiles/backward.dir/backward.cpp.o +[ 2%] Building C object source/metacall/CMakeFiles/metacall.dir/__/version/source/version.c.o +[ 3%] Swig compile /usr/local/metacall/source/ports/rb_port/interface/rb_port/rb_port.i for ruby +Installing ts_loader_bootstrap dependencies +[ 3%] Built target c-ffi +[ 3%] Building CXX object _deps/backwardcpp-build/CMakeFiles/backward_object.dir/backward.cpp.o +[ 3%] Built target c-cbks +[ 3%] Built target c-compiled +[ 3%] Built target file-glob +[ 3%] Built target csharp-function +[ 3%] Built target file-static +[ 3%] Built target file-favicon +[ 3%] Built target sandbox_plugin_config +[ 3%] Built target c-loadtest +[ 3%] Built target backtrace_plugin_config +[ 3%] Built target csharp-static +[ 3%] Built target csharp-hello +[ 3%] Building C object source/metacall/CMakeFiles/metacall.dir/__/preprocessor/source/preprocessor.c.o +[ 3%] Building C object source/metacall/CMakeFiles/metacall.dir/__/environment/source/environment.c.o +[ 3%] Performing download step (download, verify and extract) for 'libtcc-depends' +-- Downloading... + dst='/usr/local/metacall/build/source/loaders/c_loader/libtcc-depends-prefix/src/tinycc.tar.gz' + timeout='none' + inactivity timeout='none' +-- Using src='https://github.com/metacall/tinycc/archive/6ec4a10.tar.gz' +[ 3%] Building C object source/metacall/CMakeFiles/metacall.dir/__/environment/source/environment_variable.c.o +[ 3%] Built target java-test +[ 3%] Built target java-jartest +[ 3%] Building C object source/metacall/CMakeFiles/metacall.dir/__/environment/source/environment_variable_path.c.o +[ 3%] Built target nodejs-nod +[ 3%] Built target java-fibonnaci +[ 3%] Linking CXX shared library ../../libversiond.so +[ 3%] Built target nodejs-inline +[ 3%] Built target nodejs-server +[ 3%] Built target nodejs-factcallback +[ 3%] Building C object source/metacall/CMakeFiles/metacall.dir/__/format/source/format.c.o +[ 3%] Built target nodejs-host +[ 3%] Built target nodejs-export +[ 3%] Built target nodejs-derpyramda +[ 3%] Building C object source/metacall/CMakeFiles/metacall.dir/__/threading/source/threading.c.o +[ 3%] Built target python-example +[ 3%] Building C object source/metacall/CMakeFiles/metacall.dir/__/threading/source/threading_thread_id.c.o +[ 3%] Built target nodejs-duplicated +[ 3%] Built target python-callback +[ 3%] Built target python-initfini +[ 3%] Built target python-ducktype +[ 4%] Building C object source/metacall/CMakeFiles/metacall.dir/__/threading/source/threading_mutex_pthread.c.o +[ 4%] Built target version +[ 4%] Built target python-function +[ 4%] Built target python-helloworld +[ 4%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log.c.o +[ 4%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_map.c.o +[ 4%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_valid_size.c.o +[ 4%] Built target cobol-say +[ 5%] Linking CXX shared library ../../../../scripts/libloadtest.so +[ 5%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_level.c.o +[ 5%] Built target python-garbage +[ 5%] Built target python-rsasample +[ 5%] Built target python-classname +/usr/local/metacall/source/metacall/include/metacall/metacall.h:61: Warning 801: Wrong class name (corrected to `Metacall_initialize_configuration_type') +/usr/local/metacall/source/metacall/include/metacall/metacall.h:61: Warning 801: Wrong class name (corrected to `Metacall_initialize_configuration_type') +/usr/local/metacall/source/metacall/include/metacall/metacall.h:62: Warning 451: Setting a const char * variable may leak memory. +/usr/local/metacall/source/metacall/include/metacall/metacall.h:69: Warning 801: Wrong class name (corrected to `Metacall_await_callbacks') +/usr/local/metacall/source/metacall/include/metacall/metacall.h:69: Warning 801: Wrong class name (corrected to `Metacall_await_callbacks') +[ 5%] Built target python-web +/usr/local/metacall/source/metacall/include/metacall/metacall.h:76: Warning 801: Wrong class name (corrected to `Metacall_version_type') +/usr/local/metacall/source/metacall/include/metacall/metacall.h:76: Warning 801: Wrong class name (corrected to `Metacall_version_type') +[ 5%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_record.c.o +[ 5%] Built target python-model + +/usr/local/metacall/source/metacall/include/metacall/metacall.h:80: Warning 451: Setting a const char * variable may leak memory. +Welcome to .NET 7.0! +--------------------- +SDK Version: 7.0.410 + +---------------- +Installed an ASP.NET Core HTTPS development certificate. +To trust the certificate run 'dotnet dev-certs https --trust' (Windows and macOS only). +Learn about HTTPS: https://aka.ms/dotnet-https +---------------- +Write your first app: https://aka.ms/dotnet-hello-world +Find out what's new: https://aka.ms/dotnet-whats-new +Explore documentation: https://aka.ms/dotnet-docs +Report issues and find source on GitHub: https://github.com/dotnet/core +Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli +-------------------------------------------------------------------------------------- +/usr/local/metacall/source/metacall/include/metacall/metacall.h:81: Warning 451: Setting a const char * variable may leak memory. +/usr/local/metacall/source/metacall/include/metacall/metacall.h:82: Warning 451: Setting a const char * variable may leak memory. +[ 5%] Built target python-landing +[ 5%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_handle.c.o +[ 6%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy.c.o +[ 6%] Built target python-dicty +[ 6%] Built target python-pointer +[ 6%] Built target python-s1 +[ 6%] Built target python-host +[ 6%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_aspect.c.o +[ 6%] Built target python-s2 +[ 6%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_singleton.c.o +[ 6%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_impl.c.o +[ 6%] Built target python-withoutfunctions +[ 6%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_format.c.o +[ 6%] Built target python-wasm +[ 6%] Built target rb_port_swig_compilation +[ 6%] Built target python-badimport +[ 6%] Built target loadtest +[ 6%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_format_binary.c.o +[ 6%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_format_custom.c.o +[ 6%] Built target python-fnmesh +[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_schedule.c.o +[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_format_text.c.o +[ 7%] Built target ruby-hello +[ 7%] Built target python-watzon +[ 7%] Built target ruby-second +[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_schedule_async.c.o +[ 7%] Built target ruby-blog +[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_schedule_sync.c.o +[ 7%] Built target ruby-ducktype +[ 7%] Built target ruby-invalid +[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_storage.c.o +[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_storage_batch.c.o +[ 7%] Built target ruby-klass +[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_storage_sequential.c.o +[ 7%] Built target ruby-failempty +[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_stream.c.o +[ 7%] Built target ruby-cache +[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_stream_file.c.o +[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_stream_custom.c.o +[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_stream_nginx.c.o +[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_stream_socket.c.o +[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_stream_stdio.c.o +[ 8%] Built target rpc-remote +[ 8%] Built target typescript-typedfunc +[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_aspect_format.c.o +[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_stream_syslog.c.o +[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_aspect_schedule.c.o +[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_aspect_storage.c.o +[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_aspect_stream.c.o +[ 9%] Built target typescript-loopfail +[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/memory/source/memory.c.o +[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/memory/source/memory_allocator.c.o +[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/memory/source/memory_allocator_std_impl.c.o +[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/memory/source/memory_allocator_nginx.c.o +[ 9%] Built target typescript-badrequire +[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/memory/source/memory_allocator_std.c.o +[ 9%] Built target typescript-server +[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/memory/source/memory_allocator_nginx_impl.c.o +[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/portability/source/portability.c.o +-- verifying file... + file='/usr/local/metacall/build/source/loaders/c_loader/libtcc-depends-prefix/src/tinycc.tar.gz' +-- Downloading... done +[ 9%] Creating directories for 'google-test-depends' +[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/portability/source/portability_executable_path.c.o +[ 10%] Building C object source/tests/metacall_node_extension_test/node_extension_test/CMakeFiles/node_extension_test.dir/source/node_extension_test.c.o +[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/portability/source/portability_working_path.c.o +[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/portability/source/portability_atexit.c.o +[ 10%] Built target wasm-tests +[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/portability/source/portability_library_path.c.o +[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt.c.o +[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/portability/source/portability_path.c.o +[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/portability/source/portability_dependency.c.o +[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt_comparable.c.o +[ 11%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt_hash.c.o +-- extracting... + src='/usr/local/metacall/build/source/loaders/c_loader/libtcc-depends-prefix/src/tinycc.tar.gz' + dst='/usr/local/metacall/build/source/loaders/c_loader/libtcc-depends-prefix/src/libtcc-depends' +-- extracting... [tar xfz] +[ 12%] Performing download step (git clone) for 'google-test-depends' +[ 12%] Linking CXX shared module ../../../../node_extension_test.node +[ 12%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt_set.c.o +[ 12%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt_map.c.o +[ 12%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt_bucket.c.o +[ 12%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt_vector.c.o +Cloning into 'google-test-depends'... +-- extracting... [analysis] +-- extracting... [rename] +-- extracting... [clean up] +-- extracting... done +[ 12%] Building C object source/metacall/CMakeFiles/metacall.dir/__/filesystem/source/filesystem.c.o +[ 12%] Building C object source/metacall/CMakeFiles/metacall.dir/__/filesystem/source/filesystem_file_descriptor.c.o +[ 12%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt_trie.c.o +[ 13%] Creating directories for 'google-bench-depends' +[ 13%] No update step for 'libtcc-depends' +[ 14%] Building C object source/metacall/CMakeFiles/metacall.dir/__/filesystem/source/filesystem_directory_descriptor.c.o +[ 14%] Built target metacallcli-scripts-tests +[ 14%] Performing download step (download, verify and extract) for 'google-bench-depends' +-- Downloading... + dst='/usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/src/GBench-1.6.1.tar.gz' + timeout='none' + inactivity timeout='none' +-- Using src='https://github.com/google/benchmark/archive/v1.6.1.tar.gz' +[ 14%] No patch step for 'libtcc-depends' +[ 14%] Building C object source/metacall/CMakeFiles/metacall.dir/__/dynlink/source/dynlink.c.o +[ 14%] Built target cli_core_plugin_config +[ 14%] Building C object source/metacall/CMakeFiles/metacall.dir/__/dynlink/source/dynlink_impl.c.o +[ 14%] Built target cli_sandbox_plugin_config +[ 14%] Building C object source/metacall/CMakeFiles/metacall.dir/__/dynlink/source/dynlink_interface.c.o +[ 14%] Performing configure step for 'libtcc-depends' +[ 14%] Building C object source/preprocessor/CMakeFiles/preprocessor.dir/source/preprocessor.c.o +[ 14%] Building C object source/metacall/CMakeFiles/metacall.dir/__/plugin/source/plugin.c.o +[ 14%] Building C object source/metacall/CMakeFiles/metacall.dir/__/dynlink/source/dynlink_impl_unix.c.o +[ 14%] Building C object source/format/CMakeFiles/format.dir/source/format.c.o + +up to date, audited 5 packages in 658ms + +1 package is looking for funding + run `npm fund` for details + +found 0 vulnerabilities +[ 14%] Building C object source/metacall/CMakeFiles/metacall.dir/__/plugin/source/plugin_descriptor.c.o +[ 14%] Linking CXX shared library ../../libpreprocessord.so +[ 14%] Built target node_loader_bootstrap_depends +[ 15%] Building C object source/metacall/CMakeFiles/metacall.dir/__/plugin/source/plugin_loader.c.o +[ 15%] Building C object source/metacall/CMakeFiles/metacall.dir/__/plugin/source/plugin_impl.c.o +[ 15%] Building C object source/metacall/CMakeFiles/metacall.dir/__/plugin/source/plugin_manager.c.o +[ 15%] Building C object source/metacall/CMakeFiles/metacall.dir/__/detour/source/detour.c.o +Binary directory /usr/local/metacall/build/libtcc/bin +TinyCC directory /usr/local/metacall/build/libtcc/lib/tcc +Library directory /usr/local/metacall/build/libtcc/lib +Include directory /usr/local/metacall/build/libtcc/include +Manual directory /usr/local/metacall/build/libtcc/share/man +Info directory /usr/local/metacall/build/libtcc/share/info +Doc directory /usr/local/metacall/build/libtcc/share/doc +Source path /usr/local/metacall/build/source/loaders/c_loader/libtcc-depends-prefix/src/libtcc-depends + +up to date, audited 3 packages in 530ms +Build OS Linux x86_64 +C compiler gcc (14.2) +Target OS Linux +CPU x86_64 +Triplet x86_64-linux-gnu +Config debug static=no selinux +Creating config.mak and config.h +[ 15%] Linking CXX shared library ../../libformatd.so + +found 0 vulnerabilities +[ 15%] Building C object source/threading/CMakeFiles/threading.dir/source/threading.c.o +[ 15%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect.c.o +[ 15%] Built target preprocessor +Copying node_loader_bootstrap dependencies +[ 15%] Built target ts_loader_bootstrap_depends +[ 15%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_type.c.o +[ 15%] Performing build step for 'libtcc-depends' +make[3]: warning: -j24 forced in submake: resetting jobserver mode. +[ 15%] Building C object source/threading/CMakeFiles/threading.dir/source/threading_thread_id.c.o +[ 15%] Building C object source/threading/CMakeFiles/threading.dir/source/threading_mutex_pthread.c.o +[ 15%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_type_id.c.o +[ 16%] Building C object source/environment/CMakeFiles/environment.dir/source/environment.c.o +[ 16%] Built target node_extension_test +[ 16%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_signature.c.o +[ 16%] Linking CXX shared library ../../libthreadingd.so +[ 16%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_function.c.o +[ 17%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_attribute.c.o +[ 17%] Built target format +node_loader_bootstrap dependencies copied from /usr/local/metacall/source/loaders/node_loader/bootstrap/node_modules to /usr/local/metacall/build/node_modules +[ 17%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_constructor.c.o +[ 17%] Building C object source/environment/CMakeFiles/environment.dir/source/environment_variable.c.o +[ 17%] Built target node_loader_bootstrap_copy_depends +[ 17%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_memory_tracker.c.o +[ 18%] Building C object source/portability/CMakeFiles/portability.dir/source/portability.c.o + +up to date, audited 2 packages in 754ms + +found 0 vulnerabilities +[ 18%] Building C object source/portability/CMakeFiles/portability.dir/source/portability_executable_path.c.o +[ 18%] Building C object source/portability/CMakeFiles/portability.dir/source/portability_library_path.c.o +-- verifying file... + file='/usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/src/GBench-1.6.1.tar.gz' +-- Downloading... done +[ 18%] Built target nodejs-ramda-depends +[ 18%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_method.c.o +[ 18%] Built target threading +[ 18%] Building C object source/portability/CMakeFiles/portability.dir/source/portability_working_path.c.o +[ 18%] Building C object source/environment/CMakeFiles/environment.dir/source/environment_variable_path.c.o +-- extracting... + src='/usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/src/GBench-1.6.1.tar.gz' + dst='/usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/src/google-bench-depends' +-- extracting... [tar xfz] +[ 18%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_class_visibility.c.o +[ 18%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_object.c.o +[ 18%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_class.c.o +[ 18%] Building C object source/portability/CMakeFiles/portability.dir/source/portability_path.c.o +-- extracting... [analysis] +-- extracting... [rename] +-- extracting... [clean up] +-- extracting... done +[ 18%] Building C object source/portability/CMakeFiles/portability.dir/source/portability_atexit.c.o +[ 18%] Building C object source/portability/CMakeFiles/portability.dir/source/portability_dependency.c.o +[ 18%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_future.c.o +[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_exception.c.o +[ 18%] Linking CXX shared library ../../libenvironmentd.so +[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_throwable.c.o +[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_context.c.o +[ 19%] No update step for 'google-bench-depends' +[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_scope.c.o +[ 19%] Built target node_loader_bootstrap +Note: /usr/local/metacall/source/loaders/java_loader/bootstrap/lib/bootstrap.java uses or overrides a deprecated API. +Note: Recompile with -Xlint:deprecation for details. +[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_value.c.o +[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_value_type.c.o +[ 19%] Built target nodejs-ramda +[ 19%] Built target java_loader_bootstrap +[ 19%] No patch step for 'google-bench-depends' + +up to date, audited 49 packages in 1s +[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_value_type_id_size.c.o + +1 moderate severity vulnerability + +To address all issues, run: + npm audit fix + +Run `npm audit` for details. +[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_value_type_promotion.c.o +[ 19%] Built target environment +[ 20%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_value_type_demotion.c.o +[ 20%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_value_type_cast.c.o +[ 20%] Built target nodejs-gram-depends +[ 20%] Performing configure step for 'google-bench-depends' +[ 20%] Building C object source/metacall/CMakeFiles/metacall.dir/__/serial/source/serial.c.o +CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required): + Compatibility with CMake < 3.10 will be removed from a future version of + CMake. + + Update the VERSION argument value. Or, use the ... syntax + to tell CMake that the project requires at least but has been updated + to work with policies introduced by or earlier. + + +[ 20%] Building C object source/metacall/CMakeFiles/metacall.dir/__/configuration/source/configuration.c.o +[ 20%] Building C object source/metacall/CMakeFiles/metacall.dir/__/configuration/source/configuration_singleton.c.o +[ 20%] Building C object source/metacall/CMakeFiles/metacall.dir/__/configuration/source/configuration_impl.c.o +[ 20%] Building C object source/metacall/CMakeFiles/metacall.dir/__/configuration/source/configuration_object.c.o +[ 21%] Building C object source/metacall/CMakeFiles/metacall.dir/__/loader/source/loader.c.o +[ 21%] Linking CXX shared library ../../libportabilityd.so +[ 21%] Building C object source/metacall/CMakeFiles/metacall.dir/__/loader/source/loader_host.c.o +[ 21%] Building C object source/metacall/CMakeFiles/metacall.dir/__/loader/source/loader_manager_impl.c.o + Determining projects to restore... +[ 21%] Building C object source/metacall/CMakeFiles/metacall.dir/__/loader/source/loader_impl.c.o +-- The CXX compiler identification is GNU 14.2.0 +[ 21%] Building C object source/metacall/CMakeFiles/metacall.dir/source/metacall.c.o +-- Detecting CXX compiler ABI info +[ 21%] Building C object source/metacall/CMakeFiles/metacall.dir/source/metacall_log.c.o +[ 21%] Built target portability +[ 21%] Building C object source/metacall/CMakeFiles/metacall.dir/source/metacall_allocator.c.o +[ 22%] Building C object source/metacall/CMakeFiles/metacall.dir/source/metacall_value.c.o +[ 22%] Building C object source/metacall/CMakeFiles/metacall.dir/source/metacall_error.c.o +[ 22%] Built target backward_object +[ 22%] Building C object source/metacall/CMakeFiles/metacall.dir/source/metacall_link.c.o +[ 22%] Building C object source/metacall/CMakeFiles/metacall.dir/source/metacall_fork.c.o +[ 22%] Building C object source/log/CMakeFiles/log.dir/source/log.c.o +[ 22%] Building C object source/log/CMakeFiles/log.dir/source/log_valid_size.c.o +[ 22%] Building C object source/log/CMakeFiles/log.dir/source/log_map.c.o + +up to date, audited 7 packages in 1s + +found 0 vulnerabilities +[ 22%] Building C object source/log/CMakeFiles/log.dir/source/log_record.c.o +[ 22%] Building C object source/log/CMakeFiles/log.dir/source/log_level.c.o +[ 22%] Building C object source/log/CMakeFiles/log.dir/source/log_handle.c.o +[ 22%] Linking CXX shared library ../../libbackward.so +[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_aspect.c.o +[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_policy.c.o +[ 23%] Built target typescript-templating-depends +[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_impl.c.o +[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_singleton.c.o +[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_format_binary.c.o +[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_format.c.o +[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_format_custom.c.o +[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_format_text.c.o +[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_schedule.c.o +[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_schedule_sync.c.o +[ 24%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_schedule_async.c.o +-- Detecting CXX compiler ABI info - done +[ 24%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_storage_batch.c.o +[ 24%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_storage.c.o +[ 24%] Built target nodejs-gram +[ 24%] Built target typescript-templating +-- Check for working CXX compiler: /usr/bin/c++ - skipped +-- Detecting CXX compile features +-- Detecting CXX compile features - done +[ 24%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_stream_custom.c.o +[ 24%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_stream.c.o +[ 24%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_storage_sequential.c.o +-- Failed to find LLVM FileCheck +[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_stream_nginx.c.o +[ 25%] Built target backward +[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_stream_file.c.o +-- Found Git: /usr/bin/git (found version "2.47.2") +-- git version: v0.0.0 normalized to 0.0.0 +-- Version: 1.6.1 +[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_stream_socket.c.o +-- Looking for shm_open in rt +[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_stream_syslog.c.o +[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_stream_stdio.c.o +[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_aspect_storage.c.o +[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_aspect_schedule.c.o +[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_aspect_format.c.o +[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_aspect_stream.c.o +[ 26%] Linking CXX shared library ../../liblogd.so + +> ts_loader_bootstrap@1.1.0 build +> tsc + +-- Looking for shm_open in rt - found +-- Performing Test HAVE_CXX_FLAG_STD_CXX11 +[ 26%] Built target log +[ 26%] Building C object source/memory/CMakeFiles/memory.dir/source/memory_allocator_nginx.c.o +[ 26%] Building C object source/adt/CMakeFiles/adt.dir/source/adt.c.o +[ 26%] Building C object source/adt/CMakeFiles/adt.dir/source/adt_hash.c.o +[ 26%] Building C object source/memory/CMakeFiles/memory.dir/source/memory_allocator.c.o +[ 26%] Building C object source/adt/CMakeFiles/adt.dir/source/adt_bucket.c.o +[ 26%] Building C object source/adt/CMakeFiles/adt.dir/source/adt_set.c.o +[ 26%] Building C object source/adt/CMakeFiles/adt.dir/source/adt_trie.c.o +[ 26%] Building C object source/adt/CMakeFiles/adt.dir/source/adt_map.c.o +[ 27%] Building C object source/dynlink/CMakeFiles/dynlink.dir/source/dynlink.c.o +[ 27%] Building C object source/dynlink/CMakeFiles/dynlink.dir/source/dynlink_impl.c.o +[ 27%] Building C object source/adt/CMakeFiles/adt.dir/source/adt_comparable.c.o +[ 27%] Building C object source/memory/CMakeFiles/memory.dir/source/memory_allocator_std.c.o +[ 27%] Building C object source/memory/CMakeFiles/memory.dir/source/memory.c.o +[ 27%] Building C object source/memory/CMakeFiles/memory.dir/source/memory_allocator_nginx_impl.c.o +[ 28%] Building C object source/adt/CMakeFiles/adt.dir/source/adt_vector.c.o +[ 28%] Building C object source/memory/CMakeFiles/memory.dir/source/memory_allocator_std_impl.c.o +[ 28%] Building C object source/dynlink/CMakeFiles/dynlink.dir/source/dynlink_impl_unix.c.o +[ 28%] Building C object source/dynlink/CMakeFiles/dynlink.dir/source/dynlink_interface.c.o +-- Performing Test HAVE_CXX_FLAG_STD_CXX11 - Success +-- Performing Test HAVE_CXX_FLAG_WALL + +added 15 packages in 2s + +1 package is looking for funding + run `npm fund` for details +[ 28%] Linking CXX shared library ../../libmemoryd.so +[ 28%] Linking CXX shared library ../../libdynlinkd.so +[ 28%] Built target metacall-python-open-test-depends +[ 28%] Built target memory +[ 28%] Built target dynlink +-- Performing Test HAVE_CXX_FLAG_WALL - Success +-- Performing Test HAVE_CXX_FLAG_WEXTRA +[ 28%] Linking CXX shared library ../../libmetacalld.so +[ 28%] Linking CXX shared library ../../libadtd.so +[ 28%] Built target adt +[ 28%] Built target metacall +[ 28%] Building C object source/filesystem/CMakeFiles/filesystem.dir/source/filesystem_directory_descriptor.c.o +[ 28%] Building C object source/filesystem/CMakeFiles/filesystem.dir/source/filesystem.c.o +[ 28%] Building C object source/loaders/cob_loader/CMakeFiles/cob_loader.dir/source/cob_loader.c.o +[ 28%] Building CXX object source/loaders/cob_loader/CMakeFiles/cob_loader.dir/source/cob_loader_impl.cpp.o +[ 28%] Building C object source/filesystem/CMakeFiles/filesystem.dir/source/filesystem_file_descriptor.c.o +[ 29%] Building C object source/plugin/CMakeFiles/plugin.dir/source/plugin.c.o +[ 30%] Building C object source/serials/metacall_serial/CMakeFiles/metacall_serial.dir/source/metacall_serial.c.o +[ 30%] Building C object source/loaders/rpc_loader/CMakeFiles/rpc_loader.dir/source/rpc_loader.c.o +[ 30%] Building C object source/loaders/mock_loader/CMakeFiles/mock_loader.dir/source/mock_loader.c.o +[ 30%] Building C object source/loaders/node_loader/CMakeFiles/node_loader.dir/source/node_loader.c.o +[ 30%] Building C object source/loaders/java_loader/CMakeFiles/java_loader.dir/source/java_loader.c.o +[ 30%] Building C object source/loaders/ext_loader/CMakeFiles/ext_loader.dir/source/ext_loader.c.o +[ 30%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect.c.o +[ 30%] Building C object source/loaders/wasm_loader/CMakeFiles/wasm_loader.dir/source/wasm_loader.c.o +[ 30%] Building C object source/detours/plthook_detour/CMakeFiles/plthook_detour.dir/source/plthook_detour.c.o +-- Performing Test HAVE_CXX_FLAG_WEXTRA - Success +-- Performing Test HAVE_CXX_FLAG_WSHADOW +[ 30%] Building C object source/serials/rapid_json_serial/CMakeFiles/rapid_json_serial.dir/source/rapid_json_serial.c.o +[ 30%] Building C object source/loaders/rb_loader/CMakeFiles/rb_loader.dir/source/rb_loader.c.o +[ 30%] Building C object source/loaders/py_loader/CMakeFiles/py_loader.dir/source/py_loader.c.o +[ 30%] Building C object source/loaders/file_loader/CMakeFiles/file_loader.dir/source/file_loader.c.o +[ 31%] Building CXX object source/loaders/node_loader/CMakeFiles/node_loader.dir/source/node_loader_impl.cpp.o +[ 31%] Building CXX object source/loaders/node_loader/CMakeFiles/node_loader.dir/source/node_loader_port.cpp.o +[ 31%] Building CXX object source/loaders/rpc_loader/CMakeFiles/rpc_loader.dir/source/rpc_loader_impl.cpp.o +[ 31%] Building C object source/serials/metacall_serial/CMakeFiles/metacall_serial.dir/source/metacall_serial_impl.c.o +[ 31%] Building CXX object source/loaders/java_loader/CMakeFiles/java_loader.dir/source/java_loader_impl.cpp.o +[ 31%] Building C object source/loaders/rb_loader/CMakeFiles/rb_loader.dir/source/rb_loader_impl.c.o +[ 31%] Building C object source/loaders/file_loader/CMakeFiles/file_loader.dir/source/file_loader_impl.c.o +[ 31%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_type.c.o +[ 31%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_type_id.c.o +[ 32%] Building CXX object source/loaders/ext_loader/CMakeFiles/ext_loader.dir/source/ext_loader_impl.cpp.o +[ 32%] Building CXX object source/serials/rapid_json_serial/CMakeFiles/rapid_json_serial.dir/source/rapid_json_serial_impl.cpp.o +[ 33%] Linking CXX shared library ../../libfilesystemd.so +[ 33%] Building C object source/detours/plthook_detour/CMakeFiles/plthook_detour.dir/source/plthook_detour_impl.c.o +[ 33%] Building C object source/loaders/rb_loader/CMakeFiles/rb_loader.dir/source/rb_loader_impl_parser.c.o +[ 33%] Building C object source/plugin/CMakeFiles/plugin.dir/source/plugin_descriptor.c.o +[ 33%] Building C object source/loaders/wasm_loader/CMakeFiles/wasm_loader.dir/source/wasm_loader_impl.c.o +[ 33%] Building C object source/loaders/mock_loader/CMakeFiles/mock_loader.dir/source/mock_loader_impl.c.o +-- Performing Test HAVE_CXX_FLAG_WSHADOW - Success +-- Performing Test HAVE_CXX_FLAG_WERROR +[ 33%] Building C object source/serials/metacall_serial/CMakeFiles/metacall_serial.dir/source/metacall_serial_impl_serialize.c.o +[ 33%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_signature.c.o +[ 33%] Built target filesystem +[ 33%] Building C object source/detours/plthook_detour/CMakeFiles/plthook_detour.dir/plthook/plthook_elf.c.o +[ 33%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_function.c.o +[ 33%] Building C object source/plugin/CMakeFiles/plugin.dir/source/plugin_impl.c.o +[ 33%] Linking CXX shared module ../../../libmock_loaderd.so +[ 33%] Building CXX object source/extensions/plugin_extension/CMakeFiles/plugin_extension.dir/source/plugin_extension.cpp.o +[ 33%] Building C object source/loaders/wasm_loader/CMakeFiles/wasm_loader.dir/source/wasm_loader_function.c.o +[ 33%] Building C object source/loaders/py_loader/CMakeFiles/py_loader.dir/source/py_loader_impl.c.o +-- Performing Test HAVE_CXX_FLAG_WERROR - Success +[ 33%] Building C object source/plugin/CMakeFiles/plugin.dir/source/plugin_loader.c.o +-- Performing Test HAVE_CXX_FLAG_WSUGGEST_OVERRIDE +[ 33%] Building C object source/loaders/wasm_loader/CMakeFiles/wasm_loader.dir/source/wasm_loader_handle.c.o +[ 33%] Built target mock_loader +[ 33%] Linking CXX shared module ../../../libfile_loaderd.so +[ 33%] Building C object source/serials/metacall_serial/CMakeFiles/metacall_serial.dir/source/metacall_serial_impl_deserialize.c.o +[ 33%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_attribute.c.o +[ 33%] Building C object source/ports/rb_port/CMakeFiles/rb_port.dir/__/__/__/rb_portRUBY_wrap.c.o +[ 33%] Building C object source/ports/rb_port/CMakeFiles/rb_port.dir/source/rb_port.c.o +[ 33%] Building C object source/plugin/CMakeFiles/plugin.dir/source/plugin_manager.c.o +[ 33%] Building CXX object source/loaders/node_loader/CMakeFiles/node_loader.dir/source/node_loader_trampoline.cpp.o +[ 33%] Built target file_loader +HEAD is now at e2239ee6 Googletest export +[ 33%] Linking CXX shared module ../../../libplthook_detourd.so +[ 34%] Building CXX object source/scripts/extension/sum/CMakeFiles/sum_extension.dir/source/sum_extension.cpp.o +-- Performing Test HAVE_CXX_FLAG_WSUGGEST_OVERRIDE - Success +-- Performing Test HAVE_CXX_FLAG_PEDANTIC +[ 34%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_constructor.c.o +[ 35%] Building CXX object source/examples/metacalllog/CMakeFiles/metacalllog.dir/main.cpp.o +[ 35%] Linking CXX shared module ../../../libcob_loaderd.so +[ 35%] Built target plthook_detour +[ 35%] Linking CXX shared module ../../../libmetacall_seriald.so +[ 35%] Building C object source/loaders/py_loader/CMakeFiles/py_loader.dir/source/py_loader_port.c.o +[ 35%] Linking CXX shared library ../../libplugind.so +[ 36%] Linking CXX shared module ../../../libwasm_loaderd.so +[ 36%] No update step for 'google-test-depends' +Failed to run rustfmt: No such file or directory (os error 2) (non-fatal, continuing) +[ 36%] Built target rs_port_bindings +-- Performing Test HAVE_CXX_FLAG_PEDANTIC - Success +-- Performing Test HAVE_CXX_FLAG_PEDANTIC_ERRORS +[ 36%] Building CXX object source/loaders/py_loader/CMakeFiles/py_loader.dir/source/py_loader_threading.cpp.o +[ 36%] Linking CXX executable ../../../metacalllogd +[ 36%] No patch step for 'google-test-depends' +[ 36%] Built target metacall_serial +[ 37%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_memory_tracker.c.o +[ 37%] Built target plugin +[ 37%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_method.c.o +[ 37%] Built target cob_loader +[ 38%] Building C object source/loaders/py_loader/CMakeFiles/py_loader.dir/source/py_loader_dict.c.o +[ 38%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_class_visibility.c.o +[ 38%] Performing configure step for 'google-test-depends' +CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required): + Compatibility with CMake < 3.10 will be removed from a future version of + CMake. + + Update the VERSION argument value. Or, use the ... syntax + to tell CMake that the project requires at least but has been updated + to work with policies introduced by or earlier. + + +[ 38%] Built target wasm_loader +[ 38%] Linking CXX shared module ../../../librb_loaderd.so +[ 38%] Building C object source/detour/CMakeFiles/detour.dir/source/detour.c.o +[ 38%] Built target metacalllog +[ 38%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_class.c.o +[ 38%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_object.c.o +[ 38%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_future.c.o +-- The C compiler identification is GNU 14.2.0 +-- Performing Test HAVE_CXX_FLAG_PEDANTIC_ERRORS - Success +-- Performing Test HAVE_CXX_FLAG_WSHORTEN_64_TO_32 +[ 38%] Built target rb_loader +[ 38%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_exception.c.o + Downloading crates ... +[ 38%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_throwable.c.o +/usr/local/metacall/source/serials/rapid_json_serial/source/rapid_json_serial_impl.cpp: In function 'char* rapidjson::internal::Prettify(char*, int, int, int)': +/usr/local/metacall/source/serials/rapid_json_serial/source/rapid_json_serial_impl.cpp:561:1: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow] + 561 | } + | ^ +[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_scope.c.o +In file included from /usr/include/python3.13d/internal/pycore_mimalloc.h:45, + from /usr/include/python3.13d/internal/pycore_interp.h:31, + from /usr/include/python3.13d/internal/pycore_runtime.h:17, + from /usr/include/python3.13d/internal/pycore_emscripten_trampoline.h:4, + from /usr/include/python3.13d/internal/pycore_object.h:13, + from /usr/include/python3.13d/internal/pycore_dict.h:13, + from /usr/local/metacall/source/loaders/py_loader/source/py_loader_dict.c:32: +/usr/include/python3.13d/internal/mimalloc/mimalloc/internal.h:90:12: warning: redundant redeclaration of '_mi_os_purge' [-Wredundant-decls] + 90 | bool _mi_os_purge(void* p, size_t size, mi_stats_t* stats); + | ^~~~~~~~~~~~ +/usr/include/python3.13d/internal/mimalloc/mimalloc/internal.h:84:12: note: previous declaration of '_mi_os_purge' with type '_Bool(void *, size_t, mi_stats_t *)' {aka '_Bool(void *, long unsigned int, struct mi_stats_s *)'} + 84 | bool _mi_os_purge(void* p, size_t size, mi_stats_t* stats); + | ^~~~~~~~~~~~ +/usr/include/python3.13d/internal/pycore_object.h: In function '_PyObject_HasDeferredRefcount': +/usr/include/python3.13d/internal/pycore_object.h:204:41: warning: unused parameter 'op' [-Wunused-parameter] + 204 | _PyObject_HasDeferredRefcount(PyObject *op) + | ~~~~~~~~~~^~ +/usr/include/python3.13d/internal/pycore_dict.h: In function '_PyDict_NotifyEvent': +/usr/include/python3.13d/internal/pycore_dict.h:273:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations] + 273 | int watcher_bits = mp->ma_version_tag & DICT_WATCHER_MASK; + | ^~~ +In file included from /usr/include/python3.13d/dictobject.h:101, + from /usr/include/python3.13d/Python.h:90, + from /usr/local/metacall/source/loaders/py_loader/include/py_loader/py_loader_dict.h:26, + from /usr/local/metacall/source/loaders/py_loader/source/py_loader_dict.c:21: +/usr/include/python3.13d/cpython/dictobject.h:25:34: note: declared here + 25 | Py_DEPRECATED(3.12) uint64_t ma_version_tag; + | ^~~~~~~~~~~~~~ +/usr/include/python3.13d/internal/pycore_dict.h:278:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations] + 278 | return DICT_NEXT_VERSION(interp) | (mp->ma_version_tag & DICT_WATCHER_AND_MODIFICATION_MASK); + | ^~~~~~ +/usr/include/python3.13d/cpython/dictobject.h:25:34: note: declared here + 25 | Py_DEPRECATED(3.12) uint64_t ma_version_tag; + | ^~~~~~~~~~~~~~ +[ 39%] Linking CXX shared library ../../libdetourd.so + Downloaded proc-macro2 v1.0.92 + Downloaded unicode-ident v1.0.14 + Downloaded quote v1.0.37 +-- Performing Test HAVE_CXX_FLAG_WSHORTEN_64_TO_32 - Failed +-- Performing Test HAVE_CXX_FLAG_FSTRICT_ALIASING +[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_value.c.o +-- The CXX compiler identification is GNU 14.2.0 +[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_context.c.o +-- Detecting C compiler ABI info +[ 39%] Built target detour +[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_value_type.c.o +[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_value_type_id_size.c.o + Compiling proc-macro2 v1.0.92 +[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_value_type_promotion.c.o +[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_value_type_demotion.c.o +[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_value_type_cast.c.o +[ 39%] Linking CXX shared module ../../../rb_portd.so + Compiling unicode-ident v1.0.14 + Compiling metacall v0.4.2 (/usr/local/metacall/source/ports/rs_port) + Restored /usr/local/metacall/source/loaders/cs_loader/netcore/source/project.csproj (in 3.59 sec). +[ 39%] Built target rb_port +-- Detecting C compiler ABI info - done +-- Performing Test HAVE_CXX_FLAG_FSTRICT_ALIASING - Success +-- Performing Test HAVE_CXX_FLAG_WNO_DEPRECATED_DECLARATIONS +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +[ 39%] Linking CXX shared module ../../../../libsum_extensiond.so +-- Detecting CXX compiler ABI info +[ 40%] Linking CXX shared module ../../../libjava_loaderd.so +[ 41%] Linking CXX shared library ../../libreflectd.so +[ 41%] Built target sum_extension +-- Performing Test HAVE_CXX_FLAG_WNO_DEPRECATED_DECLARATIONS - Success +-- Performing Test HAVE_CXX_FLAG_WNO_DEPRECATED +-- Detecting CXX compiler ABI info - done +[ 41%] Built target java_loader +[ 41%] Built target reflect +-- Check for working CXX compiler: /usr/bin/c++ - skipped +-- Detecting CXX compile features +-- Detecting CXX compile features - done +[ 41%] Building C object source/serial/CMakeFiles/serial.dir/source/serial.c.o +CMake Deprecation Warning at googlemock/CMakeLists.txt:45 (cmake_minimum_required): + Compatibility with CMake < 3.10 will be removed from a future version of + CMake. + + Update the VERSION argument value. Or, use the ... syntax + to tell CMake that the project requires at least but has been updated + to work with policies introduced by or earlier. + + +CMake Deprecation Warning at googletest/CMakeLists.txt:56 (cmake_minimum_required): + Compatibility with CMake < 3.10 will be removed from a future version of + CMake. + + Update the VERSION argument value. Or, use the ... syntax + to tell CMake that the project requires at least but has been updated + to work with policies introduced by or earlier. + + +[ 41%] Performing install step for 'libtcc-depends' +-> /usr/local/metacall/build/libtcc/bin : tcc +-> /usr/local/metacall/build/libtcc/lib/tcc : libtcc1.a runmain.o bt-exe.o bt-log.o bcheck.o +-> /usr/local/metacall/build/libtcc/lib/tcc/include : ./include/*.h ./tcclib.h +-> /usr/local/metacall/build/libtcc/lib : libtcc.so +-> /usr/local/metacall/build/libtcc/include : ./libtcc.h +-- Performing Test HAVE_CXX_FLAG_WNO_DEPRECATED - Success +-- Performing Test HAVE_CXX_FLAG_WSTRICT_ALIASING +-> /usr/local/metacall/build/libtcc/share/man/man1 : tcc.1 +[ 41%] Linking CXX shared library ../../libseriald.so +[ 42%] No test step for 'libtcc-depends' +[ 42%] Built target serial +[ 43%] Building C object source/configuration/CMakeFiles/configuration.dir/source/configuration_impl.c.o +[ 43%] Building C object source/configuration/CMakeFiles/configuration.dir/source/configuration.c.o +[ 43%] Building C object source/configuration/CMakeFiles/configuration.dir/source/configuration_singleton.c.o +[ 43%] Building C object source/configuration/CMakeFiles/configuration.dir/source/configuration_object.c.o +[ 43%] Completed 'libtcc-depends' +-- Found Python: /usr/bin/python3 (found version "3.13.2") found components: Interpreter +[ 43%] Linking CXX shared module ../../../libplugin_extensiond.so +-- Performing Test CMAKE_HAVE_LIBC_PTHREAD +-- Performing Test HAVE_CXX_FLAG_WSTRICT_ALIASING - Success +-- Performing Test HAVE_CXX_FLAG_WD654 +[ 43%] Built target libtcc-depends +-- Performing Test HAVE_CXX_FLAG_WD654 - Failed +-- Performing Test HAVE_CXX_FLAG_WTHREAD_SAFETY +[ 43%] Building CXX object source/loaders/c_loader/CMakeFiles/c_loader.dir/source/c_loader_impl.cpp.o +[ 43%] Building C object source/loaders/c_loader/CMakeFiles/c_loader.dir/source/c_loader.c.o +[ 43%] Built target plugin_extension +[ 43%] Building CXX object source/plugins/sandbox_plugin/CMakeFiles/sandbox_plugin.dir/source/sandbox_plugin.cpp.o +[ 43%] Building CXX object source/plugins/backtrace_plugin/CMakeFiles/backtrace_plugin.dir/source/backtrace_plugin.cpp.o +-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success +-- Found Threads: TRUE +[ 43%] Linking CXX shared library ../../libconfigurationd.so +-- Configuring done (2.0s) +[ 43%] Built target ts_loader_bootstrap_build +-- Generating done (0.0s) +-- Build files have been written to: /usr/local/metacall/build/source/tests/src/google-test-depends-build +-- Performing Test HAVE_CXX_FLAG_WTHREAD_SAFETY - Failed +-- Performing Test HAVE_CXX_FLAG_COVERAGE +[ 43%] Performing build step for 'google-test-depends' +Copying ts_loader_bootstrap dependencies +In function 'int64_t node_loader_impl_user_async_handles_count(loader_impl_node)', + inlined from 'void node_loader_impl_destroy_cb(loader_impl_node)' at /usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4349:94, + inlined from 'void node_loader_impl_destroy_prepare_cb(uv_prepare_t*)' at /usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4370:29: +/usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4506:66: warning: assuming signed overflow does not occur when simplifying 'X - Y <= 0' to 'X <= Y' [-Wstrict-overflow] + 4506 | return active_handles - node_impl->base_active_handles - extra_active_handles; + | ^~~~~~~~~~~~~~~~~~~~ +In function 'int64_t node_loader_impl_user_async_handles_count(loader_impl_node)', + inlined from 'void node_loader_impl_destroy_cb(loader_impl_node)' at /usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4349:94, + inlined from 'void node_loader_impl_destroy_check_cb(uv_check_t*)' at /usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4377:29: +/usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4506:66: warning: assuming signed overflow does not occur when simplifying 'X - Y <= 0' to 'X <= Y' [-Wstrict-overflow] + 4506 | return active_handles - node_impl->base_active_handles - extra_active_handles; + | ^~~~~~~~~~~~~~~~~~~~ + Compiling quote v1.0.37 +[ 43%] Built target configuration +MSBuild version 17.7.6+77d58ec69 for .NET +[ 43%] Building C object source/loader/CMakeFiles/loader.dir/source/loader_impl.c.o +[ 43%] Building C object source/loader/CMakeFiles/loader.dir/source/loader.c.o +[ 12%] Building CXX object googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o +[ 43%] Building C object source/loader/CMakeFiles/loader.dir/source/loader_host.c.o +[ 43%] Building C object source/loader/CMakeFiles/loader.dir/source/loader_manager_impl.c.o +-- Performing Test HAVE_CXX_FLAG_COVERAGE - Success +-- Performing Test HAVE_STD_REGEX +-- Performing Test HAVE_STD_REGEX +In file included from /usr/local/include/rapidjson/writer.h:23, + from /usr/local/metacall/source/serials/rapid_json_serial/source/rapid_json_serial_impl.cpp:21: +In function 'char* rapidjson::internal::WriteExponent(int, char*)', + inlined from 'char* rapidjson::internal::Prettify(char*, int, int, int)' at /usr/local/include/rapidjson/internal/dtoa.h:216:29, + inlined from 'char* rapidjson::internal::dtoa(double, char*, int)' at /usr/local/include/rapidjson/internal/dtoa.h:238:24, + inlined from 'char* rapidjson::internal::dtoa(double, char*, int)' at /usr/local/include/rapidjson/internal/dtoa.h:220:14, + inlined from 'bool rapidjson::Writer::WriteDouble(double) [with OutputStream = rapidjson::GenericStringBuffer >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = rapidjson::CrtAllocator; unsigned int writeFlags = 0]' at /usr/local/include/rapidjson/writer.h:579:31, + inlined from 'bool rapidjson::Writer::WriteDouble(double) [with OutputStream = rapidjson::GenericStringBuffer >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = rapidjson::CrtAllocator; unsigned int writeFlags = 0]' at /usr/local/include/rapidjson/writer.h:552:13, + inlined from 'bool rapidjson::Writer::Double(double) [with OutputStream = rapidjson::GenericStringBuffer >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = rapidjson::CrtAllocator; unsigned int writeFlags = 0]' at /usr/local/include/rapidjson/writer.h:195:83, + inlined from 'bool rapidjson::GenericValue::Accept(Handler&) const [with Handler = rapidjson::Writer > >; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator]' at /usr/local/include/rapidjson/document.h:1979:58: +/usr/local/include/rapidjson/internal/dtoa.h:131:5: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow] + 131 | if (K < 0) { + | ^~ +/usr/local/include/rapidjson/internal/dtoa.h:136:5: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow] + 136 | if (K >= 100) { + | ^~ +ts_loader_bootstrap dependencies copied from /usr/local/metacall/source/loaders/ts_loader/bootstrap/node_modules to /usr/local/metacall/build/node_modules +[ 43%] Built target ts_loader_bootstrap +[ 43%] Linking CXX shared module ../../../libpy_loaderd.so + Compiling metacall-inline v0.2.0 (/usr/local/metacall/source/ports/rs_port/inline) +[ 43%] Built target py_loader +[ 44%] Linking CXX shared module ../../../librpc_loaderd.so + Determining projects to restore... +[ 44%] Linking CXX shared library ../../libloaderd.so +[ 44%] Built target rpc_loader +[ 44%] Built target loader +[ 44%] Linking CXX shared module ../../../libext_loaderd.so +[ 44%] Built target ext_loader +In file included from /usr/local/include/rapidjson/reader.h:26, + from /usr/local/include/rapidjson/document.h:20, + from /usr/local/metacall/source/serials/rapid_json_serial/source/rapid_json_serial_impl.cpp:18: +In function 'double rapidjson::internal::FastPath(double, int)', + inlined from 'double rapidjson::internal::StrtodNormalPrecision(double, int)' at /usr/local/include/rapidjson/internal/strtod.h:41:21, + inlined from 'void rapidjson::GenericReader::ParseNumber(InputStream&, Handler&) [with unsigned int parseFlags = 0; InputStream = rapidjson::EncodedInputStream, rapidjson::MemoryStream>; Handler = rapidjson::GenericDocument >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = rapidjson::CrtAllocator]' at /usr/local/include/rapidjson/reader.h:1717:55, + inlined from 'void rapidjson::GenericReader::ParseValue(InputStream&, Handler&) [with unsigned int parseFlags = 0; InputStream = rapidjson::EncodedInputStream, rapidjson::MemoryStream>; Handler = rapidjson::GenericDocument >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = rapidjson::CrtAllocator]' at /usr/local/include/rapidjson/reader.h:1761:46: +/usr/local/include/rapidjson/internal/strtod.h:29:5: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow] + 29 | if (exp < -308) + | ^~ + All projects are up-to-date for restore. +In function 'int64_t node_loader_impl_user_async_handles_count(loader_impl_node)', + inlined from 'void node_loader_impl_destroy_safe(napi_env, loader_impl_async_destroy_safe_type*)' at /usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4402:47: +/usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4506:66: warning: assuming signed overflow does not occur when simplifying 'X - Y <= 0' to 'X <= Y' [-Wstrict-overflow] + 4506 | return active_handles - node_impl->base_active_handles - extra_active_handles; + | ^~~~~~~~~~~~~~~~~~~~ + Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.90s +[ 44%] Built target rs_port +[ 44%] Linking CXX shared module ../../../librapid_json_seriald.so +[ 44%] Built target rapid_json_serial +[ 44%] Linking CXX shared module ../../../plugins/sandbox_plugin/libsandbox_plugind.so +[ 44%] Built target sandbox_plugin +[ 44%] Linking CXX shared module ../../../libnode_loaderd.so +[ 44%] Built target node_loader +[ 44%] Building C object source/loaders/ts_loader/CMakeFiles/ts_loader.dir/source/ts_loader.c.o +[ 45%] Building CXX object source/cli/plugins/cli_sandbox_plugin/CMakeFiles/cli_sandbox_plugin.dir/source/cli_sandbox_plugin.cpp.o +[ 45%] Building CXX object source/loaders/ts_loader/CMakeFiles/ts_loader.dir/source/ts_loader_impl.cpp.o +[ 45%] Built target cli_cmd_plugin +[ 45%] Built target cli_repl_plugin +[ 45%] Building CXX object source/cli/plugins/cli_core_plugin/CMakeFiles/cli_core_plugin.dir/source/cli_core_plugin.cpp.o +[ 45%] Linking CXX shared module ../../../libc_loaderd.so +-- Performing Test HAVE_STD_REGEX -- success +-- Performing Test HAVE_GNU_POSIX_REGEX +-- Performing Test HAVE_GNU_POSIX_REGEX +[ 45%] Linking CXX shared module ../../../../plugins/cli/cmd/cli_sandbox_plugin/libcli_sandbox_plugind.so +[ 45%] Linking CXX shared module ../../../plugins/backtrace_plugin/libbacktrace_plugind.so +[ 45%] Built target c_loader +-- Performing Test HAVE_GNU_POSIX_REGEX -- failed to compile +-- Performing Test HAVE_POSIX_REGEX +-- Performing Test HAVE_POSIX_REGEX +[ 45%] Built target cli_sandbox_plugin +[ 45%] Built target backtrace_plugin +[ 46%] Linking CXX shared module ../../../libts_loaderd.so +[ 46%] Built target ts_loader +-- Performing Test HAVE_POSIX_REGEX -- success +-- Performing Test HAVE_STEADY_CLOCK +-- Performing Test HAVE_STEADY_CLOCK +Installing node_port +-- Performing Test HAVE_STEADY_CLOCK -- success +-- Performing Test CMAKE_HAVE_LIBC_PTHREAD +-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success +-- Found Threads: TRUE +-- Configuring done (11.1s) +-- Generating done (0.0s) +-- Build files have been written to: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/src/google-bench-depends-build +[ 46%] Performing build step for 'google-bench-depends' +[ 9%] Building CXX object src/CMakeFiles/benchmark.dir/benchmark_name.cc.o +[ 9%] Building CXX object src/CMakeFiles/benchmark.dir/benchmark.cc.o +[ 18%] Building CXX object src/CMakeFiles/benchmark.dir/csv_reporter.cc.o +[ 18%] Building CXX object src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o +[ 22%] Building CXX object src/CMakeFiles/benchmark.dir/commandlineflags.cc.o +[ 27%] Building CXX object src/CMakeFiles/benchmark.dir/json_reporter.cc.o +[ 31%] Building CXX object src/CMakeFiles/benchmark.dir/sleep.cc.o +[ 40%] Building CXX object src/CMakeFiles/benchmark.dir/statistics.cc.o +[ 40%] Building CXX object src/CMakeFiles/benchmark.dir/complexity.cc.o +[ 45%] Building CXX object src/CMakeFiles/benchmark.dir/benchmark_register.cc.o +[ 50%] Building CXX object src/CMakeFiles/benchmark.dir/counter.cc.o +[ 54%] Building CXX object src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o +[ 63%] Building CXX object src/CMakeFiles/benchmark.dir/colorprint.cc.o +[ 68%] Building CXX object src/CMakeFiles/benchmark.dir/console_reporter.cc.o +[ 68%] Building CXX object src/CMakeFiles/benchmark.dir/reporter.cc.o +[ 72%] Building CXX object src/CMakeFiles/benchmark.dir/timers.cc.o +[ 77%] Building CXX object src/CMakeFiles/benchmark.dir/string_util.cc.o +[ 81%] Building CXX object src/CMakeFiles/benchmark.dir/perf_counters.cc.o +[ 86%] Building CXX object src/CMakeFiles/benchmark.dir/sysinfo.cc.o +[ 25%] Linking CXX static library ../lib/libgtest.a + project -> /usr/local/metacall/source/loaders/cs_loader/netcore/source/bin/Debug/net7.0/CSLoader.dll + project -> /usr/local/metacall/build/ +[ 25%] Built target gtest +[ 37%] Building CXX object googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o +[ 50%] Building CXX object googlemock/CMakeFiles/gmock.dir/src/gmock-all.cc.o +[ 46%] Built target cs_loader_impl + +up to date, audited 81 packages in 1s + +20 packages are looking for funding + run `npm fund` for details + +3 moderate severity vulnerabilities + +To address all issues (including breaking changes), run: + npm audit fix --force + +Run `npm audit` for details. +[ 46%] Building CXX object source/loaders/cs_loader/CMakeFiles/cs_loader.dir/source/netcore.cpp.o +[ 47%] Building CXX object source/loaders/cs_loader/CMakeFiles/cs_loader.dir/source/simple_netcore.cpp.o +[ 47%] Building C object source/loaders/cs_loader/CMakeFiles/cs_loader.dir/source/cs_loader.c.o +[ 47%] Building CXX object source/loaders/cs_loader/CMakeFiles/cs_loader.dir/source/netcore_linux.cpp.o +[ 47%] Building C object source/loaders/cs_loader/CMakeFiles/cs_loader.dir/source/cs_loader_impl.c.o +[ 47%] Built target node_port +[ 47%] Linking CXX shared module ../../../../plugins/cli/repl/cli_core_plugin/libcli_core_plugind.so +[ 47%] Built target cli_core_plugin +[ 47%] Building CXX object source/cli/metacallcli/CMakeFiles/metacallcli.dir/source/main.cpp.o +[ 47%] Building CXX object source/cli/metacallcli/CMakeFiles/metacallcli.dir/source/application.cpp.o +[ 62%] Linking CXX static library ../lib/libgtest_main.a +[ 62%] Built target gtest_main +[ 47%] Linking CXX shared module ../../../libcs_loaderd.so +[ 47%] Built target cs_loader +[ 75%] Linking CXX static library ../lib/libgmock.a +[ 75%] Built target gmock +[ 47%] Linking CXX executable ../../../metacallclid +[ 87%] Building CXX object googlemock/CMakeFiles/gmock_main.dir/src/gmock_main.cc.o +[ 47%] Built target metacallcli +[100%] Linking CXX static library ../lib/libgmock_main.a +[100%] Built target gmock_main +[ 47%] No install step for 'google-test-depends' +[ 47%] No test step for 'google-test-depends' +[ 47%] Completed 'google-test-depends' +[ 47%] Built target google-test-depends +[ 47%] Building CXX object source/tests/log_test/CMakeFiles/log-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/reflect_scope_test/CMakeFiles/reflect-scope-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/preprocessor_test/CMakeFiles/preprocessor-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/adt_vector_test/CMakeFiles/adt-vector-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/detour_test/CMakeFiles/detour-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/log_custom_test/CMakeFiles/log-custom-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/reflect_object_class_test/CMakeFiles/reflect-object-class-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/reflect_metadata_test/CMakeFiles/reflect-metadata-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/environment_test/CMakeFiles/environment-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/metacall_logs_test/CMakeFiles/metacall-logs-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/configuration_test/CMakeFiles/configuration-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/adt_set_test/CMakeFiles/adt-set-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/metacall_load_memory_empty_test/CMakeFiles/metacall-load-memory-empty-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/adt_map_test/CMakeFiles/adt-map-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/serial_test/CMakeFiles/serial-test.dir/source/main.cpp.o +[ 47%] Building CXX object source/tests/metacall_load_memory_test/CMakeFiles/metacall-load-memory-test.dir/source/main.cpp.o +[ 48%] Building CXX object source/tests/reflect_function_test/CMakeFiles/reflect-function-test.dir/source/main.cpp.o +[ 48%] Building CXX object source/tests/portability_path_test/CMakeFiles/portability-path-test.dir/source/main.cpp.o +[ 48%] Building CXX object source/tests/dynlink_test/CMakeFiles/dynlink-test.dir/source/main.cpp.o +[ 48%] Building CXX object source/tests/rb_loader_parser_test/CMakeFiles/rb-loader-parser-test.dir/source/main.cpp.o +[ 48%] Building CXX object source/tests/metacall_load_configuration_test/CMakeFiles/metacall-load-configuration-test.dir/source/main.cpp.o +[ 49%] Building CXX object source/tests/adt_trie_test/CMakeFiles/adt-trie-test.dir/source/main.cpp.o +[ 49%] Building CXX object source/tests/metacall_load_memory_test/CMakeFiles/metacall-load-memory-test.dir/source/metacall_load_memory_test.cpp.o +[ 49%] Building CXX object source/tests/log_custom_test/CMakeFiles/log-custom-test.dir/source/log_custom_test.cpp.o +[ 49%] Building CXX object source/tests/metacall_load_memory_empty_test/CMakeFiles/metacall-load-memory-empty-test.dir/source/metacall_load_memory_empty_test.cpp.o +[ 49%] Building CXX object source/tests/reflect_metadata_test/CMakeFiles/reflect-metadata-test.dir/source/reflect_metadata_test.cpp.o +[ 49%] Building CXX object source/tests/adt_vector_test/CMakeFiles/adt-vector-test.dir/source/adt_vector_test.cpp.o +[ 49%] Building CXX object source/tests/portability_path_test/CMakeFiles/portability-path-test.dir/source/portability_path_test.cpp.o +[ 90%] Linking CXX static library libbenchmark.a +[ 49%] Building CXX object source/tests/reflect_scope_test/CMakeFiles/reflect-scope-test.dir/source/reflect_scope_test.cpp.o +[ 49%] Building CXX object source/tests/detour_test/CMakeFiles/detour-test.dir/source/detour_test.cpp.o +[ 90%] Built target benchmark +[ 49%] Building CXX object source/tests/metacall_load_configuration_test/CMakeFiles/metacall-load-configuration-test.dir/source/metacall_load_configuration_test.cpp.o +[ 49%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/reflect_value_cast_bool_test.cpp.o +[ 49%] Building CXX object source/tests/log_test/CMakeFiles/log-test.dir/source/log_test.cpp.o +[ 50%] Building CXX object source/tests/reflect_object_class_test/CMakeFiles/reflect-object-class-test.dir/source/reflect_object_class_test.cpp.o +[ 50%] Building CXX object source/tests/adt_map_test/CMakeFiles/adt-map-test.dir/source/adt_map_test.cpp.o +[ 95%] Building CXX object src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o +[ 50%] Building CXX object source/tests/adt_trie_test/CMakeFiles/adt-trie-test.dir/source/adt_trie_test.cpp.o +[ 50%] Building CXX object source/tests/adt_set_test/CMakeFiles/adt-set-test.dir/source/adt_set_test.cpp.o +[ 50%] Building CXX object source/tests/rb_loader_parser_test/CMakeFiles/rb-loader-parser-test.dir/source/rb_loader_parser_test.cpp.o +[ 51%] Building CXX object source/tests/metacall_logs_test/CMakeFiles/metacall-logs-test.dir/source/metacall_logs_test.cpp.o +[ 50%] Building CXX object source/tests/preprocessor_test/CMakeFiles/preprocessor-test.dir/source/preprocessor_test.cpp.o +[ 51%] Building CXX object source/tests/reflect_function_test/CMakeFiles/reflect-function-test.dir/source/reflect_function_test.cpp.o +[ 51%] Building CXX object source/tests/environment_test/CMakeFiles/environment-test.dir/source/environment_test.cpp.o +[ 51%] Building CXX object source/tests/serial_test/CMakeFiles/serial-test.dir/source/serial_test.cpp.o +[ 51%] Building CXX object source/tests/configuration_test/CMakeFiles/configuration-test.dir/source/configuration_test.cpp.o +[ 51%] Building CXX object source/tests/dynlink_test/CMakeFiles/dynlink-test.dir/source/dynlink_test.cpp.o +[100%] Linking CXX static library libbenchmark_main.a +[100%] Built target benchmark_main +[ 51%] Performing install step for 'google-bench-depends' +[ 90%] Built target benchmark +[100%] Built target benchmark_main +Install the project... +-- Install configuration: "Release" +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/lib/libbenchmark.a +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/lib/libbenchmark_main.a +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/include/benchmark +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/include/benchmark/benchmark.h +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/lib/cmake/benchmark/benchmarkConfig.cmake +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/lib/cmake/benchmark/benchmarkConfigVersion.cmake +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/lib/pkgconfig/benchmark.pc +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/lib/cmake/benchmark/benchmarkTargets.cmake +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/lib/cmake/benchmark/benchmarkTargets-release.cmake +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/platform_specific_build_instructions.md +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/random_interleaving.md +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/AssemblyTests.md +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/perf_counters.md +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/index.md +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/dependencies.md +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/releasing.md +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/_config.yml +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/user_guide.md +-- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/tools.md +[ 51%] No test step for 'google-bench-depends' +[ 51%] Completed 'google-bench-depends' +[ 51%] Built target google-bench-depends +[ 51%] Building CXX object source/tests/metacall_load_configuration_fail_test/CMakeFiles/metacall-load-configuration-fail-test.dir/source/main.cpp.o +[ 51%] Linking CXX executable ../../../metacall-load-memory-empty-testd +[ 51%] Linking CXX executable ../../../adt-vector-testd +[ 51%] Linking CXX executable ../../../log-custom-testd +[ 51%] Built target metacall-load-memory-empty-test +[ 51%] Building CXX object source/tests/metacall_load_configuration_relative_test/CMakeFiles/metacall-load-configuration-relative-test.dir/source/main.cpp.o +[ 51%] Linking CXX executable ../../../metacall-logs-testd +[ 51%] Linking CXX executable ../../../adt-trie-testd +[ 51%] Linking CXX executable ../../../metacall-load-memory-testd +[ 51%] Built target log-custom-test +[ 51%] Built target adt-vector-test +[ 51%] Building CXX object source/tests/metacall_load_configuration_node_python_test/CMakeFiles/metacall-load-configuration-node-python-test.dir/source/main.cpp.o +[ 52%] Building CXX object source/tests/metacall_load_configuration_python_node_test/CMakeFiles/metacall-load-configuration-python-node-test.dir/source/main.cpp.o +[ 52%] Built target metacall-logs-test +[ 52%] Building CXX object source/tests/metacall_duplicated_handle_test/CMakeFiles/metacall-duplicated-handle-test.dir/source/main.cpp.o +[ 52%] Built target adt-trie-test +[ 52%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/reflect_value_cast_char_test.cpp.o +[ 52%] Built target metacall-load-memory-test +[ 53%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/reflect_value_cast_short_test.cpp.o +[ 53%] Building CXX object source/tests/metacall_load_configuration_fail_test/CMakeFiles/metacall-load-configuration-fail-test.dir/source/metacall_load_configuration_fail_test.cpp.o +[ 53%] Linking CXX executable ../../../environment-testd +[ 53%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/reflect_value_cast_int_test.cpp.o +[ 53%] Linking CXX executable ../../../adt-set-testd +[ 53%] Linking CXX executable ../../../detour-testd +[ 53%] Linking CXX executable ../../../adt-map-testd +[ 53%] Linking CXX executable ../../../reflect-function-testd +[ 53%] Built target environment-test +[ 53%] Linking CXX executable ../../../dynlink-testd +[ 54%] Linking CXX executable ../../../log-testd +[ 54%] Building CXX object source/tests/metacall_duplicated_symbols_test/CMakeFiles/metacall-duplicated-symbols-test.dir/source/main.cpp.o +[ 54%] Linking CXX executable ../../../preprocessor-testd +[ 54%] Linking CXX executable ../../../reflect-metadata-testd +[ 54%] Built target detour-test +[ 54%] Built target adt-map-test +[ 54%] Built target adt-set-test +[ 54%] Building CXX object source/tests/metacall_test/CMakeFiles/metacall-test.dir/source/main.cpp.o +[ 54%] Building CXX object source/tests/metacall_load_configuration_relative_test/CMakeFiles/metacall-load-configuration-relative-test.dir/source/metacall_load_configuration_relative_test.cpp.o +[ 54%] Built target reflect-function-test +[ 54%] Building CXX object source/tests/metacall_handle_export_test/CMakeFiles/metacall-handle-export-test.dir/source/main.cpp.o +[ 54%] Building CXX object source/tests/metacall_duplicated_symbols_test/CMakeFiles/metacall-duplicated-symbols-test.dir/source/metacall_duplicated_symbols_test.cpp.o +[ 55%] Building CXX object source/tests/metacall_handle_get_test/CMakeFiles/metacall-handle-get-test.dir/source/main.cpp.o +[ 55%] Built target log-test +[ 55%] Built target dynlink-test +[ 55%] Building CXX object source/tests/metacall_node_test/CMakeFiles/metacall-node-test.dir/source/main.cpp.o +[ 55%] Built target preprocessor-test +[ 55%] Building CXX object source/tests/metacall_node_event_loop_test/CMakeFiles/metacall-node-event-loop-test.dir/source/main.cpp.o +[ 55%] Built target reflect-metadata-test +[ 55%] Building CXX object source/tests/metacall_node_event_loop_test/CMakeFiles/metacall-node-event-loop-test.dir/source/metacall_node_event_loop_test.cpp.o +[ 56%] Building CXX object source/tests/metacall_node_test/CMakeFiles/metacall-node-test.dir/source/metacall_node_test.cpp.o +[ 56%] Building C object source/tests/rb_loader_parser_test/CMakeFiles/rb-loader-parser-test.dir/__/__/loaders/rb_loader/source/rb_loader_impl_parser.c.o +[ 56%] Building CXX object source/tests/metacall_duplicated_handle_test/CMakeFiles/metacall-duplicated-handle-test.dir/source/metacall_duplicated_handle_test.cpp.o +[ 56%] Building CXX object source/tests/metacall_load_configuration_node_python_test/CMakeFiles/metacall-load-configuration-node-python-test.dir/source/metacall_load_configuration_node_python_test.cpp.o +[ 56%] Building CXX object source/tests/metacall_load_configuration_python_node_test/CMakeFiles/metacall-load-configuration-python-node-test.dir/source/metacall_load_configuration_python_node_test.cpp.o +[ 57%] Linking CXX executable ../../../rb-loader-parser-testd +[ 57%] Linking CXX executable ../../../configuration-testd +[ 57%] Linking CXX executable ../../../reflect-scope-testd +[ 57%] Built target rb-loader-parser-test +[ 58%] Building CXX object source/tests/metacall_node_event_loop_signal_test/CMakeFiles/metacall-node-event-loop-signal-test.dir/source/main.cpp.o +[ 58%] Built target configuration-test +[ 58%] Building CXX object source/tests/metacall_node_call_test/CMakeFiles/metacall-node-call-test.dir/source/main.cpp.o +[ 58%] Built target reflect-scope-test +[ 58%] Building CXX object source/tests/metacall_node_inline_test/CMakeFiles/metacall-node-inline-test.dir/source/main.cpp.o +[ 58%] Building CXX object source/tests/metacall_node_async_test/CMakeFiles/metacall-node-async-test.dir/source/main.cpp.o +[ 58%] Building CXX object source/tests/metacall_handle_export_test/CMakeFiles/metacall-handle-export-test.dir/source/metacall_handle_export_test.cpp.o +[ 59%] Linking CXX executable ../../../metacall-load-configuration-testd +[ 59%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/reflect_value_cast_long_test.cpp.o +[ 59%] Building CXX object source/tests/metacall_node_inline_test/CMakeFiles/metacall-node-inline-test.dir/source/metacall_node_inline_test.cpp.o +[ 60%] Building CXX object source/tests/metacall_test/CMakeFiles/metacall-test.dir/source/metacall_test.cpp.o +[ 61%] Building CXX object source/tests/metacall_node_async_multiple_test/CMakeFiles/metacall-node-async-multiple-test.dir/source/main.cpp.o +[ 61%] Building CXX object source/tests/metacall_handle_get_test/CMakeFiles/metacall-handle-get-test.dir/source/metacall_handle_get_test.cpp.o +[ 61%] Linking CXX executable ../../../metacall-load-configuration-fail-testd +[ 61%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/reflect_value_cast_float_test.cpp.o +[ 61%] Built target metacall-load-configuration-test +[ 61%] Building CXX object source/tests/metacall_node_reentrant_test/CMakeFiles/metacall-node-reentrant-test.dir/source/main.cpp.o +[ 61%] Linking CXX executable ../../../metacall-node-event-loop-testd +[ 61%] Linking CXX executable ../../../metacall-duplicated-symbols-testd +[ 61%] Built target metacall-load-configuration-fail-test +[ 61%] Building CXX object source/tests/metacall_node_reentrant_test/CMakeFiles/metacall-node-reentrant-test.dir/source/metacall_node_reentrant_test.cpp.o +[ 61%] Built target metacall-duplicated-symbols-test +[ 61%] Linking CXX executable ../../../metacall-load-configuration-relative-testd +[ 61%] Built target metacall-node-event-loop-test +[ 61%] Building CXX object source/tests/metacall_node_port_test/CMakeFiles/metacall-node-port-test.dir/source/main.cpp.o +[ 61%] Building CXX object source/tests/metacall_node_async_test/CMakeFiles/metacall-node-async-test.dir/source/metacall_node_async_test.cpp.o +[ 61%] Building CXX object source/tests/metacall_node_event_loop_signal_test/CMakeFiles/metacall-node-event-loop-signal-test.dir/source/metacall_node_event_loop_signal_test.cpp.o +[ 61%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/reflect_value_cast_double_test.cpp.o +[ 61%] Building CXX object source/tests/metacall_node_async_multiple_test/CMakeFiles/metacall-node-async-multiple-test.dir/source/metacall_node_async_multiple_test.cpp.o +[ 61%] Building CXX object source/tests/metacall_node_call_test/CMakeFiles/metacall-node-call-test.dir/source/metacall_node_call_test.cpp.o +[ 61%] Linking CXX executable ../../../metacall-load-configuration-node-python-testd +[ 61%] Building CXX object source/tests/metacall_node_port_test/CMakeFiles/metacall-node-port-test.dir/source/metacall_node_port_test.cpp.o +[ 61%] Linking CXX executable ../../../metacall-load-configuration-python-node-testd +[ 61%] Built target metacall-load-configuration-relative-test +[ 61%] Building CXX object source/tests/metacall_node_port_await_test/CMakeFiles/metacall-node-port-await-test.dir/source/main.cpp.o +[ 61%] Linking CXX executable ../../../serial-testd +[ 61%] Linking CXX executable ../../../portability-path-testd +[ 61%] Built target metacall-load-configuration-node-python-test +[ 61%] Building CXX object source/tests/metacall_node_port_c_lib_test/CMakeFiles/metacall-node-port-c-lib-test.dir/source/main.cpp.o +[ 61%] Built target metacall-load-configuration-python-node-test +[ 61%] Building CXX object source/tests/metacall_node_python_port_mock_test/CMakeFiles/metacall-node-python-port-mock-test.dir/source/main.cpp.o +[ 61%] Linking CXX executable ../../../reflect-object-class-testd +[ 61%] Building CXX object source/tests/metacall_node_python_port_ruby_test/CMakeFiles/metacall-node-python-port-ruby-test.dir/source/main.cpp.o +[ 61%] Built target serial-test +[ 61%] Linking CXX executable ../../../metacall-duplicated-handle-testd +[ 61%] Building CXX object source/tests/metacall_node_python_port_mock_test/CMakeFiles/metacall-node-python-port-mock-test.dir/source/metacall_node_python_port_mock_test.cpp.o +[ 61%] Building CXX object source/tests/metacall_node_port_c_lib_test/CMakeFiles/metacall-node-port-c-lib-test.dir/source/metacall_node_port_c_lib_test.cpp.o +[ 61%] Built target portability-path-test +[ 61%] Building CXX object source/tests/metacall_node_python_ruby_test/CMakeFiles/metacall-node-python-ruby-test.dir/source/main.cpp.o +[ 61%] Built target reflect-object-class-test +[ 61%] Building CXX object source/tests/metacall_node_callback_test/CMakeFiles/metacall-node-callback-test.dir/source/main.cpp.o +[ 61%] Built target metacall-duplicated-handle-test +[ 61%] Building CXX object source/tests/metacall_node_fail_test/CMakeFiles/metacall-node-fail-test.dir/source/main.cpp.o +[ 61%] Building CXX object source/tests/metacall_node_fail_env_var_test/CMakeFiles/metacall-node-fail-env-var-test.dir/source/main.cpp.o +[ 61%] Linking CXX executable ../../../metacall-node-testd +[ 61%] Built target metacall-node-test +[ 61%] Building CXX object source/tests/metacall_node_fail_load_leak_test/CMakeFiles/metacall-node-fail-load-leak-test.dir/source/main.cpp.o +[ 62%] Building CXX object source/tests/metacall_node_fail_load_leak_test/CMakeFiles/metacall-node-fail-load-leak-test.dir/source/metacall_node_fail_load_leak_test.cpp.o +[ 62%] Building CXX object source/tests/metacall_node_port_await_test/CMakeFiles/metacall-node-port-await-test.dir/source/metacall_node_port_await_test.cpp.o +[ 62%] Building CXX object source/tests/metacall_node_python_port_ruby_test/CMakeFiles/metacall-node-python-port-ruby-test.dir/source/metacall_node_python_port_ruby_test.cpp.o +[ 62%] Building CXX object source/tests/metacall_node_typescript_test/CMakeFiles/metacall-node-typescript-test.dir/source/main.cpp.o +[ 62%] Building CXX object source/tests/metacall_node_python_async_after_destroy_test/CMakeFiles/metacall-node-python-async-after-destroy-test.dir/source/main.cpp.o +[ 62%] Linking CXX executable ../../../metacall-handle-export-testd +[ 62%] Linking CXX executable ../../../metacall-node-event-loop-signal-testd +[ 63%] Building CXX object source/tests/metacall_node_python_async_after_destroy_test/CMakeFiles/metacall-node-python-async-after-destroy-test.dir/source/metacall_node_python_async_after_destroy_test.cpp.o +[ 63%] Linking CXX executable ../../../metacall-node-inline-testd +[ 63%] Building CXX object source/tests/metacall_node_python_ruby_test/CMakeFiles/metacall-node-python-ruby-test.dir/source/metacall_node_python_ruby_test.cpp.o +[ 64%] Linking CXX executable ../../../metacall-node-call-testd +[ 64%] Built target metacall-handle-export-test +[ 64%] Linking CXX executable ../../../metacall-node-python-port-mock-testd +[ 64%] Built target metacall-node-event-loop-signal-test +[ 64%] Building CXX object source/tests/metacall_node_python_await_test/CMakeFiles/metacall-node-python-await-test.dir/source/main.cpp.o +[ 64%] Building CXX object source/tests/metacall_node_callback_test/CMakeFiles/metacall-node-callback-test.dir/source/metacall_node_callback_test.cpp.o +[ 64%] Building CXX object source/tests/metacall_node_python_await_test/CMakeFiles/metacall-node-python-await-test.dir/source/metacall_node_python_await_test.cpp.o +[ 64%] Linking CXX executable ../../../metacall-node-port-c-lib-testd +[ 64%] Built target metacall-node-inline-test +[ 65%] Building CXX object source/tests/metacall_node_python_exception_test/CMakeFiles/metacall-node-python-exception-test.dir/source/main.cpp.o +[ 65%] Linking CXX executable ../../../reflect-value-cast-testd +[ 65%] Building CXX object source/tests/metacall_node_fail_test/CMakeFiles/metacall-node-fail-test.dir/source/metacall_node_fail_test.cpp.o +[ 65%] Linking CXX executable ../../../metacall-node-port-testd +[ 65%] Built target metacall-node-python-port-mock-test +[ 65%] Built target metacall-node-call-test +[ 65%] Building CXX object source/tests/metacall_node_clear_mem_test/CMakeFiles/metacall-node-clear-mem-test.dir/source/main.cpp.o +[ 65%] Building CXX object source/tests/metacall_node_async_resources_test/CMakeFiles/metacall-node-async-resources-test.dir/source/main.cpp.o +[ 65%] Building CXX object source/tests/metacall_node_fail_env_var_test/CMakeFiles/metacall-node-fail-env-var-test.dir/source/metacall_node_fail_env_var_test.cpp.o +[ 65%] Built target metacall-node-port-c-lib-test +[ 65%] Building CXX object source/tests/metacall_node_async_resources_test/CMakeFiles/metacall-node-async-resources-test.dir/source/metacall_node_async_resources_test.cpp.o +[ 65%] Linking CXX executable ../../../metacall-node-reentrant-testd +[ 65%] Built target metacall-node-port-test +[ 65%] Building CXX object source/tests/metacall_node_await_chain_test/CMakeFiles/metacall-node-await-chain-test.dir/source/main.cpp.o +[ 65%] Built target reflect-value-cast-test +[ 65%] Linking CXX executable ../../../metacall-handle-get-testd +[ 65%] Building CXX object source/tests/metacall_node_exception_test/CMakeFiles/metacall-node-exception-test.dir/source/main.cpp.o +[ 65%] Building CXX object source/tests/metacall_node_exception_test/CMakeFiles/metacall-node-exception-test.dir/source/metacall_node_exception_test.cpp.o +[ 65%] Built target metacall-node-reentrant-test +[ 65%] Building CXX object source/tests/metacall_node_python_deadlock_test/CMakeFiles/metacall-node-python-deadlock-test.dir/source/main.cpp.o +[ 66%] Linking CXX executable ../../../metacall-node-async-testd +[ 66%] Linking CXX executable ../../../metacall-node-async-multiple-testd +[ 66%] Building CXX object source/tests/metacall_node_typescript_test/CMakeFiles/metacall-node-typescript-test.dir/source/metacall_node_typescript_test.cpp.o +[ 66%] Building CXX object source/tests/metacall_node_python_deadlock_test/CMakeFiles/metacall-node-python-deadlock-test.dir/source/metacall_node_python_deadlock_test.cpp.o +[ 66%] Built target metacall-node-async-test +[ 66%] Built target metacall-handle-get-test +[ 66%] Building CXX object source/tests/metacall_node_extension_test/CMakeFiles/metacall-node-extension-test.dir/source/main.cpp.o +[ 66%] Building CXX object source/tests/metacall_node_native_code_test/CMakeFiles/metacall-node-native-code-test.dir/source/main.cpp.o +[ 66%] Built target metacall-node-async-multiple-test +[ 67%] Linking CXX executable ../../../metacall-node-port-await-testd +[ 68%] Building CXX object source/tests/metacall_node_multithread_deadlock_test/CMakeFiles/metacall-node-multithread-deadlock-test.dir/source/main.cpp.o +[ 69%] Linking CXX executable ../../../metacall-node-python-port-ruby-testd +[ 69%] Building CXX object source/tests/metacall_distributable_test/CMakeFiles/metacall-distributable-test.dir/source/main.cpp.o +[ 69%] Linking CXX executable ../../../metacall-node-python-async-after-destroy-testd +[ 69%] Built target metacall-node-python-port-ruby-test +[ 69%] Built target metacall-node-port-await-test +[ 69%] Building CXX object source/tests/metacall_distributable_test/CMakeFiles/metacall-distributable-test.dir/source/metacall_distributable_test.cpp.o +[ 70%] Building CXX object source/tests/metacall_cast_test/CMakeFiles/metacall-cast-test.dir/source/main.cpp.o +[ 70%] Building CXX object source/tests/metacall_node_python_exception_test/CMakeFiles/metacall-node-python-exception-test.dir/source/metacall_node_python_exception_test.cpp.o +[ 70%] Building CXX object source/tests/metacall_cast_test/CMakeFiles/metacall-cast-test.dir/source/metacall_cast_test.cpp.o +[ 70%] Linking CXX executable ../../../metacall-node-python-await-testd +[ 70%] Building CXX object source/tests/metacall_node_clear_mem_test/CMakeFiles/metacall-node-clear-mem-test.dir/source/metacall_node_clear_mem_test.cpp.o +[ 70%] Built target metacall-node-python-async-after-destroy-test +[ 70%] Building CXX object source/tests/metacall_init_fini_test/CMakeFiles/metacall-init-fini-test.dir/source/main.cpp.o +[ 70%] Building CXX object source/tests/metacall_node_native_code_test/CMakeFiles/metacall-node-native-code-test.dir/source/metacall_node_native_code_test.cpp.o +[ 70%] Built target metacall-node-python-await-test +[ 70%] Building CXX object source/tests/metacall_ducktype_test/CMakeFiles/metacall-ducktype-test.dir/source/main.cpp.o +[ 70%] Building CXX object source/tests/metacall_node_await_chain_test/CMakeFiles/metacall-node-await-chain-test.dir/source/metacall_node_await_chain_test.cpp.o +[ 70%] Linking CXX executable ../../../metacall-node-fail-load-leak-testd +[ 70%] Building CXX object source/tests/metacall_inspect_test/CMakeFiles/metacall-inspect-test.dir/source/main.cpp.o +[ 70%] Linking CXX executable ../../../metacall-node-async-resources-testd +[ 70%] Built target metacall-node-fail-load-leak-test +[ 70%] Building CXX object source/tests/metacall_integration_test/CMakeFiles/metacall-integration-test.dir/source/main.cpp.o +[ 70%] Building CXX object source/tests/metacall_ducktype_test/CMakeFiles/metacall-ducktype-test.dir/source/metacall_ducktype_test.cpp.o +[ 70%] Building CXX object source/tests/metacall_node_extension_test/CMakeFiles/metacall-node-extension-test.dir/source/metacall_node_extension_test.cpp.o +[ 70%] Linking CXX executable ../../../metacall-node-callback-testd +[ 70%] Built target metacall-node-async-resources-test +[ 70%] Linking CXX executable ../../../metacall-node-python-ruby-testd +[ 71%] Building CXX object source/tests/metacall_depends_test/CMakeFiles/metacall-depends-test.dir/source/main.cpp.o +[ 72%] Linking CXX executable ../../../metacall-node-exception-testd +[ 72%] Linking CXX executable ../../../metacall-node-python-deadlock-testd +[ 72%] Building CXX object source/tests/metacall_node_multithread_deadlock_test/CMakeFiles/metacall-node-multithread-deadlock-test.dir/source/metacall_node_multithread_deadlock_test.cpp.o +[ 72%] Built target metacall-node-callback-test +[ 72%] Linking CXX executable ../../../metacall-node-fail-testd +[ 72%] Building CXX object source/tests/metacall_depends_test/CMakeFiles/metacall-depends-test.dir/source/metacall_depends_test.cpp.o +[ 72%] Linking CXX executable ../../../metacall-node-fail-env-var-testd +[ 72%] Building CXX object source/tests/metacall_init_fini_test/CMakeFiles/metacall-init-fini-test.dir/source/metacall_init_fini_test.cpp.o +[ 72%] Built target metacall-node-python-ruby-test +[ 72%] Built target metacall-node-exception-test +[ 72%] Building CXX object source/tests/metacall_configuration_default_test/CMakeFiles/metacall-configuration-default-test.dir/source/main.cpp.o +[ 72%] Building CXX object source/tests/metacall_configuration_exec_path_test/CMakeFiles/metacall-configuration-exec-path-test.dir/source/main.cpp.o +[ 72%] Building CXX object source/tests/metacall_configuration_default_test/CMakeFiles/metacall-configuration-default-test.dir/source/metacall_configuration_default_test.cpp.o +[ 72%] Built target metacall-node-python-deadlock-test +[ 72%] Building CXX object source/tests/metacall_configuration_exec_path_test/CMakeFiles/metacall-configuration-exec-path-test.dir/source/metacall_configuration_exec_path_test.cpp.o +[ 72%] Built target metacall-node-fail-test +[ 72%] Building CXX object source/tests/metacall_clear_test/CMakeFiles/metacall-clear-test.dir/source/main.cpp.o +[ 72%] Built target metacall-node-fail-env-var-test +[ 72%] Building CXX object source/tests/metacall_python_test/CMakeFiles/metacall-python-test.dir/source/main.cpp.o +[ 72%] Building CXX object source/tests/metacall_python_test/CMakeFiles/metacall-python-test.dir/source/metacall_python_test.cpp.o +[ 72%] Linking CXX executable ../../../metacall-testd +[ 72%] Building CXX object source/tests/metacall_clear_test/CMakeFiles/metacall-clear-test.dir/source/metacall_clear_test.cpp.o +[ 72%] Linking CXX executable ../../../metacall-node-python-exception-testd +[ 72%] Building CXX object source/tests/metacall_inspect_test/CMakeFiles/metacall-inspect-test.dir/source/metacall_inspect_test.cpp.o +[ 72%] Built target metacall-test +[ 72%] Building CXX object source/tests/metacall_python_object_class_test/CMakeFiles/metacall-python-object-class-test.dir/source/main.cpp.o +[ 72%] Built target metacall-node-python-exception-test +[ 72%] Building CXX object source/tests/metacall_python_gc_test/CMakeFiles/metacall-python-gc-test.dir/source/main.cpp.o +[ 72%] Linking CXX executable ../../../metacall-cast-testd +[ 72%] Building CXX object source/tests/metacall_integration_test/CMakeFiles/metacall-integration-test.dir/source/environment.cpp.o +[ 72%] Linking CXX executable ../../../metacall-node-clear-mem-testd +[ 72%] Building CXX object source/tests/metacall_python_gc_test/CMakeFiles/metacall-python-gc-test.dir/source/metacall_python_gc_test.cpp.o +[ 72%] Linking CXX executable ../../../metacall-node-typescript-testd +[ 72%] Built target metacall-cast-test +[ 72%] Building CXX object source/tests/metacall_python_open_test/CMakeFiles/metacall-python-open-test.dir/source/main.cpp.o +[ 72%] Built target metacall-node-clear-mem-test +[ 72%] Linking CXX executable ../../../metacall-node-await-chain-testd +[ 72%] Building CXX object source/tests/metacall_python_dict_test/CMakeFiles/metacall-python-dict-test.dir/source/main.cpp.o +[ 72%] Built target metacall-node-typescript-test +[ 72%] Building CXX object source/tests/metacall_integration_test/CMakeFiles/metacall-integration-test.dir/source/metacall_integration_test.cpp.o +[ 72%] Building CXX object source/tests/metacall_python_pointer_test/CMakeFiles/metacall-python-pointer-test.dir/source/main.cpp.o +[ 72%] Building CXX object source/tests/metacall_python_dict_test/CMakeFiles/metacall-python-dict-test.dir/source/metacall_python_dict_test.cpp.o +[ 72%] Building CXX object source/tests/metacall_python_reentrant_test/CMakeFiles/metacall-python-reentrant-test.dir/source/main.cpp.o +[ 72%] Built target metacall-node-await-chain-test +[ 73%] Building CXX object source/tests/metacall_python_object_class_test/CMakeFiles/metacall-python-object-class-test.dir/source/metacall_python_object_class_test.cpp.o +[ 73%] Building CXX object source/tests/metacall_python_varargs_test/CMakeFiles/metacall-python-varargs-test.dir/source/main.cpp.o +[ 73%] Linking CXX executable ../../../configuration-default-test/metacall-configuration-default-testd +[ 73%] Linking CXX executable ../../../metacall-node-native-code-testd +[ 73%] Linking CXX executable ../../../metacall-init-fini-testd +[ 73%] Built target metacall-configuration-default-test +[ 73%] Building CXX object source/tests/metacall_python_reentrant_test/CMakeFiles/metacall-python-reentrant-test.dir/source/metacall_python_reentrant_test.cpp.o +[ 74%] Building CXX object source/tests/metacall_python_loader_port_test/CMakeFiles/py-loader-port-test.dir/source/main.cpp.o +[ 74%] Linking CXX executable ../../../metacall-configuration-exec-path-testd +[ 74%] Built target metacall-node-native-code-test +[ 74%] Built target metacall-init-fini-test +[ 74%] Building CXX object source/tests/metacall_python_loader_port_test/CMakeFiles/py-loader-port-test.dir/source/metacall_python_loader_port_test.cpp.o +[ 74%] Building CXX object source/tests/metacall_python_port_https_test/CMakeFiles/metacall-python-port-https-test.dir/source/main.cpp.o +[ 75%] Building CXX object source/tests/metacall_python_port_callback_test/CMakeFiles/metacall-python-port-callback-test.dir/source/main.cpp.o +[ 75%] Linking CXX executable ../../../metacall-distributable-testd +[ 75%] Linking CXX executable ../../../metacall-node-extension-testd +[ 75%] Linking CXX executable ../../../metacall-clear-testd +[ 75%] Building CXX object source/tests/metacall_python_port_callback_test/CMakeFiles/metacall-python-port-callback-test.dir/source/metacall_python_port_callback_test.cpp.o +[ 75%] Linking CXX executable ../../../metacall-node-multithread-deadlock-testd +[ 75%] Built target metacall-configuration-exec-path-test +[ 75%] Building CXX object source/tests/metacall_python_port_pointer_test/CMakeFiles/metacall-python-port-pointer-test.dir/source/main.cpp.o +[ 75%] Linking CXX executable ../../../metacall-python-testd +[ 75%] Linking CXX executable ../../../metacall-depends-testd +[ 75%] Building CXX object source/tests/metacall_python_open_test/CMakeFiles/metacall-python-open-test.dir/source/metacall_python_open_test.cpp.o +[ 75%] Built target metacall-node-extension-test +[ 75%] Built target metacall-distributable-test +[ 75%] Building CXX object source/tests/metacall_python_port_pointer_test/CMakeFiles/metacall-python-port-pointer-test.dir/source/metacall_python_port_pointer_test.cpp.o +[ 75%] Built target metacall-clear-test +[ 76%] Building CXX object source/tests/metacall_python_callback_test/CMakeFiles/metacall-python-callback-test.dir/source/main.cpp.o +[ 76%] Building CXX object source/tests/metacall_python_port_import_test/CMakeFiles/metacall-python-port-import-test.dir/source/main.cpp.o +[ 76%] Building CXX object source/tests/metacall_python_fail_test/CMakeFiles/metacall-python-fail-test.dir/source/main.cpp.o +[ 77%] Linking CXX executable ../../../metacall-ducktype-testd +[ 77%] Building CXX object source/tests/metacall_python_fail_test/CMakeFiles/metacall-python-fail-test.dir/source/metacall_python_fail_test.cpp.o +[ 77%] Built target metacall-node-multithread-deadlock-test +[ 77%] Building CXX object source/tests/metacall_python_pointer_test/CMakeFiles/metacall-python-pointer-test.dir/source/metacall_python_pointer_test.cpp.o +[ 77%] Built target metacall-python-test +[ 77%] Built target metacall-depends-test +[ 77%] Building CXX object source/tests/metacall_python_without_functions_test/CMakeFiles/metacall-python-without-functions-test.dir/source/main.cpp.o +[ 77%] Building CXX object source/tests/metacall_python_relative_path_test/CMakeFiles/metacall-python-relative-path-test.dir/source/main.cpp.o +[ 77%] Building CXX object source/tests/metacall_python_builtins_test/CMakeFiles/metacall-python-builtins-test.dir/source/main.cpp.o +[ 77%] Building CXX object source/tests/metacall_python_varargs_test/CMakeFiles/metacall-python-varargs-test.dir/source/metacall_python_varargs_test.cpp.o +[ 77%] Linking CXX executable ../../../metacall-python-gc-testd +[ 77%] Linking CXX executable ../../../metacall-inspect-testd +[ 77%] Built target metacall-ducktype-test +[ 77%] Building CXX object source/tests/metacall_python_port_import_test/CMakeFiles/metacall-python-port-import-test.dir/source/metacall_python_port_import_test.cpp.o +[ 77%] Built target metacall-inspect-test +[ 77%] Built target metacall-python-gc-test +[ 77%] Building CXX object source/tests/metacall_python_callback_test/CMakeFiles/metacall-python-callback-test.dir/source/metacall_python_callback_test.cpp.o +[ 77%] Building CXX object source/tests/metacall_python_async_test/CMakeFiles/metacall-python-async-test.dir/source/main.cpp.o +[ 77%] Building CXX object source/tests/metacall_python_without_functions_test/CMakeFiles/metacall-python-without-functions-test.dir/source/metacall_python_without_functions_test.cpp.o +[ 77%] Building CXX object source/tests/metacall_python_async_test/CMakeFiles/metacall-python-async-test.dir/source/metacall_python_async_test.cpp.o +[ 77%] Building CXX object source/tests/metacall_python_port_https_test/CMakeFiles/metacall-python-port-https-test.dir/source/metacall_python_port_https_test.cpp.o +[ 78%] Linking CXX executable ../../../metacall-integration-testd +[ 78%] Building CXX object source/tests/metacall_python_builtins_test/CMakeFiles/metacall-python-builtins-test.dir/source/metacall_python_builtins_test.cpp.o +[ 79%] Building CXX object source/tests/metacall_python_relative_path_test/CMakeFiles/metacall-python-relative-path-test.dir/source/metacall_python_relative_path_test.cpp.o +[ 79%] Built target metacall-integration-test +[ 79%] Building CXX object source/tests/metacall_python_exception_test/CMakeFiles/metacall-python-exception-test.dir/source/main.cpp.o +[ 79%] Building CXX object source/tests/metacall_python_exception_test/CMakeFiles/metacall-python-exception-test.dir/source/metacall_python_exception_test.cpp.o +[ 79%] Linking CXX executable ../../../metacall-python-port-callback-testd +[ 80%] Building CXX object source/tests/metacall_python_without_env_vars_test/CMakeFiles/metacall-python-without-env-vars-test.dir/source/main.cpp.o +[ 80%] Building CXX object source/tests/metacall_python_without_env_vars_test/CMakeFiles/metacall-python-without-env-vars-test.dir/source/metacall_python_without_env_vars_test.cpp.o +[ 80%] Linking CXX executable ../../../metacall-python-reentrant-testd +[ 80%] Building CXX object source/tests/metacall_map_test/CMakeFiles/metacall-map-test.dir/source/main.cpp.o +[ 80%] Building CXX object source/tests/metacall_map_test/CMakeFiles/metacall-map-test.dir/source/metacall_map_test.cpp.o +[ 80%] Built target metacall-python-port-callback-test +[ 80%] Built target metacall-python-reentrant-test +[ 80%] Building CXX object source/tests/metacall_initialize_test/CMakeFiles/metacall-initialize-test.dir/source/main.cpp.o +[ 80%] Building CXX object source/tests/metacall_map_await_test/CMakeFiles/metacall-map-await-test.dir/source/main.cpp.o +[ 80%] Linking CXX executable ../../../py-loader-port-testd +[ 80%] Building CXX object source/tests/metacall_map_await_test/CMakeFiles/metacall-map-await-test.dir/source/metacall_map_await_test.cpp.o +[ 80%] Linking CXX executable ../../../metacall-python-dict-testd +[ 80%] Linking CXX executable ../../../metacall-python-port-pointer-testd +[ 80%] Built target py-loader-port-test +[ 80%] Built target metacall-python-dict-test +[ 80%] Building CXX object source/tests/metacall_initialize_ex_test/CMakeFiles/metacall-initialize-ex-test.dir/source/main.cpp.o +[ 81%] Building CXX object source/tests/metacall_reinitialize_test/CMakeFiles/metacall-reinitialize-test.dir/source/main.cpp.o +[ 81%] Linking CXX executable ../../../metacall-python-object-class-testd +[ 81%] Linking CXX executable ../../../metacall-python-fail-testd +[ 81%] Linking CXX executable ../../../metacall-python-varargs-testd +[ 81%] Built target metacall-python-port-pointer-test +[ 81%] Building CXX object source/tests/metacall_initialize_destroy_multiple_test/CMakeFiles/metacall-initialize-destroy-multiple-test.dir/source/main.cpp.o +[ 81%] Building CXX object source/tests/metacall_initialize_destroy_multiple_node_test/CMakeFiles/metacall-initialize-destroy-multiple-node-test.dir/source/main.cpp.o +[ 82%] Linking CXX executable ../../../metacall-python-port-import-testd +[ 82%] Built target metacall-python-object-class-test +[ 82%] Linking CXX executable ../../../metacall-python-port-https-testd +[ 82%] Building CXX object source/tests/metacall_reload_functions_test/CMakeFiles/metacall-reload-functions-test.dir/source/main.cpp.o +[ 82%] Linking CXX executable ../../../metacall-python-pointer-testd +[ 82%] Built target metacall-python-fail-test +[ 82%] Building CXX object source/tests/metacall_initialize_destroy_multiple_node_test/CMakeFiles/metacall-initialize-destroy-multiple-node-test.dir/source/metacall_initialize_destroy_multiple_node_test.cpp.o +[ 82%] Building CXX object source/tests/metacall_initialize_destroy_multiple_test/CMakeFiles/metacall-initialize-destroy-multiple-test.dir/source/metacall_initialize_destroy_multiple_test.cpp.o +[ 82%] Linking CXX executable ../../../metacall-python-callback-testd +[ 82%] Built target metacall-python-varargs-test +[ 82%] Building CXX object source/tests/metacall_invalid_loader_test/CMakeFiles/metacall-invalid-loader-test.dir/source/metacall_invalid_loader_test.cpp.o +[ 83%] Building CXX object source/tests/metacall_initialize_test/CMakeFiles/metacall-initialize-test.dir/source/metacall_initialize_test.cpp.o +[ 83%] Building CXX object source/tests/metacall_invalid_loader_test/CMakeFiles/metacall-invalid-loader-test.dir/source/main.cpp.o +[ 83%] Linking CXX executable ../../../metacall-python-open-testd +[ 83%] Built target metacall-python-port-https-test +[ 83%] Built target metacall-python-port-import-test +[ 84%] Linking CXX executable ../../../metacall-python-exception-testd +[ 84%] Linking CXX executable ../../../metacall-python-without-functions-testd +[ 84%] Building CXX object source/tests/metacall_return_monad_test/CMakeFiles/metacall-return-monad-test.dir/source/main.cpp.o +[ 84%] Building CXX object source/tests/metacall_fork_test/CMakeFiles/metacall-fork-test.dir/source/main.cpp.o +[ 84%] Building CXX object source/tests/metacall_fork_test/CMakeFiles/metacall-fork-test.dir/source/metacall_fork_test.cpp.o +[ 84%] Built target metacall-python-callback-test +[ 84%] Built target metacall-python-pointer-test +[ 84%] Building CXX object source/tests/metacall_return_monad_test/CMakeFiles/metacall-return-monad-test.dir/source/metacall_return_monad_test.cpp.o +[ 84%] Linking CXX executable ../../../metacall-python-without-env-vars-testd +[ 84%] Building CXX object source/tests/metacall_callback_complex_test/CMakeFiles/metacall-callback-complex-test.dir/source/main.cpp.o +[ 84%] Built target metacall-python-open-test +[ 84%] Built target metacall-python-without-functions-test +[ 84%] Building CXX object source/tests/metacall_callback_complex_test/CMakeFiles/metacall-callback-complex-test.dir/source/metacall_callback_complex_test.cpp.o +[ 84%] Building CXX object source/tests/metacall_ruby_fail_test/CMakeFiles/metacall-ruby-fail-test.dir/source/main.cpp.o +[ 84%] Built target metacall-python-exception-test +[ 84%] Building CXX object source/tests/metacall_ruby_fail_empty_test/CMakeFiles/metacall-ruby-fail-empty-test.dir/source/main.cpp.o +[ 84%] Linking CXX executable ../../../metacall-python-builtins-testd +[ 84%] Linking CXX executable ../../../metacall-python-async-testd +[ 84%] Built target metacall-python-without-env-vars-test +[ 84%] Building CXX object source/tests/metacall_ruby_object_class_test/CMakeFiles/metacall-ruby-object-class-test.dir/source/main.cpp.o +[ 84%] Building CXX object source/tests/metacall_initialize_ex_test/CMakeFiles/metacall-initialize-ex-test.dir/source/metacall_initialize_ex_test.cpp.o +[ 84%] Building CXX object source/tests/metacall_reinitialize_test/CMakeFiles/metacall-reinitialize-test.dir/source/metacall_reinitialize_test.cpp.o +[ 84%] Linking CXX executable ../../../metacall-python-relative-path-testd +[ 84%] Built target metacall-python-async-test +[ 84%] Building CXX object source/tests/metacall_ruby_parser_integration_test/CMakeFiles/metacall-ruby-parser-integration-test.dir/source/main.cpp.o +[ 84%] Built target metacall-python-builtins-test +[ 84%] Building CXX object source/tests/metacall_ruby_parser_integration_test/CMakeFiles/metacall-ruby-parser-integration-test.dir/source/metacall_ruby_parser_integration_test.cpp.o +[ 84%] Building CXX object source/tests/metacall_ruby_object_class_test/CMakeFiles/metacall-ruby-object-class-test.dir/source/metacall_ruby_object_class_test.cpp.o +[ 84%] Building CXX object source/tests/metacall_function_test/CMakeFiles/metacall-function-test.dir/source/main.cpp.o +[ 84%] Built target metacall-python-relative-path-test +[ 84%] Linking CXX executable ../../../metacall-map-testd +[ 84%] Building CXX object source/tests/metacall_reload_functions_test/CMakeFiles/metacall-reload-functions-test.dir/source/metacall_reload_functions_test.cpp.o +[ 84%] Building CXX object source/tests/metacall_cobol_test/CMakeFiles/metacall-cobol-test.dir/source/main.cpp.o +[ 84%] Building CXX object source/tests/metacall_cobol_test/CMakeFiles/metacall-cobol-test.dir/source/metacall_cobol_test.cpp.o +[ 84%] Built target metacall-map-test +[ 84%] Building CXX object source/tests/metacall_file_test/CMakeFiles/metacall-file-test.dir/source/main.cpp.o +[ 84%] Building CXX object source/tests/metacall_file_fail_test/CMakeFiles/metacall-file-fail-test.dir/source/main.cpp.o +[ 84%] Building CXX object source/tests/metacall_file_test/CMakeFiles/metacall-file-test.dir/source/metacall_file_test.cpp.o +[ 84%] Linking CXX executable ../../../metacall-invalid-loader-testd +[ 85%] Linking CXX executable ../../../metacall-initialize-destroy-multiple-node-testd +[ 85%] Linking CXX executable ../../../metacall-initialize-destroy-multiple-testd +[ 86%] Building CXX object source/tests/metacall_ruby_fail_test/CMakeFiles/metacall-ruby-fail-test.dir/source/metacall_ruby_fail_test.cpp.o +[ 86%] Linking CXX executable ../../../metacall-initialize-testd +[ 87%] Building CXX object source/tests/metacall_file_glob_test/CMakeFiles/metacall-file-glob-test.dir/source/main.cpp.o +[ 87%] Building CXX object source/tests/metacall_ruby_fail_empty_test/CMakeFiles/metacall-ruby-fail-empty-test.dir/source/metacall_ruby_fail_empty_test.cpp.o +[ 87%] Built target metacall-invalid-loader-test +[ 87%] Building CXX object source/tests/metacall_typescript_test/CMakeFiles/metacall-typescript-test.dir/source/main.cpp.o +[ 88%] Linking CXX executable ../../../metacall-fork-testd +[ 88%] Built target metacall-initialize-destroy-multiple-test +[ 88%] Built target metacall-initialize-destroy-multiple-node-test +[ 88%] Building CXX object source/tests/metacall_file_glob_test/CMakeFiles/metacall-file-glob-test.dir/source/metacall_file_glob_test.cpp.o +[ 88%] Building CXX object source/tests/metacall_typescript_test/CMakeFiles/metacall-typescript-test.dir/source/metacall_typescript_test.cpp.o +[ 88%] Built target metacall-initialize-test +[ 89%] Building CXX object source/tests/metacall_typescript_node_test/CMakeFiles/metacall-typescript-node-test.dir/source/main.cpp.o +[ 89%] Building CXX object source/tests/metacall_typescript_call_map_test/CMakeFiles/metacall-typescript-call-map-test.dir/source/main.cpp.o +[ 89%] Building CXX object source/tests/metacall_typescript_call_map_test/CMakeFiles/metacall-typescript-call-map-test.dir/source/metacall_typescript_call_map_test.cpp.o +[ 89%] Built target metacall-fork-test +[ 89%] Linking CXX executable ../../../metacall-map-await-testd +[ 89%] Building CXX object source/tests/metacall_typescript_tsx_test/CMakeFiles/metacall-typescript-tsx-test.dir/source/main.cpp.o +[ 89%] Linking CXX executable ../../../metacall-initialize-ex-testd +[ 89%] Linking CXX executable ../../../metacall-reinitialize-testd +[ 89%] Built target metacall-map-await-test +[ 89%] Building CXX object source/tests/metacall_function_test/CMakeFiles/metacall-function-test.dir/source/metacall_function_test.cpp.o +[ 89%] Building CXX object source/tests/metacall_typescript_tsx_loop_fail_test/CMakeFiles/metacall-typescript-tsx-loop-fail-test.dir/source/main.cpp.o +[ 89%] Built target metacall-initialize-ex-test +[ 89%] Building CXX object source/tests/metacall_typescript_require_test/CMakeFiles/metacall-typescript-require-test.dir/source/main.cpp.o +[ 89%] Building CXX object source/tests/metacall_typescript_jsx_default_test/CMakeFiles/metacall-typescript-jsx-default-test.dir/source/main.cpp.o +[ 89%] Built target metacall-reinitialize-test +[ 89%] Building CXX object source/tests/metacall_typescript_jsx_default_test/CMakeFiles/metacall-typescript-jsx-default-test.dir/source/metacall_typescript_jsx_default_test.cpp.o +[ 89%] Building CXX object source/tests/metacall_file_fail_test/CMakeFiles/metacall-file-fail-test.dir/source/metacall_file_fail_test.cpp.o +[ 89%] Building CXX object source/tests/metacall_typescript_require_test/CMakeFiles/metacall-typescript-require-test.dir/source/metacall_typescript_require_test.cpp.o +[ 89%] Building CXX object source/tests/metacall_typescript_node_test/CMakeFiles/metacall-typescript-node-test.dir/source/metacall_typescript_node_test.cpp.o +[ 89%] Linking CXX executable ../../../metacall-ruby-parser-integration-testd +[ 89%] Linking CXX executable ../../../metacall-ruby-fail-testd +[ 90%] Linking CXX executable ../../../metacall-return-monad-testd +[ 90%] Building CXX object source/tests/metacall_typescript_tsx_test/CMakeFiles/metacall-typescript-tsx-test.dir/source/metacall_typescript_tsx_test.cpp.o +[ 90%] Building CXX object source/tests/metacall_typescript_tsx_loop_fail_test/CMakeFiles/metacall-typescript-tsx-loop-fail-test.dir/source/metacall_typescript_tsx_loop_fail_test.cpp.o +[ 90%] Built target metacall-ruby-parser-integration-test +[ 90%] Building CXX object source/tests/metacall_csharp_static_class_test/CMakeFiles/metacall-csharp-static-class-test.dir/source/main.cpp.o +[ 90%] Building CXX object source/tests/metacall_rpc_test/CMakeFiles/metacall-rpc-test.dir/source/main.cpp.o +[ 90%] Built target metacall-ruby-fail-test +[ 90%] Building CXX object source/tests/metacall_csharp_static_class_test/CMakeFiles/metacall-csharp-static-class-test.dir/source/metacall_csharp_static_class_test.cpp.o +[ 91%] Building CXX object source/tests/metacall_ruby_test/CMakeFiles/metacall-ruby-test.dir/source/main.cpp.o +[ 91%] Built target metacall-return-monad-test +[ 91%] Building CXX object source/tests/metacall_cs_test/CMakeFiles/metacall-cs-test.dir/source/main.cpp.o +[ 91%] Building CXX object source/tests/metacall_cs_test/CMakeFiles/metacall-cs-test.dir/source/environment.cpp.o +[ 91%] Linking CXX executable ../../../metacall-callback-complex-testd +[ 91%] Building CXX object source/tests/metacall_cs_test/CMakeFiles/metacall-cs-test.dir/source/metacall_cs_test.cpp.o +[ 91%] Building CXX object source/tests/metacall_rpc_test/CMakeFiles/metacall-rpc-test.dir/source/metacall_rpc_test.cpp.o +[ 92%] Linking CXX executable ../../../metacall-cobol-testd +[ 92%] Linking CXX executable ../../../metacall-ruby-fail-empty-testd +[ 92%] Linking CXX executable ../../../metacall-reload-functions-testd +[ 92%] Linking CXX executable ../../../metacall-ruby-object-class-testd +[ 92%] Linking CXX executable ../../../metacall-file-testd +[ 92%] Built target metacall-callback-complex-test +[ 92%] Linking CXX executable ../../../metacall-typescript-jsx-default-testd +[ 92%] Building CXX object source/tests/metacall_java_test/CMakeFiles/metacall-java-test.dir/source/main.cpp.o +[ 92%] Built target metacall-cobol-test +[ 92%] Building CXX object source/tests/metacall_wasm_test/CMakeFiles/metacall-wasm-test.dir/source/main.cpp.o +[ 92%] Built target metacall-ruby-object-class-test +[ 92%] Built target metacall-reload-functions-test +[ 92%] Built target metacall-ruby-fail-empty-test +[ 92%] Building CXX object source/tests/metacall_wasm_python_port_test/CMakeFiles/metacall-wasm-python-port-test.dir/source/main.cpp.o +[ 92%] Building CXX object source/tests/metacall_c_lib_test/CMakeFiles/metacall-c-lib-test.dir/source/main.cpp.o +[ 92%] Building CXX object source/tests/metacall_c_test/CMakeFiles/metacall-c-test.dir/source/main.cpp.o +[ 92%] Built target metacall-file-test +[ 92%] Built target metacall-typescript-jsx-default-test +[ 92%] Building CXX object source/tests/metacall_version_test/CMakeFiles/metacall-version-test.dir/source/main.cpp.o +[ 92%] Building CXX object source/tests/metacall_dynlink_path_test/CMakeFiles/metacall-dynlink-path-test.dir/source/main.cpp.o +[ 93%] Linking CXX executable ../../../metacall-typescript-testd +[ 94%] Building CXX object source/tests/metacall_dynlink_path_test/CMakeFiles/metacall-dynlink-path-test.dir/source/metacall_dynlink_path_test.cpp.o +[ 94%] Linking CXX executable ../../../metacall-file-glob-testd +[ 94%] Linking CXX executable ../../../metacall-typescript-call-map-testd +[ 94%] Building CXX object source/tests/metacall_ruby_test/CMakeFiles/metacall-ruby-test.dir/source/metacall_ruby_test.cpp.o +[ 95%] Building CXX object source/tests/metacall_version_test/CMakeFiles/metacall-version-test.dir/source/metacall_version_test.cpp.o +[ 95%] Built target metacall-typescript-test +[ 95%] Building CXX object source/tests/metacall_library_path_without_env_vars_test/CMakeFiles/metacall-library-path-without-env-vars-test.dir/source/main.cpp.o +[ 95%] Built target metacall-file-glob-test +[ 95%] Building CXX object source/tests/metacall_ext_test/CMakeFiles/metacall-ext-test.dir/source/main.cpp.o +[ 95%] Building CXX object source/tests/metacall_ext_test/CMakeFiles/metacall-ext-test.dir/source/metacall_ext_test.cpp.o +[ 95%] Built target metacall-typescript-call-map-test +[ 96%] Building CXX object source/tests/metacall_plugin_extension_test/CMakeFiles/metacall-plugin-extension-test.dir/source/main.cpp.o +[ 96%] Linking CXX executable ../../../metacall-typescript-require-testd +[ 96%] Building CXX object source/tests/metacall_wasm_test/CMakeFiles/metacall-wasm-test.dir/source/metacall_wasm_test.cpp.o +[ 96%] Linking CXX executable ../../../metacall-file-fail-testd +[ 96%] Building CXX object source/tests/metacall_java_test/CMakeFiles/metacall-java-test.dir/source/metacall_java_test.cpp.o +[ 96%] Built target metacall-typescript-require-test +[ 96%] Building CXX object source/tests/metacall_wasm_python_port_test/CMakeFiles/metacall-wasm-python-port-test.dir/source/metacall_wasm_python_port_test.cpp.o +[ 96%] Linking CXX executable ../../../metacall-function-testd +[ 96%] Built target metacall-file-fail-test +[ 96%] Linking CXX executable ../../../metacall-typescript-tsx-loop-fail-testd +[ 97%] Building CXX object source/tests/metacall_library_path_without_env_vars_test/CMakeFiles/metacall-library-path-without-env-vars-test.dir/source/metacall_library_path_without_env_vars_test.cpp.o +[ 98%] Building CXX object source/tests/metacall_c_lib_test/CMakeFiles/metacall-c-lib-test.dir/source/metacall_c_lib_test.cpp.o +[ 98%] Linking CXX executable ../../../metacall-typescript-node-testd +[ 98%] Building CXX object source/tests/metacall_c_test/CMakeFiles/metacall-c-test.dir/source/metacall_c_test.cpp.o +[ 98%] Building CXX object source/tests/metacall_plugin_extension_test/CMakeFiles/metacall-plugin-extension-test.dir/source/metacall_plugin_extension_test.cpp.o +[ 98%] Building CXX object source/tests/metacall_plugin_extension_local_test/CMakeFiles/metacall-plugin-extension-local-test.dir/source/main.cpp.o +[ 98%] Building CXX object source/tests/metacall_plugin_extension_local_test/CMakeFiles/metacall-plugin-extension-local-test.dir/source/metacall_plugin_extension_local_test.cpp.o +[ 98%] Built target metacall-function-test +[ 98%] Building CXX object source/tests/metacall_backtrace_plugin_test/CMakeFiles/metacall-backtrace-plugin-test.dir/source/main.cpp.o +[ 98%] Built target metacall-typescript-tsx-loop-fail-test +[ 98%] Linking CXX executable ../../../metacall-cs-testd +[ 98%] Linking CXX executable ../../../metacall-typescript-tsx-testd +[ 98%] Building CXX object source/tests/metacall_sandbox_plugin_test/CMakeFiles/metacall-sandbox-plugin-test.dir/source/main.cpp.o +[ 98%] Built target metacall-typescript-node-test +[ 98%] Building CXX object source/benchmarks/log_bench/CMakeFiles/log-bench.dir/source/log_bench.cpp.o +[ 98%] Linking CXX executable ../../../metacall-csharp-static-class-testd +[ 98%] Building CXX object source/benchmarks/metacall_py_c_api_bench/CMakeFiles/metacall-py-c-api-bench.dir/source/metacall_py_c_api_bench.cpp.o +[ 98%] Building CXX object source/tests/metacall_sandbox_plugin_test/CMakeFiles/metacall-sandbox-plugin-test.dir/source/metacall_sandbox_plugin_test.cpp.o +[ 98%] Built target metacall-cs-test +[ 98%] Built target metacall-typescript-tsx-test +[ 98%] Building CXX object source/benchmarks/metacall_py_call_bench/CMakeFiles/metacall-py-call-bench.dir/source/metacall_py_call_bench.cpp.o +[ 98%] Building CXX object source/tests/metacall_backtrace_plugin_test/CMakeFiles/metacall-backtrace-plugin-test.dir/source/metacall_backtrace_plugin_test.cpp.o +[ 98%] Building CXX object source/benchmarks/metacall_py_init_bench/CMakeFiles/metacall-py-init-bench.dir/source/metacall_py_init_bench.cpp.o +[ 98%] Linking CXX executable ../../../metacall-dynlink-path-testd +[ 98%] Linking CXX executable ../../../metacall-ruby-testd +[ 98%] Linking CXX executable ../../../metacall-version-testd +[ 98%] Built target metacall-csharp-static-class-test +[ 98%] Building CXX object source/benchmarks/metacall_node_call_bench/CMakeFiles/metacall-node-call-bench.dir/source/metacall_node_call_bench.cpp.o +[ 98%] Building CXX object source/benchmarks/metacall_rb_call_bench/CMakeFiles/metacall-rb-call-bench.dir/source/metacall_rb_call_bench.cpp.o +[ 98%] Built target metacall-dynlink-path-test +[ 98%] Built target metacall-ruby-test +[ 98%] Building CXX object source/benchmarks/metacall_cs_call_bench/CMakeFiles/metacall-cs-call-bench.dir/source/metacall_cs_call_bench.cpp.o +[ 98%] Linking CXX executable ../../../metacall-rpc-testd +[ 98%] Built target metacall-version-test +[ 98%] Built target metacall-rpc-test +[ 98%] Linking CXX executable ../../../metacall-wasm-python-port-testd +[ 98%] Linking CXX executable ../../../log-benchd +[ 99%] Linking CXX executable ../../../metacall-py-init-benchd +[ 99%] Built target metacall-wasm-python-port-test +[ 99%] Linking CXX executable ../../../metacall-py-c-api-benchd +[ 99%] Built target log-bench +[ 99%] Linking CXX executable ../../../metacall-library-path-without-env-vars-testd +[ 99%] Built target metacall-py-init-bench +[ 99%] Built target metacall-py-c-api-bench +[ 99%] Linking CXX executable ../../../metacall-py-call-benchd +[ 99%] Built target metacall-library-path-without-env-vars-test +[ 99%] Linking CXX executable ../../../metacall-rb-call-benchd +[ 99%] Linking CXX executable ../../../metacall-ext-testd +[ 99%] Built target metacall-py-call-bench +[100%] Linking CXX executable ../../../metacall-cs-call-benchd +[100%] Linking CXX executable ../../../metacall-node-call-benchd +[100%] Built target metacall-rb-call-bench +[100%] Built target metacall-cs-call-bench +[100%] Built target metacall-ext-test +[100%] Linking CXX executable ../../../metacall-c-lib-testd +[100%] Built target metacall-node-call-bench +[100%] Built target metacall-c-lib-test +[100%] Linking CXX executable ../../../metacall-backtrace-plugin-testd +[100%] Built target metacall-backtrace-plugin-test +[100%] Linking CXX executable ../../../metacall-c-testd +[100%] Linking CXX executable ../../../metacall-plugin-extension-local-testd +[100%] Linking CXX executable ../../../metacall-plugin-extension-testd +[100%] Built target metacall-plugin-extension-local-test +[100%] Built target metacall-c-test +[100%] Built target metacall-plugin-extension-test +[100%] Linking CXX executable ../../../metacall-wasm-testd +[100%] Linking CXX executable ../../../metacall-java-testd +[100%] Built target metacall-wasm-test +[100%] Built target metacall-java-test +[100%] Linking CXX executable ../../../metacall-sandbox-plugin-testd +[100%] Built target metacall-sandbox-plugin-test ++ [ 1 = 1 ] ++ getconf _NPROCESSORS_ONLN ++ ctest -j24 --timeout 5400 --output-on-failure --test-output-size-failed 3221000000 -C Debug +Test project /usr/local/metacall/build + Start 1: ts_loader_bootstrap + Start 2: node_port + Start 3: node_port_test_executable + Start 4: py_port + Start 5: go_port + Start 6: rs_port + Start 7: rb_port + Start 8: preprocessor-test + Start 9: environment-test + Start 10: log-test + Start 11: log-custom-test + Start 12: adt-set-test + Start 13: adt-trie-test + Start 14: adt-vector-test + Start 15: adt-map-test + Start 16: reflect-value-cast-test + Start 17: reflect-function-test + Start 18: reflect-object-class-test + Start 19: reflect-scope-test + Start 20: reflect-metadata-test + Start 21: dynlink-test + Start 22: detour-test + Start 23: serial-test + Start 24: configuration-test + 1/175 Test #8: preprocessor-test ................................ Passed 0.04 sec + 2/175 Test #9: environment-test ................................. Passed 0.03 sec + 3/175 Test #10: log-test ......................................... Passed 0.03 sec + 4/175 Test #11: log-custom-test .................................. Passed 0.03 sec + 5/175 Test #12: adt-set-test ..................................... Passed 0.03 sec + 6/175 Test #13: adt-trie-test .................................... Passed 0.03 sec + 7/175 Test #14: adt-vector-test .................................. Passed 0.03 sec + 8/175 Test #15: adt-map-test ..................................... Passed 0.03 sec + 9/175 Test #16: reflect-value-cast-test .......................... Passed 0.02 sec + 10/175 Test #17: reflect-function-test ............................ Passed 0.02 sec + 11/175 Test #18: reflect-object-class-test ........................ Passed 0.02 sec + 12/175 Test #19: reflect-scope-test ............................... Passed 0.02 sec + 13/175 Test #20: reflect-metadata-test ............................ Passed 0.02 sec + 14/175 Test #21: dynlink-test ..................................... Passed 0.02 sec + Start 25: rb-loader-parser-test + Start 26: portability-path-test + Start 27: metacall-logs-test + Start 28: metacall-load-memory-test + Start 29: metacall-load-memory-empty-test + Start 30: metacall-load-configuration-test + Start 31: metacall-load-configuration-fail-test + Start 32: metacall-load-configuration-relative-test + Start 33: metacall-load-configuration-python-node-test + Start 34: metacall-load-configuration-node-python-test + Start 35: metacall-duplicated-handle-test + Start 36: metacall-duplicated-symbols-test + Start 37: metacall-handle-export-test + Start 38: metacall-handle-get-test + 15/175 Test #22: detour-test ...................................... Passed 0.08 sec + 16/175 Test #23: serial-test ...................................... Passed 0.07 sec + 17/175 Test #24: configuration-test ............................... Passed 0.07 sec + 18/175 Test #25: rb-loader-parser-test ............................ Passed 0.06 sec + 19/175 Test #26: portability-path-test ............................ Passed 0.06 sec + Start 39: metacall-test + Start 40: metacall-node-test + Start 41: metacall-node-event-loop-test + Start 42: metacall-node-event-loop-signal-test + Start 43: metacall-node-call-test + 20/175 Test #27: metacall-logs-test ............................... Passed 0.33 sec + Start 44: metacall-node-inline-test + 21/175 Test #32: metacall-load-configuration-relative-test ........ Passed 0.46 sec + Start 45: metacall-node-async-test + 22/175 Test #31: metacall-load-configuration-fail-test ............ Passed 0.66 sec + Start 46: metacall-node-async-multiple-test + 23/175 Test #42: metacall-node-event-loop-signal-test ............. Passed 0.62 sec + Start 47: metacall-node-reentrant-test + 24/175 Test #28: metacall-load-memory-test ........................ Passed 0.72 sec + Start 48: metacall-node-port-test + 25/175 Test #40: metacall-node-test ............................... Passed 0.77 sec + Start 49: metacall-node-port-await-test + 26/175 Test #7: rb_port .......................................... Passed 0.90 sec + Start 50: metacall-node-port-c-lib-test + 27/175 Test #36: metacall-duplicated-symbols-test ................. Passed 1.06 sec + Start 51: metacall-node-python-port-mock-test + 28/175 Test #45: metacall-node-async-test ......................... Passed 0.69 sec + Start 52: metacall-node-python-port-ruby-test + 29/175 Test #44: metacall-node-inline-test ........................ Passed 0.87 sec + Start 53: metacall-node-python-ruby-test + 30/175 Test #47: metacall-node-reentrant-test ..................... Passed 0.66 sec + Start 54: metacall-node-callback-test + 31/175 Test #33: metacall-load-configuration-python-node-test ..... Passed 1.37 sec + Start 55: metacall-node-fail-test + 32/175 Test #43: metacall-node-call-test .......................... Passed 1.36 sec + Start 56: metacall-node-fail-env-var-test + 33/175 Test #37: metacall-handle-export-test ...................... Passed 1.40 sec + Start 57: metacall-node-fail-load-leak-test + 34/175 Test #30: metacall-load-configuration-test ................. Passed 1.51 sec + Start 58: metacall-node-typescript-test + 35/175 Test #34: metacall-load-configuration-node-python-test ..... Passed 1.52 sec + Start 59: metacall-node-python-async-after-destroy-test + 36/175 Test #38: metacall-handle-get-test ......................... Passed 1.52 sec + Start 60: metacall-node-python-await-test + 37/175 Test #35: metacall-duplicated-handle-test .................. Passed 1.56 sec + Start 61: metacall-node-python-exception-test + 38/175 Test #4: py_port .......................................... Passed 1.72 sec + Start 62: metacall-node-clear-mem-test + 39/175 Test #49: metacall-node-port-await-test .................... Passed 0.86 sec + Start 63: metacall-node-async-resources-test + 40/175 Test #50: metacall-node-port-c-lib-test .................... Passed 0.85 sec + Start 64: metacall-node-await-chain-test + 41/175 Test #56: metacall-node-fail-env-var-test .................. Passed 0.35 sec + Start 65: metacall-node-exception-test + 42/175 Test #55: metacall-node-fail-test .......................... Passed 0.60 sec + Start 66: metacall-node-python-deadlock-test + 43/175 Test #57: metacall-node-fail-load-leak-test ................ Passed 0.55 sec + Start 67: metacall-node-native-code-test + 44/175 Test #62: metacall-node-clear-mem-test ..................... Passed 0.42 sec + Start 68: metacall-node-extension-test + 45/175 Test #52: metacall-node-python-port-ruby-test .............. Passed 1.04 sec + Start 69: metacall-node-multithread-deadlock-test + 46/175 Test #64: metacall-node-await-chain-test ................... Passed 0.51 sec + Start 70: metacall-distributable-test + 47/175 Test #51: metacall-node-python-port-mock-test .............. Passed 1.13 sec + Start 71: metacall-cast-test + 48/175 Test #54: metacall-node-callback-test ...................... Passed 0.89 sec + Start 72: metacall-init-fini-test + 49/175 Test #65: metacall-node-exception-test ..................... Passed 0.51 sec + Start 73: metacall-ducktype-test + 50/175 Test #68: metacall-node-extension-test ..................... Passed 0.40 sec + Start 74: metacall-inspect-test + 51/175 Test #60: metacall-node-python-await-test .................. Passed 0.92 sec + Start 75: metacall-integration-test + 52/175 Test #67: metacall-node-native-code-test ................... Passed 0.52 sec + Start 76: metacall-depends-test + 53/175 Test #61: metacall-node-python-exception-test .............. Passed 0.97 sec + Start 77: metacall-configuration-exec-path-test + 54/175 Test #29: metacall-load-memory-empty-test .................. Passed 2.70 sec + Start 78: metacall-configuration-default-test + 55/175 Test #78: metacall-configuration-default-test .............. Passed 0.02 sec + Start 79: metacall-clear-test + 56/175 Test #71: metacall-cast-test ............................... Passed 0.58 sec + Start 80: metacall-python-test + 57/175 Test #73: metacall-ducktype-test ........................... Passed 0.54 sec + Start 81: metacall-python-object-class-test + 58/175 Test #72: metacall-init-fini-test .......................... Passed 0.74 sec + Start 82: metacall-python-gc-test + 59/175 Test #77: metacall-configuration-exec-path-test ............ Passed 0.56 sec + Start 83: metacall-python-open-test + 60/175 Test #76: metacall-depends-test ............................ Passed 0.65 sec + Start 84: metacall-python-dict-test + 61/175 Test #53: metacall-node-python-ruby-test ................... Passed 2.00 sec + Start 85: metacall-python-pointer-test + 62/175 Test #66: metacall-node-python-deadlock-test ............... Passed 1.25 sec + Start 86: metacall-python-reentrant-test + 63/175 Test #81: metacall-python-object-class-test ................ Passed 0.65 sec + Start 87: metacall-python-varargs-test + 64/175 Test #79: metacall-clear-test .............................. Passed 0.98 sec + Start 88: py-loader-port-test + 65/175 Test #82: metacall-python-gc-test .......................... Passed 0.76 sec + Start 89: metacall-python-port-https-test + 66/175 Test #85: metacall-python-pointer-test ..................... Passed 0.57 sec + Start 90: metacall-python-port-callback-test + 67/175 Test #80: metacall-python-test ............................. Passed 1.01 sec + Start 91: metacall-python-port-pointer-test + 68/175 Test #84: metacall-python-dict-test ........................ Passed 0.68 sec + Start 92: metacall-python-port-import-test + 69/175 Test #86: metacall-python-reentrant-test ................... Passed 1.09 sec + Start 93: metacall-python-callback-test + 70/175 Test #87: metacall-python-varargs-test ..................... Passed 0.86 sec + Start 94: metacall-python-fail-test + 71/175 Test #90: metacall-python-port-callback-test ............... Passed 0.80 sec + Start 95: metacall-python-relative-path-test + 72/175 Test #88: py-loader-port-test .............................. Passed 0.91 sec + Start 96: metacall-python-without-functions-test + 73/175 Test #91: metacall-python-port-pointer-test ................ Passed 0.97 sec + Start 97: metacall-python-builtins-test + 74/175 Test #46: metacall-node-async-multiple-test ................ Passed 4.26 sec + Start 98: metacall-python-async-test + 75/175 Test #94: metacall-python-fail-test ........................ Passed 0.67 sec + Start 99: metacall-python-exception-test + 76/175 Test #89: metacall-python-port-https-test .................. Passed 1.28 sec + Start 100: metacall-python-without-env-vars-test + 77/175 Test #95: metacall-python-relative-path-test ............... Passed 0.64 sec + Start 101: metacall-map-test + 78/175 Test #96: metacall-python-without-functions-test ........... Passed 0.65 sec + Start 102: metacall-map-await-test + 79/175 Test #2: node_port ........................................ Passed 5.42 sec + Start 103: metacall-initialize-test + 80/175 Test #103: metacall-initialize-test ......................... Passed 0.05 sec + Start 104: metacall-initialize-ex-test + 81/175 Test #104: metacall-initialize-ex-test ...................... Passed 0.01 sec + Start 105: metacall-reinitialize-test + 82/175 Test #3: node_port_test_executable ........................ Passed 5.50 sec + Start 106: metacall-initialize-destroy-multiple-test + 83/175 Test #106: metacall-initialize-destroy-multiple-test ........ Passed 0.02 sec + Start 107: metacall-initialize-destroy-multiple-node-test + 84/175 Test #97: metacall-python-builtins-test .................... Passed 0.74 sec + Start 108: metacall-reload-functions-test + 85/175 Test #93: metacall-python-callback-test .................... Passed 1.21 sec + Start 109: metacall-invalid-loader-test + 86/175 Test #109: metacall-invalid-loader-test ..................... Passed 0.02 sec + Start 110: metacall-fork-test + 87/175 Test #98: metacall-python-async-test ....................... Passed 0.63 sec + 88/175 Test #105: metacall-reinitialize-test ....................... Passed 0.14 sec + Start 111: metacall-return-monad-test + Start 112: metacall-callback-complex-test + 89/175 Test #58: metacall-node-typescript-test .................... Passed 4.07 sec + Start 113: metacall-ruby-fail-test + 90/175 Test #110: metacall-fork-test ............................... Passed 0.06 sec + Start 114: metacall-ruby-fail-empty-test + 91/175 Test #99: metacall-python-exception-test ................... Passed 0.62 sec + Start 115: metacall-ruby-object-class-test + 92/175 Test #113: metacall-ruby-fail-test .......................... Passed 0.06 sec + Start 116: metacall-ruby-parser-integration-test + 93/175 Test #115: metacall-ruby-object-class-test .................. Passed 0.04 sec + Start 117: metacall-function-test + 94/175 Test #116: metacall-ruby-parser-integration-test ............ Passed 0.04 sec + Start 118: metacall-cobol-test + 95/175 Test #114: metacall-ruby-fail-empty-test .................... Passed 0.08 sec + Start 119: metacall-file-test + 96/175 Test #119: metacall-file-test ............................... Passed 0.02 sec + Start 120: metacall-file-fail-test + 97/175 Test #118: metacall-cobol-test .............................. Passed 0.04 sec + Start 121: metacall-file-glob-test + 98/175 Test #120: metacall-file-fail-test .......................... Passed 0.01 sec + Start 122: metacall-typescript-test + 99/175 Test #100: metacall-python-without-env-vars-test ............ Passed 0.70 sec + Start 123: metacall-typescript-node-test +100/175 Test #121: metacall-file-glob-test .......................... Passed 0.03 sec + Start 124: metacall-typescript-call-map-test +101/175 Test #102: metacall-map-await-test .......................... Passed 0.55 sec + Start 125: metacall-typescript-tsx-test +102/175 Test #107: metacall-initialize-destroy-multiple-node-test ... Passed 0.41 sec + Start 126: metacall-typescript-tsx-loop-fail-test +103/175 Test #41: metacall-node-event-loop-test .................... Passed 5.86 sec + Start 127: metacall-typescript-require-test +104/175 Test #111: metacall-return-monad-test ....................... Passed 0.49 sec + Start 128: metacall-typescript-jsx-default-test +105/175 Test #92: metacall-python-port-import-test ................. Passed 2.49 sec + Start 129: metacall-rpc-test +106/175 Test #101: metacall-map-test ................................ Passed 1.51 sec + Start 130: metacall-csharp-static-class-test +107/175 Test #117: metacall-function-test ........................... Passed 1.21 sec + Start 131: metacall-ruby-test +108/175 Test #131: metacall-ruby-test ............................... Passed 0.12 sec + Start 132: metacall-cs-test +109/175 Test #108: metacall-reload-functions-test ................... Passed 1.82 sec + Start 133: metacall-java-test +110/175 Test #39: metacall-test .................................... Passed 7.34 sec + Start 134: metacall-wasm-test +111/175 Test #129: metacall-rpc-test ................................ Passed 1.13 sec + Start 135: metacall-wasm-python-port-test +112/175 Test #134: metacall-wasm-test ............................... Passed 0.10 sec + Start 136: metacall-c-test +113/175 Test #136: metacall-c-test .................................. Passed 0.15 sec + Start 137: metacall-c-lib-test +114/175 Test #112: metacall-callback-complex-test ................... Passed 2.28 sec + Start 138: metacall-version-test +115/175 Test #137: metacall-c-lib-test .............................. Passed 0.19 sec + Start 139: metacall-dynlink-path-test +116/175 Test #138: metacall-version-test ............................ Passed 0.01 sec + Start 140: metacall-library-path-without-env-vars-test +117/175 Test #139: metacall-dynlink-path-test ....................... Passed 0.01 sec + Start 141: metacall-ext-test +118/175 Test #140: metacall-library-path-without-env-vars-test ...... Passed 0.02 sec + Start 142: metacall-plugin-extension-test +119/175 Test #141: metacall-ext-test ................................ Passed 0.02 sec + Start 143: metacall-plugin-extension-local-test +120/175 Test #70: metacall-distributable-test ...................... Passed 6.31 sec + Start 144: metacall-backtrace-plugin-test +121/175 Test #135: metacall-wasm-python-port-test ................... Passed 1.07 sec + Start 145: metacall-sandbox-plugin-test +122/175 Test #59: metacall-node-python-async-after-destroy-test .... Passed 7.03 sec + Start 146: log-bench +123/175 Test #75: metacall-integration-test ........................ Passed 6.16 sec + Start 147: metacall-py-c-api-bench +124/175 Test #6: rs_port .......................................... Passed 9.00 sec + Start 148: metacall-py-call-bench +125/175 Test #144: metacall-backtrace-plugin-test ................... Passed 0.45 sec + Start 149: metacall-py-init-bench +126/175 Test #74: metacall-inspect-test ............................ Passed 6.67 sec + Start 150: metacall-node-call-bench +127/175 Test #143: metacall-plugin-extension-local-test ............. Passed 1.52 sec + Start 151: metacall-rb-call-bench +128/175 Test #126: metacall-typescript-tsx-loop-fail-test ........... Passed 3.83 sec + Start 152: metacall-cs-call-bench +129/175 Test #149: metacall-py-init-bench ........................... Passed 0.77 sec + Start 153: metacallcli +130/175 Test #83: metacall-python-open-test ........................ Passed 6.71 sec + Start 154: metacallcli-inspect-leak +131/175 Test #142: metacall-plugin-extension-test ................... Passed 1.99 sec + Start 155: metacallcli-node +132/175 Test #123: metacall-typescript-node-test .................... Passed 4.72 sec + Start 156: metacallcli-node-port-py +133/175 Test #145: metacall-sandbox-plugin-test ..................... Passed 2.02 sec + Start 157: metacallcli-node-port-py-rb +134/175 Test #48: metacall-node-port-test .......................... Passed 9.87 sec + Start 158: metacallcli-node-null +135/175 Test #154: metacallcli-inspect-leak ......................... Passed 0.89 sec + Start 159: metacallcli-node-null-empty +136/175 Test #153: metacallcli ...................................... Passed 1.16 sec + Start 160: metacallcli-node-null-undefined +137/175 Test #133: metacall-java-test ............................... Passed 3.56 sec + Start 161: metacallcli-py-port +138/175 Test #155: metacallcli-node ................................. Passed 1.07 sec + Start 162: metacallcli-py-port-rb +139/175 Test #122: metacall-typescript-test ......................... Passed 5.36 sec + Start 163: metacallcli-file +140/175 Test #159: metacallcli-node-null-empty ...................... Passed 0.69 sec + Start 164: metacallcli-file-fail +141/175 Test #124: metacall-typescript-call-map-test ................ Passed 5.78 sec + Start 165: metacallcli-py-naming +142/175 Test #160: metacallcli-node-null-undefined .................. Passed 0.72 sec + Start 166: metacallcli-py-argv +143/175 Test #130: metacall-csharp-static-class-test ................ Passed 5.12 sec + Start 167: metacallcli-py-main +144/175 Test #128: metacall-typescript-jsx-default-test ............. Passed 5.90 sec + Start 168: metacallcli-py-exception +145/175 Test #163: metacallcli-file ................................. Passed 0.92 sec + Start 169: metacallcli-ts +146/175 Test #158: metacallcli-node-null ............................ Passed 1.45 sec + Start 170: metacallcli-tsx-templating +147/175 Test #157: metacallcli-node-port-py-rb ...................... Passed 1.58 sec + Start 171: metacallcli-tsx-loop-fail +148/175 Test #156: metacallcli-node-port-py ......................... Passed 1.70 sec + Start 172: metacallcli-py-tsx +149/175 Test #164: metacallcli-file-fail ............................ Passed 0.84 sec + Start 173: cli_repl_plugin +150/175 Test #162: metacallcli-py-port-rb ........................... Passed 1.43 sec + Start 174: cli_cmd_plugin +151/175 Test #161: metacallcli-py-port .............................. Passed 1.59 sec + Start 175: metacalllog +152/175 Test #175: metacalllog ...................................... Passed 0.03 sec +153/175 Test #173: cli_repl_plugin .................................. Passed 0.69 sec +154/175 Test #174: cli_cmd_plugin ................................... Passed 0.66 sec +155/175 Test #165: metacallcli-py-naming ............................ Passed 1.70 sec +156/175 Test #166: metacallcli-py-argv .............................. Passed 1.79 sec +157/175 Test #132: metacall-cs-test ................................. Passed 6.45 sec +158/175 Test #168: metacallcli-py-exception ......................... Passed 1.97 sec +159/175 Test #167: metacallcli-py-main .............................. Passed 2.32 sec +160/175 Test #127: metacall-typescript-require-test ................. Passed 8.48 sec +161/175 Test #125: metacall-typescript-tsx-test ..................... Passed 8.86 sec +162/175 Test #1: ts_loader_bootstrap .............................. Passed 15.33 sec +163/175 Test #171: metacallcli-tsx-loop-fail ........................ Passed 4.17 sec +164/175 Test #169: metacallcli-ts ................................... Passed 4.44 sec +165/175 Test #146: log-bench ........................................ Passed 8.61 sec +166/175 Test #172: metacallcli-py-tsx ............................... Passed 6.45 sec +167/175 Test #170: metacallcli-tsx-templating ....................... Passed 6.94 sec +168/175 Test #5: go_port .......................................... Passed 20.72 sec +169/175 Test #147: metacall-py-c-api-bench .......................... Passed 14.79 sec +170/175 Test #69: metacall-node-multithread-deadlock-test .......... Passed 22.96 sec +171/175 Test #152: metacall-cs-call-bench ........................... Passed 25.50 sec +172/175 Test #151: metacall-rb-call-bench ........................... Passed 33.41 sec +173/175 Test #148: metacall-py-call-bench ........................... Passed 34.83 sec +174/175 Test #63: metacall-node-async-resources-test ............... Passed 63.56 sec +175/175 Test #150: metacall-node-call-bench ......................... Passed 90.04 sec + +100% tests passed, 0 tests failed out of 175 + +Label Time Summary: +/usr/local/metacall/build/scripts/typedfunc = 28.42 sec*proc (5 tests) +MEMCHECK_IGNORE = 35.41 sec*proc (7 tests) +WORKING_DIRECTORY = 28.42 sec*proc (5 tests) +adt-map-test = 0.03 sec*proc (1 test) +adt-set-test = 0.03 sec*proc (1 test) +adt-trie-test = 0.03 sec*proc (1 test) +adt-vector-test = 0.03 sec*proc (1 test) +configuration-test = 0.07 sec*proc (1 test) +detour-test = 0.08 sec*proc (1 test) +dynlink-test = 0.02 sec*proc (1 test) +environment-test = 0.03 sec*proc (1 test) +go_port = 20.72 sec*proc (1 test) +log-bench = 8.61 sec*proc (1 test) +log-custom-test = 0.03 sec*proc (1 test) +log-test = 0.03 sec*proc (1 test) +metacall-backtrace-plugin-test = 0.45 sec*proc (1 test) +metacall-c-lib-test = 0.19 sec*proc (1 test) +metacall-c-test = 0.15 sec*proc (1 test) +metacall-callback-complex-test = 2.28 sec*proc (1 test) +metacall-cast-test = 0.58 sec*proc (1 test) +metacall-clear-test = 0.98 sec*proc (1 test) +metacall-cobol-test = 0.04 sec*proc (1 test) +metacall-configuration-default-test = 0.02 sec*proc (1 test) +metacall-configuration-exec-path-test = 0.56 sec*proc (1 test) +metacall-cs-call-bench = 25.50 sec*proc (1 test) +metacall-cs-test = 6.45 sec*proc (1 test) +metacall-csharp-static-class-test = 5.12 sec*proc (1 test) +metacall-depends-test = 0.65 sec*proc (1 test) +metacall-distributable-test = 6.31 sec*proc (1 test) +metacall-ducktype-test = 0.54 sec*proc (1 test) +metacall-duplicated-handle-test = 1.56 sec*proc (1 test) +metacall-duplicated-symbols-test = 1.06 sec*proc (1 test) +metacall-dynlink-path-test = 0.01 sec*proc (1 test) +metacall-ext-test = 0.02 sec*proc (1 test) +metacall-file-fail-test = 0.01 sec*proc (1 test) +metacall-file-glob-test = 0.03 sec*proc (1 test) +metacall-file-test = 0.02 sec*proc (1 test) +metacall-fork-test = 0.06 sec*proc (1 test) +metacall-function-test = 1.21 sec*proc (1 test) +metacall-handle-export-test = 1.40 sec*proc (1 test) +metacall-handle-get-test = 1.52 sec*proc (1 test) +metacall-init-fini-test = 0.74 sec*proc (1 test) +metacall-initialize-destroy-multiple-node-test = 0.41 sec*proc (1 test) +metacall-initialize-destroy-multiple-test = 0.02 sec*proc (1 test) +metacall-initialize-ex-test = 0.01 sec*proc (1 test) +metacall-initialize-test = 0.05 sec*proc (1 test) +metacall-inspect-test = 6.67 sec*proc (1 test) +metacall-integration-test = 6.16 sec*proc (1 test) +metacall-invalid-loader-test = 0.02 sec*proc (1 test) +metacall-java-test = 3.56 sec*proc (1 test) +metacall-library-path-without-env-vars-test = 0.02 sec*proc (1 test) +metacall-load-configuration-fail-test = 0.66 sec*proc (1 test) +metacall-load-configuration-node-python-test = 1.52 sec*proc (1 test) +metacall-load-configuration-python-node-test = 1.37 sec*proc (1 test) +metacall-load-configuration-relative-test = 0.46 sec*proc (1 test) +metacall-load-configuration-test = 1.51 sec*proc (1 test) +metacall-load-memory-empty-test = 2.70 sec*proc (1 test) +metacall-load-memory-test = 0.72 sec*proc (1 test) +metacall-logs-test = 0.33 sec*proc (1 test) +metacall-map-await-test = 0.55 sec*proc (1 test) +metacall-map-test = 1.51 sec*proc (1 test) +metacall-node-async-multiple-test = 4.26 sec*proc (1 test) +metacall-node-async-resources-test = 63.56 sec*proc (1 test) +metacall-node-async-test = 0.69 sec*proc (1 test) +metacall-node-await-chain-test = 0.51 sec*proc (1 test) +metacall-node-call-bench = 90.04 sec*proc (1 test) +metacall-node-call-test = 1.36 sec*proc (1 test) +metacall-node-callback-test = 0.89 sec*proc (1 test) +metacall-node-clear-mem-test = 0.42 sec*proc (1 test) +metacall-node-event-loop-signal-test = 0.62 sec*proc (1 test) +metacall-node-event-loop-test = 5.86 sec*proc (1 test) +metacall-node-exception-test = 0.51 sec*proc (1 test) +metacall-node-extension-test = 0.40 sec*proc (1 test) +metacall-node-fail-env-var-test = 0.35 sec*proc (1 test) +metacall-node-fail-load-leak-test = 0.55 sec*proc (1 test) +metacall-node-fail-test = 0.60 sec*proc (1 test) +metacall-node-inline-test = 0.87 sec*proc (1 test) +metacall-node-multithread-deadlock-test = 22.96 sec*proc (1 test) +metacall-node-native-code-test = 0.52 sec*proc (1 test) +metacall-node-port-await-test = 0.86 sec*proc (1 test) +metacall-node-port-c-lib-test = 0.85 sec*proc (1 test) +metacall-node-port-test = 9.87 sec*proc (1 test) +metacall-node-python-async-after-destroy-test = 7.03 sec*proc (1 test) +metacall-node-python-await-test = 0.92 sec*proc (1 test) +metacall-node-python-deadlock-test = 1.25 sec*proc (1 test) +metacall-node-python-exception-test = 0.97 sec*proc (1 test) +metacall-node-python-port-mock-test = 1.13 sec*proc (1 test) +metacall-node-python-port-ruby-test = 1.04 sec*proc (1 test) +metacall-node-python-ruby-test = 2.00 sec*proc (1 test) +metacall-node-reentrant-test = 0.66 sec*proc (1 test) +metacall-node-test = 0.77 sec*proc (1 test) +metacall-node-typescript-test = 4.07 sec*proc (1 test) +metacall-plugin-extension-local-test = 1.52 sec*proc (1 test) +metacall-plugin-extension-test = 1.99 sec*proc (1 test) +metacall-py-c-api-bench = 14.79 sec*proc (1 test) +metacall-py-call-bench = 34.83 sec*proc (1 test) +metacall-py-init-bench = 0.77 sec*proc (1 test) +metacall-python-builtins-test = 0.74 sec*proc (1 test) +metacall-python-callback-test = 1.21 sec*proc (1 test) +metacall-python-dict-test = 0.68 sec*proc (1 test) +metacall-python-exception-test = 0.62 sec*proc (1 test) +metacall-python-fail-test = 0.67 sec*proc (1 test) +metacall-python-gc-test = 0.76 sec*proc (1 test) +metacall-python-object-class-test = 0.65 sec*proc (1 test) +metacall-python-open-test = 6.71 sec*proc (1 test) +metacall-python-pointer-test = 0.57 sec*proc (1 test) +metacall-python-port-callback-test = 0.80 sec*proc (1 test) +metacall-python-port-https-test = 1.28 sec*proc (1 test) +metacall-python-port-import-test = 2.49 sec*proc (1 test) +metacall-python-port-pointer-test = 0.97 sec*proc (1 test) +metacall-python-reentrant-test = 1.09 sec*proc (1 test) +metacall-python-relative-path-test = 0.64 sec*proc (1 test) +metacall-python-test = 1.01 sec*proc (1 test) +metacall-python-varargs-test = 0.86 sec*proc (1 test) +metacall-python-without-env-vars-test = 0.70 sec*proc (1 test) +metacall-python-without-functions-test = 0.65 sec*proc (1 test) +metacall-rb-call-bench = 33.41 sec*proc (1 test) +metacall-reinitialize-test = 0.14 sec*proc (1 test) +metacall-reload-functions-test = 1.82 sec*proc (1 test) +metacall-return-monad-test = 0.49 sec*proc (1 test) +metacall-rpc-test = 1.13 sec*proc (1 test) +metacall-ruby-fail-empty-test = 0.08 sec*proc (1 test) +metacall-ruby-fail-test = 0.06 sec*proc (1 test) +metacall-ruby-object-class-test = 0.04 sec*proc (1 test) +metacall-ruby-parser-integration-test = 0.04 sec*proc (1 test) +metacall-ruby-test = 0.12 sec*proc (1 test) +metacall-sandbox-plugin-test = 2.02 sec*proc (1 test) +metacall-test = 7.34 sec*proc (1 test) +metacall-typescript-call-map-test = 5.78 sec*proc (1 test) +metacall-typescript-jsx-default-test = 5.90 sec*proc (1 test) +metacall-typescript-node-test = 4.72 sec*proc (1 test) +metacall-typescript-require-test = 8.48 sec*proc (1 test) +metacall-typescript-test = 5.36 sec*proc (1 test) +metacall-typescript-tsx-loop-fail-test = 3.83 sec*proc (1 test) +metacall-typescript-tsx-test = 8.86 sec*proc (1 test) +metacall-version-test = 0.01 sec*proc (1 test) +metacall-wasm-python-port-test = 1.07 sec*proc (1 test) +metacall-wasm-test = 0.10 sec*proc (1 test) +metacallcli = 1.16 sec*proc (1 test) +metacallcli-file = 0.92 sec*proc (1 test) +metacallcli-file-fail = 0.84 sec*proc (1 test) +metacallcli-inspect-leak = 0.89 sec*proc (1 test) +metacallcli-node = 1.07 sec*proc (1 test) +metacallcli-node-null = 1.45 sec*proc (1 test) +metacallcli-node-null-empty = 0.69 sec*proc (1 test) +metacallcli-node-null-undefined = 0.72 sec*proc (1 test) +metacallcli-node-port-py = 1.70 sec*proc (1 test) +metacallcli-node-port-py-rb = 1.58 sec*proc (1 test) +metacallcli-py-argv = 1.79 sec*proc (1 test) +metacallcli-py-exception = 1.97 sec*proc (1 test) +metacallcli-py-main = 2.32 sec*proc (1 test) +metacallcli-py-naming = 1.70 sec*proc (1 test) +metacallcli-py-port = 1.59 sec*proc (1 test) +metacallcli-py-port-rb = 1.43 sec*proc (1 test) +metacallcli-py-tsx = 6.45 sec*proc (1 test) +metacallcli-ts = 4.44 sec*proc (1 test) +metacallcli-tsx-loop-fail = 4.17 sec*proc (1 test) +metacallcli-tsx-templating = 6.94 sec*proc (1 test) +metacalllog = 0.03 sec*proc (1 test) +node_port_test = 5.42 sec*proc (1 test) +node_port_test_executable = 5.50 sec*proc (1 test) +portability-path-test = 0.06 sec*proc (1 test) +preprocessor-test = 0.04 sec*proc (1 test) +py-loader-port-test = 0.91 sec*proc (1 test) +py_port_test = 1.72 sec*proc (1 test) +rb-loader-parser-test = 0.06 sec*proc (1 test) +rb_port_test = 0.90 sec*proc (1 test) +reflect-function-test = 0.02 sec*proc (1 test) +reflect-metadata-test = 0.02 sec*proc (1 test) +reflect-object-class-test = 0.02 sec*proc (1 test) +reflect-scope-test = 0.02 sec*proc (1 test) +reflect-value-cast-test = 0.02 sec*proc (1 test) +rs_port = 9.00 sec*proc (1 test) +serial-test = 0.07 sec*proc (1 test) +ts_loader_bootstrap = 15.33 sec*proc (1 test) + +Total Test time (real) = 99.30 sec ++ [ 0 = 1 ] ++ [ 1 = 1 ] ++ [ = ] ++ make install +[ 0%] Built target version +[ 0%] Built target preprocessor +[ 1%] Built target environment +[ 1%] Built target format +[ 1%] Built target threading +[ 2%] Built target portability +[ 6%] Built target log +[ 6%] Built target memory +[ 7%] Built target adt +[ 8%] Built target filesystem +[ 9%] Built target dynlink +[ 10%] Built target plugin +[ 10%] Built target detour +[ 13%] Built target reflect +[ 13%] Built target serial +[ 14%] Built target configuration +[ 14%] Built target loader +[ 29%] Built target metacall +[ 30%] Built target libtcc-depends +[ 30%] Built target c_loader +[ 30%] Built target cob_loader + Determining projects to restore... + All projects are up-to-date for restore. +MSBuild version 17.7.6+77d58ec69 for .NET + Determining projects to restore... + All projects are up-to-date for restore. + project -> /usr/local/metacall/source/loaders/cs_loader/netcore/source/bin/Debug/net7.0/CSLoader.dll + project -> /usr/local/metacall/build/ +[ 30%] Built target cs_loader_impl +[ 31%] Built target cs_loader +[ 32%] Built target ext_loader +[ 32%] Built target file_loader +Note: /usr/local/metacall/source/loaders/java_loader/bootstrap/lib/bootstrap.java uses or overrides a deprecated API. +Note: Recompile with -Xlint:deprecation for details. +[ 32%] Built target java_loader_bootstrap +[ 33%] Built target java_loader +[ 33%] Built target mock_loader +Installing node_loader_bootstrap dependencies + +up to date, audited 5 packages in 437ms + +1 package is looking for funding + run `npm fund` for details + +found 0 vulnerabilities +[ 33%] Built target node_loader_bootstrap_depends +Copying node_loader_bootstrap dependencies +node_loader_bootstrap dependencies copied from /usr/local/metacall/source/loaders/node_loader/bootstrap/node_modules to /usr/local/metacall/build/node_modules +[ 33%] Built target node_loader_bootstrap_copy_depends +[ 33%] Built target node_loader_bootstrap +[ 34%] Built target node_loader +[ 35%] Built target py_loader +[ 35%] Built target rb_loader +[ 36%] Built target rpc_loader +Installing ts_loader_bootstrap dependencies + +up to date, audited 3 packages in 1s + +found 0 vulnerabilities +[ 36%] Built target ts_loader_bootstrap_depends + +> ts_loader_bootstrap@1.1.0 build +> tsc + +[ 36%] Built target ts_loader_bootstrap_build +Copying ts_loader_bootstrap dependencies +ts_loader_bootstrap dependencies copied from /usr/local/metacall/source/loaders/ts_loader/bootstrap/node_modules to /usr/local/metacall/build/node_modules +[ 36%] Built target ts_loader_bootstrap +[ 37%] Built target ts_loader +[ 38%] Built target wasm_loader +[ 39%] Built target metacall_serial +[ 39%] Built target rapid_json_serial +[ 39%] Built target plthook_detour +[ 39%] Built target plugin_extension +[ 39%] Built target backtrace_plugin_config +[ 39%] Built target backtrace_plugin +[ 39%] Built target backward_object +[ 40%] Built target backward +[ 40%] Built target sandbox_plugin_config +[ 40%] Built target sandbox_plugin +Installing node_port + +up to date, audited 81 packages in 722ms + +20 packages are looking for funding + run `npm fund` for details + +3 moderate severity vulnerabilities + +To address all issues (including breaking changes), run: + npm audit fix --force + +Run `npm audit` for details. +[ 40%] Built target node_port +Failed to run rustfmt: No such file or directory (os error 2) (non-fatal, continuing) +[ 40%] Built target rs_port_bindings + Compiling metacall v0.4.2 (/usr/local/metacall/source/ports/rs_port) + Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.31s +[ 40%] Built target rs_port +[ 41%] Built target rb_port_swig_compilation +[ 41%] Built target rb_port +[ 41%] Built target c-compiled +[ 41%] Built target c-ffi +[ 41%] Built target c-cbks +[ 41%] Built target c-loadtest +[ 42%] Built target loadtest +[ 42%] Built target cobol-say +[ 42%] Built target csharp-hello +[ 42%] Built target csharp-static +[ 42%] Built target csharp-function +[ 43%] Built target sum_extension +[ 43%] Built target file-static +[ 43%] Built target file-favicon +[ 43%] Built target file-glob +[ 43%] Built target java-fibonnaci +[ 43%] Built target java-jartest +[ 43%] Built target java-test +[ 43%] Built target nodejs-nod +[ 43%] Built target nodejs-inline +[ 43%] Built target nodejs-export +[ 43%] Built target nodejs-host +[ 43%] Built target nodejs-server +[ 43%] Built target nodejs-factcallback +[ 43%] Built target nodejs-derpyramda + +up to date, audited 49 packages in 608ms + +1 moderate severity vulnerability + +To address all issues, run: + npm audit fix + +Run `npm audit` for details. +[ 43%] Built target nodejs-gram-depends +[ 43%] Built target nodejs-gram +[ 43%] Built target nodejs-duplicated + +up to date, audited 2 packages in 434ms + +found 0 vulnerabilities +[ 43%] Built target nodejs-ramda-depends +[ 43%] Built target nodejs-ramda +[ 43%] Built target python-example +[ 43%] Built target python-helloworld +[ 43%] Built target python-initfini +[ 43%] Built target python-callback +[ 43%] Built target python-function +[ 43%] Built target python-ducktype +[ 43%] Built target python-rsasample +[ 43%] Built target python-garbage +[ 43%] Built target python-classname +[ 43%] Built target python-web +[ 43%] Built target python-landing +[ 43%] Built target python-model +[ 43%] Built target python-pointer +[ 43%] Built target python-dicty +[ 43%] Built target python-host +[ 43%] Built target python-s1 +[ 43%] Built target python-s2 +[ 43%] Built target python-withoutfunctions +[ 43%] Built target python-wasm +[ 43%] Built target python-badimport +[ 43%] Built target python-watzon +[ 43%] Built target python-fnmesh +[ 43%] Built target ruby-hello +[ 43%] Built target ruby-second +[ 43%] Built target ruby-blog +[ 43%] Built target ruby-cache +[ 43%] Built target ruby-ducktype +[ 43%] Built target ruby-invalid +[ 43%] Built target ruby-klass +[ 43%] Built target ruby-failempty +[ 43%] Built target rpc-remote +[ 43%] Built target typescript-typedfunc + +up to date, audited 7 packages in 477ms + +found 0 vulnerabilities +[ 43%] Built target typescript-templating-depends +[ 43%] Built target typescript-templating +[ 43%] Built target typescript-loopfail +[ 43%] Built target typescript-badrequire +[ 43%] Built target typescript-server +[ 43%] Built target wasm-tests +[ 44%] Built target google-test-depends +[ 44%] Built target preprocessor-test +[ 44%] Built target environment-test +[ 45%] Built target log-test +[ 45%] Built target log-custom-test +[ 45%] Built target adt-set-test +[ 46%] Built target adt-trie-test +[ 46%] Built target adt-vector-test +[ 46%] Built target adt-map-test +[ 47%] Built target reflect-value-cast-test +[ 47%] Built target reflect-function-test +[ 48%] Built target reflect-object-class-test +[ 48%] Built target reflect-scope-test +[ 48%] Built target reflect-metadata-test +[ 48%] Built target dynlink-test +[ 48%] Built target detour-test +[ 48%] Built target serial-test +[ 48%] Built target configuration-test +[ 49%] Built target rb-loader-parser-test +[ 50%] Built target portability-path-test +[ 51%] Built target metacall-logs-test +[ 51%] Built target metacall-load-memory-test +[ 51%] Built target metacall-load-memory-empty-test +[ 52%] Built target metacall-load-configuration-test +[ 52%] Built target metacall-load-configuration-fail-test +[ 52%] Built target metacall-load-configuration-relative-test +[ 53%] Built target metacall-load-configuration-python-node-test +[ 53%] Built target metacall-load-configuration-node-python-test +[ 53%] Built target metacall-duplicated-handle-test +[ 53%] Built target metacall-duplicated-symbols-test +[ 53%] Built target metacall-handle-export-test +[ 54%] Built target metacall-handle-get-test +[ 55%] Built target metacall-test +[ 56%] Built target metacall-node-test +[ 56%] Built target metacall-node-event-loop-test +[ 57%] Built target metacall-node-event-loop-signal-test +[ 58%] Built target metacall-node-call-test +[ 58%] Built target metacall-node-inline-test +[ 59%] Built target metacall-node-async-test +[ 60%] Built target metacall-node-async-multiple-test +[ 60%] Built target metacall-node-reentrant-test +[ 60%] Built target metacall-node-port-test +[ 61%] Built target metacall-node-port-await-test +[ 61%] Built target metacall-node-port-c-lib-test +[ 61%] Built target metacall-node-python-port-mock-test +[ 62%] Built target metacall-node-python-port-ruby-test +[ 62%] Built target metacall-node-python-ruby-test +[ 62%] Built target metacall-node-callback-test +[ 62%] Built target metacall-node-fail-test +[ 62%] Built target metacall-node-fail-env-var-test +[ 63%] Built target metacall-node-fail-load-leak-test +[ 63%] Built target metacall-node-typescript-test +[ 64%] Built target metacall-node-python-async-after-destroy-test +[ 64%] Built target metacall-node-python-await-test +[ 65%] Built target metacall-node-python-exception-test +[ 65%] Built target metacall-node-clear-mem-test +[ 65%] Built target metacall-node-async-resources-test +[ 65%] Built target metacall-node-await-chain-test +[ 66%] Built target metacall-node-exception-test +[ 66%] Built target metacall-node-python-deadlock-test +[ 66%] Built target metacall-node-native-code-test +[ 66%] Built target node_extension_test +[ 66%] Built target metacall-node-extension-test +[ 67%] Built target metacall-node-multithread-deadlock-test +[ 67%] Built target metacall-distributable-test +[ 68%] Built target metacall-cast-test +[ 68%] Built target metacall-init-fini-test +[ 69%] Built target metacall-ducktype-test +[ 69%] Built target metacall-inspect-test +[ 70%] Built target metacall-integration-test +[ 71%] Built target metacall-depends-test +[ 71%] Built target metacall-configuration-exec-path-test +[ 71%] Built target metacall-configuration-default-test +[ 71%] Built target metacall-clear-test +[ 71%] Built target metacall-python-test +[ 72%] Built target metacall-python-object-class-test +[ 72%] Built target metacall-python-gc-test + +up to date, audited 16 packages in 514ms + +1 package is looking for funding + run `npm fund` for details + +found 0 vulnerabilities +[ 72%] Built target metacall-python-open-test-depends +[ 72%] Built target metacall-python-open-test +[ 72%] Built target metacall-python-dict-test +[ 72%] Built target metacall-python-pointer-test +[ 72%] Built target metacall-python-reentrant-test +[ 72%] Built target metacall-python-varargs-test +[ 73%] Built target py-loader-port-test +[ 73%] Built target metacall-python-port-https-test +[ 74%] Built target metacall-python-port-callback-test +[ 74%] Built target metacall-python-port-pointer-test +[ 75%] Built target metacall-python-port-import-test +[ 76%] Built target metacall-python-callback-test +[ 76%] Built target metacall-python-fail-test +[ 77%] Built target metacall-python-relative-path-test +[ 77%] Built target metacall-python-without-functions-test +[ 77%] Built target metacall-python-builtins-test +[ 77%] Built target metacall-python-async-test +[ 78%] Built target metacall-python-exception-test +[ 79%] Built target metacall-python-without-env-vars-test +[ 79%] Built target metacall-map-test +[ 79%] Built target metacall-map-await-test +[ 80%] Built target metacall-initialize-test +[ 80%] Built target metacall-initialize-ex-test +[ 81%] Built target metacall-reinitialize-test +[ 81%] Built target metacall-initialize-destroy-multiple-test +[ 82%] Built target metacall-initialize-destroy-multiple-node-test +[ 82%] Built target metacall-reload-functions-test +[ 82%] Built target metacall-invalid-loader-test +[ 83%] Built target metacall-fork-test +[ 84%] Built target metacall-return-monad-test +[ 84%] Built target metacall-callback-complex-test +[ 85%] Built target metacall-ruby-fail-test +[ 85%] Built target metacall-ruby-fail-empty-test +[ 85%] Built target metacall-ruby-object-class-test +[ 85%] Built target metacall-ruby-parser-integration-test +[ 85%] Built target metacall-function-test +[ 86%] Built target metacall-cobol-test +[ 86%] Built target metacall-file-test +[ 86%] Built target metacall-file-fail-test +[ 87%] Built target metacall-file-glob-test +[ 88%] Built target metacall-typescript-test +[ 89%] Built target metacall-typescript-node-test +[ 89%] Built target metacall-typescript-call-map-test +[ 89%] Built target metacall-typescript-tsx-test +[ 89%] Built target metacall-typescript-tsx-loop-fail-test +[ 89%] Built target metacall-typescript-require-test +[ 89%] Built target metacall-typescript-jsx-default-test +[ 89%] Built target metacall-rpc-test +[ 89%] Built target metacall-csharp-static-class-test +[ 90%] Built target metacall-ruby-test +[ 90%] Built target metacall-cs-test +[ 90%] Built target metacall-java-test +[ 90%] Built target metacall-wasm-test +[ 90%] Built target metacall-wasm-python-port-test +[ 90%] Built target metacall-c-test +[ 91%] Built target metacall-c-lib-test +[ 92%] Built target metacall-version-test +[ 93%] Built target metacall-dynlink-path-test +[ 94%] Built target metacall-library-path-without-env-vars-test +[ 94%] Built target metacall-ext-test +[ 95%] Built target metacall-plugin-extension-test +[ 95%] Built target metacall-plugin-extension-local-test +[ 95%] Built target metacall-backtrace-plugin-test +[ 95%] Built target metacall-sandbox-plugin-test +[ 96%] Built target google-bench-depends +[ 96%] Built target log-bench +[ 96%] Built target metacall-py-c-api-bench +[ 96%] Built target metacall-py-call-bench +[ 97%] Built target metacall-py-init-bench +[ 97%] Built target metacall-node-call-bench +[ 97%] Built target metacall-rb-call-bench +[ 98%] Built target metacall-cs-call-bench +[ 98%] Built target cli_repl_plugin +[ 98%] Built target cli_core_plugin +[ 98%] Built target metacallcli-scripts-tests +[ 98%] Built target metacallcli +[ 98%] Built target cli_core_plugin_config +[ 98%] Built target cli_cmd_plugin +[ 99%] Built target cli_sandbox_plugin +[ 99%] Built target cli_sandbox_plugin_config +[100%] Built target metacalllog +Install the project... +-- Install configuration: "Debug" +-- Installing: /usr/local/share/metacall/configurations +-- Installing: /usr/local/share/metacall/configurations/cs_loader.json +-- Installing: /usr/local/share/metacall/configurations/node_loader.json +-- Installing: /usr/local/share/metacall/configurations/global.json +-- Installing: /usr/local/include/metacall +-- Installing: /usr/local/include/metacall/metacall_link.h +-- Installing: /usr/local/include/metacall/metacall_allocator.h +-- Installing: /usr/local/include/metacall/metacall.h +-- Installing: /usr/local/include/metacall/metacall_value.h +-- Installing: /usr/local/include/metacall/metacall_fork.h +-- Installing: /usr/local/include/metacall/metacall_log.h +-- Installing: /usr/local/include/metacall/metacall_error.h +-- Up-to-date: /usr/local/include/metacall +-- Installing: /usr/local/include/metacall/metacall_def.h +-- Installing: /usr/local/include/metacall/metacall_api.h +-- Installing: /usr/local/lib/libmetacalld.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libmetacalld.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/libtcc.so +-- Up-to-date: /usr/local/lib +-- Installing: /usr/local/lib/libtcc1.a +-- Installing: /usr/local/lib/runmain.o +-- Installing: /usr/local/lib/bcheck.o +-- Installing: /usr/local/lib/bt-log.o +-- Installing: /usr/local/lib/bt-exe.o +-- Up-to-date: /usr/local/include +-- Installing: /usr/local/include/stdatomic.h +-- Installing: /usr/local/include/tccdefs.h +-- Installing: /usr/local/include/stddef.h +-- Installing: /usr/local/include/varargs.h +-- Installing: /usr/local/include/tcclib.h +-- Installing: /usr/local/include/stdnoreturn.h +-- Installing: /usr/local/include/stdarg.h +-- Installing: /usr/local/include/stdbool.h +-- Installing: /usr/local/include/stdalign.h +-- Installing: /usr/local/include/tgmath.h +-- Installing: /usr/local/include/float.h +-- Installing: /usr/local/lib/libc_loaderd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libc_loaderd.so" to "/usr/local/lib:/usr/lib/llvm-14/lib" +-- Installing: /usr/local/lib/libcob_loaderd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libcob_loaderd.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/CSLoader.dll +-- Installing: /usr/local/lib/Microsoft.CodeAnalysis.dll +-- Installing: /usr/local/lib/Microsoft.CodeAnalysis.CSharp.dll +-- Installing: /usr/local/lib/libcs_loaderd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libcs_loaderd.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/libext_loaderd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libext_loaderd.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/libfile_loaderd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libfile_loaderd.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/bootstrap.class +-- Installing: /usr/local/lib/libjava_loaderd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libjava_loaderd.so" to "/usr/local/lib:/usr/lib/jvm/default-java/lib:/usr/lib/jvm/default-java/lib/server" +-- Installing: /usr/local/lib/libmock_loaderd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libmock_loaderd.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/node_modules/espree +-- Installing: /usr/local/lib/node_modules/espree/dist +-- Installing: /usr/local/lib/node_modules/espree/dist/espree.cjs +-- Installing: /usr/local/lib/node_modules/espree/espree.js +-- Installing: /usr/local/lib/node_modules/espree/package.json +-- Installing: /usr/local/lib/node_modules/espree/LICENSE +-- Installing: /usr/local/lib/node_modules/espree/lib +-- Installing: /usr/local/lib/node_modules/espree/lib/espree.js +-- Installing: /usr/local/lib/node_modules/espree/lib/options.js +-- Installing: /usr/local/lib/node_modules/espree/lib/version.js +-- Installing: /usr/local/lib/node_modules/espree/lib/token-translator.js +-- Installing: /usr/local/lib/node_modules/espree/lib/features.js +-- Installing: /usr/local/lib/node_modules/espree/README.md +-- Installing: /usr/local/lib/node_modules/acorn +-- Installing: /usr/local/lib/node_modules/acorn/dist +-- Installing: /usr/local/lib/node_modules/acorn/dist/acorn.mjs.d.ts +-- Installing: /usr/local/lib/node_modules/acorn/dist/acorn.d.ts +-- Installing: /usr/local/lib/node_modules/acorn/dist/acorn.mjs +-- Installing: /usr/local/lib/node_modules/acorn/dist/acorn.js +-- Installing: /usr/local/lib/node_modules/acorn/dist/bin.js +-- Installing: /usr/local/lib/node_modules/acorn/bin +-- Installing: /usr/local/lib/node_modules/acorn/bin/acorn +-- Installing: /usr/local/lib/node_modules/acorn/CHANGELOG.md +-- Installing: /usr/local/lib/node_modules/acorn/package.json +-- Installing: /usr/local/lib/node_modules/acorn/LICENSE +-- Installing: /usr/local/lib/node_modules/acorn/README.md +-- Installing: /usr/local/lib/node_modules/acorn-jsx +-- Installing: /usr/local/lib/node_modules/acorn-jsx/xhtml.js +-- Installing: /usr/local/lib/node_modules/acorn-jsx/index.js +-- Installing: /usr/local/lib/node_modules/acorn-jsx/package.json +-- Installing: /usr/local/lib/node_modules/acorn-jsx/index.d.ts +-- Installing: /usr/local/lib/node_modules/acorn-jsx/LICENSE +-- Installing: /usr/local/lib/node_modules/acorn-jsx/README.md +-- Installing: /usr/local/lib/node_modules/eslint-visitor-keys +-- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/dist +-- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs +-- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/dist/index.d.ts +-- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/dist/visitor-keys.d.ts +-- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/package.json +-- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/LICENSE +-- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/lib +-- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/lib/visitor-keys.js +-- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/lib/index.js +-- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/README.md +-- Installing: /usr/local/lib/bootstrap.js +-- Installing: /usr/local/lib/libnode_loaderd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libnode_loaderd.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/libpy_loaderd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libpy_loaderd.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/librb_loaderd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/librb_loaderd.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/librpc_loaderd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/librpc_loaderd.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/node_modules/typescript +-- Installing: /usr/local/lib/node_modules/typescript/CODE_OF_CONDUCT.md +-- Installing: /usr/local/lib/node_modules/typescript/LICENSE.txt +-- Installing: /usr/local/lib/node_modules/typescript/bin +-- Installing: /usr/local/lib/node_modules/typescript/bin/tsserver +-- Installing: /usr/local/lib/node_modules/typescript/bin/tsc +-- Installing: /usr/local/lib/node_modules/typescript/CopyrightNotice.txt +-- Installing: /usr/local/lib/node_modules/typescript/loc +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/TypeScriptLanguageService +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/Targets +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/Targets/TypeScriptCompile.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/Targets/ProjectItemsSchema.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/Targets/TypeScriptProjectProperties.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/TypeScriptTasks +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/TypeScriptTasks/TypeScript.Tasks.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/TypeScriptDebugEngine +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/TypeScriptLanguageService +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/Targets +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/Targets/TypeScriptCompile.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/Targets/ProjectItemsSchema.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/Targets/TypeScriptProjectProperties.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/TypeScriptTasks +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/TypeScriptTasks/TypeScript.Tasks.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/TypeScriptDebugEngine +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/TypeScriptLanguageService +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/Targets +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/Targets/TypeScriptCompile.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/Targets/ProjectItemsSchema.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/Targets/TypeScriptProjectProperties.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/TypeScriptTasks +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/TypeScriptTasks/TypeScript.Tasks.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/TypeScriptDebugEngine +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/TypeScriptLanguageService +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/Targets +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/Targets/TypeScriptCompile.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/Targets/ProjectItemsSchema.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/Targets/TypeScriptProjectProperties.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/TypeScriptTasks +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/TypeScriptTasks/TypeScript.Tasks.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/TypeScriptDebugEngine +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/TypeScriptLanguageService +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/Targets +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/Targets/TypeScriptCompile.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/Targets/ProjectItemsSchema.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/Targets/TypeScriptProjectProperties.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/TypeScriptTasks +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/TypeScriptTasks/TypeScript.Tasks.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/TypeScriptDebugEngine +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/TypeScriptLanguageService +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/Targets +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/Targets/TypeScriptCompile.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/Targets/ProjectItemsSchema.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/Targets/TypeScriptProjectProperties.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/TypeScriptTasks +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/TypeScriptTasks/TypeScript.Tasks.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/TypeScriptDebugEngine +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/TypeScriptLanguageService +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/Targets +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/Targets/TypeScriptCompile.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/Targets/ProjectItemsSchema.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/Targets/TypeScriptProjectProperties.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/TypeScriptTasks +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/TypeScriptTasks/TypeScript.Tasks.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/TypeScriptDebugEngine +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/TypeScriptLanguageService +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/Targets +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/Targets/TypeScriptCompile.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/Targets/ProjectItemsSchema.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/Targets/TypeScriptProjectProperties.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/TypeScriptTasks +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/TypeScriptTasks/TypeScript.Tasks.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/TypeScriptDebugEngine +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/TypeScriptLanguageService +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/Targets +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/Targets/TypeScriptCompile.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/Targets/ProjectItemsSchema.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/Targets/TypeScriptProjectProperties.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/TypeScriptTasks +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/TypeScriptTasks/TypeScript.Tasks.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/TypeScriptDebugEngine +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/TypeScriptLanguageService +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/Targets +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/Targets/TypeScriptCompile.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/Targets/ProjectItemsSchema.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/Targets/TypeScriptProjectProperties.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/TypeScriptTasks +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/TypeScriptTasks/TypeScript.Tasks.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/TypeScriptDebugEngine +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/TypeScriptLanguageService +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/Targets +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/Targets/TypeScriptCompile.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/Targets/ProjectItemsSchema.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/Targets/TypeScriptProjectProperties.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/TypeScriptTasks +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/TypeScriptTasks/TypeScript.Tasks.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/TypeScriptDebugEngine +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/TypeScriptLanguageService +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/Targets +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/Targets/TypeScriptCompile.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/Targets/ProjectItemsSchema.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/Targets/TypeScriptProjectProperties.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/TypeScriptTasks +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/TypeScriptTasks/TypeScript.Tasks.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/TypeScriptDebugEngine +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/TypeScriptLanguageService +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/Targets +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/Targets/TypeScriptCompile.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/Targets/ProjectItemsSchema.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/Targets/TypeScriptProjectProperties.xaml.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/TypeScriptTasks +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/TypeScriptTasks/TypeScript.Tasks.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/TypeScriptDebugEngine +-- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl +-- Installing: /usr/local/lib/node_modules/typescript/AUTHORS.md +-- Installing: /usr/local/lib/node_modules/typescript/ThirdPartyNoticeText.txt +-- Installing: /usr/local/lib/node_modules/typescript/package.json +-- Installing: /usr/local/lib/node_modules/typescript/lib +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2017.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.intl.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es5.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2017.object.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.collection.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/typescriptServices.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/tsserverlibrary.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/cs +-- Installing: /usr/local/lib/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.core.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/typesMap.json +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.symbol.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/tr +-- Installing: /usr/local/lib/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.promise.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/ko +-- Installing: /usr/local/lib/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +-- Installing: /usr/local/lib/node_modules/typescript/lib/es +-- Installing: /usr/local/lib/node_modules/typescript/lib/es/diagnosticMessages.generated.json +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.string.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.esnext.weakref.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.scripthost.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/typescript.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2018.full.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.reflect.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/protocol.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2018.promise.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2017.full.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2019.string.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.webworker.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/pl +-- Installing: /usr/local/lib/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +-- Installing: /usr/local/lib/node_modules/typescript/lib/fr +-- Installing: /usr/local/lib/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.generator.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2017.string.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.full.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/typescript.js +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.esnext.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/cancellationToken.js +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/tsserverlibrary.js +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.webworker.iterable.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/ja +-- Installing: /usr/local/lib/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2018.regexp.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.esnext.full.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2017.intl.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/pt-br +-- Installing: /usr/local/lib/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.esnext.intl.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/zh-tw +-- Installing: /usr/local/lib/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2016.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2019.object.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/tsserver.js +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2016.array.include.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.iterable.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/de +-- Installing: /usr/local/lib/node_modules/typescript/lib/de/diagnosticMessages.generated.json +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2018.intl.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.dom.iterable.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/typescriptServices.js +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.esnext.string.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.dom.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2018.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/watchGuard.js +-- Installing: /usr/local/lib/node_modules/typescript/lib/zh-cn +-- Installing: /usr/local/lib/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +-- Installing: /usr/local/lib/node_modules/typescript/lib/ru +-- Installing: /usr/local/lib/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2019.symbol.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/typingsInstaller.js +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.esnext.promise.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.promise.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/README.md +-- Installing: /usr/local/lib/node_modules/typescript/lib/it +-- Installing: /usr/local/lib/node_modules/typescript/lib/it/diagnosticMessages.generated.json +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2016.full.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2019.array.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.bigint.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2019.full.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/tsc.js +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.proxy.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es6.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2019.d.ts +-- Installing: /usr/local/lib/node_modules/typescript/README.md +-- Installing: /usr/local/lib/bootstrap.ts +-- Installing: /usr/local/lib/libts_loaderd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libts_loaderd.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/libwasm_loaderd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libwasm_loaderd.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/libwasmtime.so +-- Installing: /usr/local/lib/libmetacall_seriald.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libmetacall_seriald.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/librapid_json_seriald.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/librapid_json_seriald.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/libplthook_detourd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libplthook_detourd.so" to "/usr/local/lib" +-- Installing: /usr/local/lib/libplugin_extensiond.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/libplugin_extensiond.so" to "/usr/local/lib" +-- Installing: /usr/local/include/backward.hpp +-- Installing: /usr/local/lib/backward/BackwardConfig.cmake +-- Installing: /usr/local/lib/plugins +-- Installing: /usr/local/lib/plugins/backtrace_plugin +-- Installing: /usr/local/lib/plugins/backtrace_plugin/libbacktrace_plugind.so +-- Installing: /usr/local/lib/plugins/backtrace_plugin/metacall.json +-- Installing: /usr/local/lib/plugins/cli +-- Installing: /usr/local/lib/plugins/cli/cmd +-- Installing: /usr/local/lib/plugins/cli/cmd/cli_sandbox_plugin +-- Installing: /usr/local/lib/plugins/cli/cmd/cli_sandbox_plugin/libcli_sandbox_plugind.so +-- Installing: /usr/local/lib/plugins/cli/cmd/cli_sandbox_plugin/metacall.json +-- Installing: /usr/local/lib/plugins/cli/internal +-- Installing: /usr/local/lib/plugins/cli/internal/cli_repl_plugin +-- Installing: /usr/local/lib/plugins/cli/internal/cli_repl_plugin/cli_repl_plugin.js +-- Installing: /usr/local/lib/plugins/cli/internal/cli_repl_plugin/parser.js +-- Installing: /usr/local/lib/plugins/cli/internal/cli_repl_plugin/metacall.json +-- Installing: /usr/local/lib/plugins/cli/internal/cli_cmd_plugin +-- Installing: /usr/local/lib/plugins/cli/internal/cli_cmd_plugin/cli_cmd_plugin.js +-- Installing: /usr/local/lib/plugins/cli/internal/cli_cmd_plugin/metacall.json +-- Installing: /usr/local/lib/plugins/cli/repl +-- Installing: /usr/local/lib/plugins/cli/repl/cli_core_plugin +-- Installing: /usr/local/lib/plugins/cli/repl/cli_core_plugin/libcli_core_plugind.so +-- Installing: /usr/local/lib/plugins/cli/repl/cli_core_plugin/cli_core_plugin_repl.js +-- Installing: /usr/local/lib/plugins/cli/repl/cli_core_plugin/metacall.json +-- Installing: /usr/local/lib/plugins/sandbox_plugin +-- Installing: /usr/local/lib/plugins/sandbox_plugin/libsandbox_plugind.so +-- Installing: /usr/local/lib/plugins/sandbox_plugin/metacall.json +-- Installing: /usr/local/lib/node_modules/metacall/index.js +-- Installing: /usr/local/lib/node_modules/metacall/index.d.ts +-- Installing: /usr/local/lib/node_modules/metacall/package.json +-- Installing: /usr/local/lib/node_modules/metacall/package-lock.json +-- Installing: /usr/local/lib/node_modules/metacall/LICENSE +Processing /usr/local/metacall/source/ports/py_port + Preparing metadata (setup.py): started + Preparing metadata (setup.py): finished with status 'done' +Building wheels for collected packages: metacall + Building wheel for metacall (setup.py): started + Building wheel for metacall (setup.py): finished with status 'done' + Created wheel for metacall: filename=metacall-0.5.1-py2.py3-none-any.whl size=14061 sha256=015f92f2fa3cc2bc911cd45a282a12c381d25ca1c498f99098a4a30018c24e84 + Stored in directory: /tmp/pip-ephem-wheel-cache-a3n0sbsf/wheels/67/d1/05/9442633228a4c6adb005b8d5d97a193b9876b444ce637c7bbe +Successfully built metacall +Installing collected packages: metacall +Successfully installed metacall-0.5.1 +WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning. +-- Installing: /usr/local/lib/rb_portd.so +-- Set non-toolchain portion of runtime path of "/usr/local/lib/rb_portd.so" to "/usr/local/lib" +-- Installing: /usr/local/bin/metacallclid +-- Set non-toolchain portion of runtime path of "/usr/local/bin/metacallclid" to "/usr/local/lib" +-- Up-to-date: /usr/local/include/metacall +-- Installing: /usr/local/include/metacall/metacall_loaders.h +-- Installing: /usr/local/include/metacall/metacall_version.h +MetaCall configuration paths (overwritables) +LOADER_SCRIPT_PATH: + Description: Directory where scripts are located + Install Location: N/A + Default Location: scripts +CONFIGURATION_PATH: + Description: Path to the main global MetaCall configuration + Install Location: /usr/local/share/metacall/configurations/global.json + Default Location: configurations/global.json +LOADER_LIBRARY_PATH: + Description: Directory where MetaCall loader plugins are located + Install Location: /usr/local/lib + Default Location: . +SERIAL_LIBRARY_PATH: + Description: Directory where MetaCall serial plugins are located + Install Location: /usr/local/lib + Default Location: serials +DETOUR_LIBRARY_PATH: + Description: Directory where MetaCall detour plugins are located + Install Location: /usr/local/lib + Default Location: detours +-- Installing: /usr/local/share/metacall/VERSION +-- Installing: /usr/local/share/metacall/metacall-config.cmake +-- Installing: /usr/local/share/metacall/metacall-config-version.cmake +-- Installing: /usr/local/share/metacall/AUTHORS +-- Installing: /usr/local/share/metacall/LICENSE +-- Installing: /usr/local/share/metacall/README.md +Removing intermediate container 8fc0ef566964 + ---> a154882bd14f +Successfully built a154882bd14f +Successfully tagged metacall/core:dev From 73c12f508cadfea7df67e6fb72873b8daffbe100 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 10 Apr 2025 17:48:20 +0200 Subject: [PATCH 12/68] Avoid to optimize function in release. --- source/tests/dynlink_test/source/dynlink_test.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/tests/dynlink_test/source/dynlink_test.cpp b/source/tests/dynlink_test/source/dynlink_test.cpp index 48c037205..f832ec21c 100644 --- a/source/tests/dynlink_test/source/dynlink_test.cpp +++ b/source/tests/dynlink_test/source/dynlink_test.cpp @@ -122,6 +122,8 @@ TEST_F(dynlink_test, DefaultConstructor) EXPECT_EQ((int)48, fn_ptr()); + EXPECT_EQ((int (*)(void))&function_from_current_executable, (int (*)(void))fn_ptr); + dynlink_unload(proc); /* Should do nothing except by freeing the handle */ } From 369de4afc2ee9f099294189ecb7521a3792ea89e Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 10 Apr 2025 18:11:08 +0200 Subject: [PATCH 13/68] Trying to solve dynlink error. --- source/tests/dynlink_test/source/dynlink_test.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/tests/dynlink_test/source/dynlink_test.cpp b/source/tests/dynlink_test/source/dynlink_test.cpp index f832ec21c..1ba674206 100644 --- a/source/tests/dynlink_test/source/dynlink_test.cpp +++ b/source/tests/dynlink_test/source/dynlink_test.cpp @@ -38,7 +38,7 @@ class dynlink_test : public testing::Test #ifdef _WIN32 #define EXPORT_SYMBOL __declspec(dllexport) #else - #define EXPORT_SYMBOL __attribute__((visibility("default"))) + #define EXPORT_SYMBOL __attribute__((used)) __attribute__((visibility("default"))) #endif extern "C" EXPORT_SYMBOL int function_from_current_executable(void) @@ -114,15 +114,17 @@ TEST_F(dynlink_test, DefaultConstructor) dynlink_symbol_addr addr; + EXPECT_EQ((int)48, (int)function_from_current_executable()); + EXPECT_EQ((int)0, dynlink_symbol(proc, "function_from_current_executable", &addr)); - ASSERT_NE((dynlink)proc, (dynlink)(NULL)); + ASSERT_NE((dynlink_symbol_addr)addr, (dynlink_symbol_addr)NULL); int (*fn_ptr)(void) = (int (*)(void))addr; EXPECT_EQ((int)48, fn_ptr()); - EXPECT_EQ((int (*)(void))&function_from_current_executable, (int (*)(void))fn_ptr); + EXPECT_EQ((int (*)(void))(&function_from_current_executable), (int (*)(void))fn_ptr); dynlink_unload(proc); /* Should do nothing except by freeing the handle */ } From dd78067f045fc98d1208bcf26b6d12ce0f1d283c Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 10 Apr 2025 18:18:07 +0200 Subject: [PATCH 14/68] Solve more issues. --- output | 4601 ----------------- .../plugins/backtrace_plugin/CMakeLists.txt | 2 + 2 files changed, 2 insertions(+), 4601 deletions(-) delete mode 100644 output diff --git a/output b/output deleted file mode 100644 index de325f6b5..000000000 --- a/output +++ /dev/null @@ -1,4601 +0,0 @@ -+ export COMPOSE_DOCKER_CLI_BUILD=1 -+ COMPOSE_DOCKER_CLI_BUILD=1 -+ export DOCKER_BUILDKIT=1 -+ DOCKER_BUILDKIT=1 -+ export BUILDKIT_PROGRESS=plain -+ BUILDKIT_PROGRESS=plain -+ export PROGRESS_NO_TRUNC=1 -+ PROGRESS_NO_TRUNC=1 -++ command -v docker-compose -+ '[' -x /usr/local/bin/docker-compose ']' -+ DOCKER_COMPOSE=docker-compose -+ case "$1" in -+ sub_test -+ export DOCKER_BUILDKIT=0 -+ DOCKER_BUILDKIT=0 -+ export METACALL_BUILD_SANITIZER= -+ METACALL_BUILD_SANITIZER= -+ export METACALL_BUILD_COVERAGE= -+ METACALL_BUILD_COVERAGE= -+ export METACALL_BUILD_TYPE=debug -+ METACALL_BUILD_TYPE=debug -+ ln -sf tools/deps/.dockerignore .dockerignore -+ docker-compose -f docker-compose.yml -f docker-compose.test.yml build --force-rm deps -Building deps -Sending build context to Docker daemon 41.47kB -Step 1/11 : ARG METACALL_BASE_IMAGE -Step 2/11 : FROM ${METACALL_BASE_IMAGE} AS deps - ---> 29f27ec2c121 -Step 3/11 : LABEL copyright.name="Vicente Eduardo Ferrer Garcia" copyright.address="vic798@gmail.com" maintainer.name="Vicente Eduardo Ferrer Garcia" maintainer.address="vic798@gmail.com" vendor="MetaCall Inc." version="0.1" - ---> Using cache - ---> 49a33baef77c -Step 4/11 : ARG METACALL_PATH - ---> Using cache - ---> 13cf6ef6b257 -Step 5/11 : ARG METACALL_TOOLS_PATH - ---> Using cache - ---> 74c0900e4935 -Step 6/11 : ENV DEBIAN_FRONTEND=noninteractive LTTNG_UST_REGISTER_TIMEOUT=0 NUGET_XMLDOC_MODE=skip DOTNET_CLI_TELEMETRY_OPTOUT=true - ---> Using cache - ---> 90e6f87497e7 -Step 7/11 : WORKDIR $METACALL_PATH - ---> Using cache - ---> 889e429fecde -Step 8/11 : COPY tools/metacall-environment.sh tools/nobuildtest.patch $METACALL_TOOLS_PATH/ - ---> Using cache - ---> 6039e0748a38 -Step 9/11 : ARG METACALL_BUILD_TYPE - ---> Using cache - ---> 7ef06f56da55 -Step 10/11 : ARG METACALL_INSTALL_OPTIONS - ---> Using cache - ---> 55bcc6a1ff91 -Step 11/11 : RUN chmod 500 $METACALL_TOOLS_PATH/metacall-environment.sh && $METACALL_TOOLS_PATH/metacall-environment.sh ${METACALL_BUILD_TYPE} ${METACALL_INSTALL_OPTIONS} && rm -rf $METACALL_PATH - ---> Using cache - ---> 663a36c6a1d2 -Successfully built 663a36c6a1d2 -Successfully tagged metacall/core:deps -+ ln -sf tools/dev/.dockerignore .dockerignore -+ docker-compose -f docker-compose.yml -f docker-compose.test.yml build --force-rm dev -Building dev -Sending build context to Docker daemon 145MB -Step 1/11 : FROM metacall/core:deps AS dev - ---> 663a36c6a1d2 -Step 2/11 : LABEL copyright.name="Vicente Eduardo Ferrer Garcia" copyright.address="vic798@gmail.com" maintainer.name="Vicente Eduardo Ferrer Garcia" maintainer.address="vic798@gmail.com" vendor="MetaCall Inc." version="0.1" - ---> Using cache - ---> cad39512370c -Step 3/11 : ARG METACALL_PATH - ---> Using cache - ---> 667cbb0424d2 -Step 4/11 : ENV LOADER_LIBRARY_PATH=$METACALL_PATH/build LOADER_SCRIPT_PATH=$METACALL_PATH/build/scripts CONFIGURATION_PATH=$METACALL_PATH/build/configurations/global.json SERIAL_LIBRARY_PATH=$METACALL_PATH/build DETOUR_LIBRARY_PATH=$METACALL_PATH/build PORT_LIBRARY_PATH=$METACALL_PATH/build DEBIAN_FRONTEND=noninteractive NODE_PATH=/usr/lib/node_modules DOTNET_CLI_TELEMETRY_OPTOUT=true - ---> Using cache - ---> 9880ade75ea2 -Step 5/11 : WORKDIR $METACALL_PATH - ---> Using cache - ---> 60b4d0ff9791 -Step 6/11 : COPY . $METACALL_PATH - ---> 61fa6f901dff -Step 7/11 : RUN chmod 500 $METACALL_PATH/tools/metacall-configure.sh && chmod 500 $METACALL_PATH/tools/metacall-build.sh && mkdir -p $METACALL_PATH/build - ---> Running in 83b240d9adc6 -Removing intermediate container 83b240d9adc6 - ---> 605f80d762f6 -Step 8/11 : ARG METACALL_BUILD_TYPE - ---> Running in f1af673b92af -Removing intermediate container f1af673b92af - ---> 84b68123c202 -Step 9/11 : ARG METACALL_BUILD_OPTIONS - ---> Running in c6ce85603c04 -Removing intermediate container c6ce85603c04 - ---> 2407b0953672 -Step 10/11 : RUN cd $METACALL_PATH/build && $METACALL_PATH/tools/metacall-configure.sh ${METACALL_BUILD_TYPE} ${METACALL_BUILD_OPTIONS} - ---> Running in 84f6a9010292 -Current option settings -errexit on -noglob off -ignoreeof off -interactive off -monitor off -noexec off -stdin off -xtrace on -verbose off -vi off -emacs off -noclobber off -allexport off -notify off -nounset on -privileged off -nolog off -pipefail off -debug off -+ pwd -+ ROOT_DIR=/usr/local/metacall/build -+ BUILD_TYPE=Release -+ BUILD_PYTHON=0 -+ BUILD_RUBY=0 -+ BUILD_NETCORE=0 -+ BUILD_NETCORE2=0 -+ BUILD_NETCORE5=0 -+ BUILD_NETCORE7=0 -+ BUILD_V8=0 -+ BUILD_NODEJS=0 -+ BUILD_TYPESCRIPT=0 -+ BUILD_FILE=0 -+ BUILD_RPC=0 -+ BUILD_WASM=0 -+ BUILD_JAVA=0 -+ BUILD_C=0 -+ BUILD_COBOL=0 -+ BUILD_GO=0 -+ BUILD_RUST=0 -+ BUILD_ZIG=0 -+ BUILD_SCRIPTS=0 -+ BUILD_EXAMPLES=0 -+ BUILD_TESTS=0 -+ BUILD_BENCHMARKS=0 -+ BUILD_PORTS=0 -+ BUILD_SANDBOX=0 -+ BUILD_COVERAGE=0 -+ BUILD_ADDRESS_SANITIZER=0 -+ BUILD_THREAD_SANITIZER=0 -+ BUILD_MEMORY_SANITIZER=0 -+ uname -s -+ OPERATIVE_SYSTEM=Linux -+ [ -f /etc/os-release ] -+ cat /etc/os-release -+ grep ^ID= -+ cut -f2- -d= -+ sed -e s/^[[:space:]]*// -e s/[[:space:]]*$// -+ tr -d " -+ LINUX_DISTRO=debian -+ + cat /etc/os-release -grep ^VERSION_ID= -+ cut -f2- -d= -+ sed -e s/^[[:space:]]*// -e s/[[:space:]]*$// -+ tr -d " -+ LINUX_VERSION_ID= -+ sub_options debug python ruby netcore7 nodejs typescript file rpc wasm java c cobol go rust examples tests scripts ports install pack sandbox benchmarks -+ [ debug = debug ] -+ echo Build all scripts in debug mode -+ BUILD_TYPE=Debug -+ [ debug = release ] -+ [ debug = relwithdebinfo ] -+ [ debug = python ] -+ [ debug = ruby ] -+ [ debug = netcore ] -+ [ debug = netcore2 ] -+ [ debug = netcore5 ] -+ [ debug = netcore7 ] -+ [ debug = v8 ] -+ [ debug = nodejs ] -+ [ debug = typescript ] -+ [ debug = file ] -+ [ debug = rpc ] -+ [ debug = wasm ] -+ [ debug = java ] -+ [ debug = c ]Build all scripts in debug mode - -+ [ debug = cobol ] -+ [ debug = go ] -+ [ debug = rust ] -+ [ debug = zig ] -+ [ debug = scripts ] -+ [ debug = examples ] -+ [ debug = tests ] -+ [ debug = benchmarks ] -+ [ debug = ports ] -+ [ debug = sandbox ] -+ [ debug = coverage ] -+ [ debug = address-sanitizer ] -+ [ debug = thread-sanitizer ] -+ [ debug = memory-sanitizer ] -+ [ python = debug ] -+ [ python = release ] -+ [ python = relwithdebinfo ] -+ [ python = python ] -+ echo Build with python support -+ BUILD_PYTHON=1 -+ [ python = ruby ] -+ [ python = netcore ] -+ [ python = netcore2 ] -+ [ python = netcore5 ] -+ [ python = netcore7 ] -+ [ python = v8 ] -+ [ python = nodejs ] -+ [ python = typescript ] -+ [ python = file ] -+ [ python = rpc ] -+ [ python = wasmBuild with python support - ] -+ [ python = java ] -+ [ python = c ] -+ [ python = cobol ] -+ [ python = go ] -+ [ python = rust ] -+ [ python = zig ] -+ [ python = scripts ] -+ [ python = examples ] -+ [ python = tests ] -+ [ python = benchmarks ] -+ [ python = ports ] -+ [ python = sandbox ] -+ [ python = coverage ] -+ [ python = address-sanitizer ] -+ [ python = thread-sanitizer ] -+ [ python = memory-sanitizer ] -+ Build with ruby support -[ ruby = debug ] -+ [ ruby = release ] -+ [ ruby = relwithdebinfo ] -+ [ ruby = python ] -+ [ ruby = ruby ] -+ echo Build with ruby support -+ BUILD_RUBY=1 -+ [ ruby = netcore ] -+ [ ruby = netcore2 ] -+ [ ruby = netcore5 ] -+ [ ruby = netcore7 ] -+ [ ruby = v8 ] -+ [ ruby = nodejs ] -+ [ ruby = typescript ] -+ [ ruby = file ] -+ [ ruby = rpc ] -+ [ ruby = wasm ] -+ [ ruby = java ] -+ [ ruby = c ] -+ [ ruby = cobol ] -+ [ ruby = go ] -+ [ ruby = rust ] -+ [ ruby = zig ] -+ [ ruby = scripts ] -+ [ ruby = examples ] -+ [ ruby = tests ] -+ [ ruby = benchmarks ] -+ [ ruby = ports ] -+ [ ruby = sandbox ] -+ [ ruby = coverage ] -+ [ ruby = address-sanitizer ] -+ [ ruby = thread-sanitizer ] -+ [ ruby = memory-sanitizer ] -+ [ netcore7 = debug ] -+ [ netcore7 = release ] -+ [ netcore7 = relwithdebinfo ] -+ [ netcore7 = python ] -+ [ netcore7 = ruby ] -+ [ netcore7 = netcore ] -+ [ netcore7 = netcore2 ] -+ [ netcore7 = netcore5 ] -+ [Build with netcore 7 support - netcore7 = netcore7 ] -+ echo Build with netcore 7 support -+ BUILD_NETCORE7=1 -+ [ netcore7 = v8 ] -+ [ netcore7 = nodejs ] -+ [ netcore7 = typescript ] -+ [ netcore7 = file ] -+ [ netcore7 = rpc ] -+ [ netcore7 = wasm ] -+ [ netcore7 = java ] -+ [ netcore7 = c ] -+ [ netcore7 = cobol ] -+ [ netcore7 = go ] -+ [ netcore7 = rust ] -+ [ netcore7 = zig ] -+ [ netcore7 = scripts ] -+ [ netcore7 = examples ] -+ [ netcore7 = tests ] -+ [ netcore7 = benchmarks ] -+ [ netcore7 = ports ] -+ [ netcore7 = sandbox ] -+ [ netcore7 = coverage ] -+ [ netcore7 = address-sanitizer ] -+ [ netcore7 = thread-sanitizer ] -+ [ netcore7 = memory-sanitizer ] -+ [ nodejs = debug ] -+ [ nodejs = release ] -+ [ nodejs = relwithdebinfo ] -+ [ nodejs = python ] -+ [ nodejs = ruby ] -+ [ nodejs = netcore ] -+ [ nodejs = netcore2 ] -+ [ nodejs = netcore5 ] -+ [ nodejs = netcore7 ] -+ [ nodejs = v8 ] -+ [ nodejs = nodejs ] -+ echo Build with nodejs support -+ BUILD_NODEJS=1 -+ [ nodejs = typescript ] -+ [ nodejs = file ] -+ [ nodejs = rpc ] -+ [ nodejs = wasm ] -+ [ nodejs = java ] -+ [ nodejs = c ] -+ [ nodejs = cobol ] -+ [ nodejs = go ] -+ [ nodejs = rust ] -+ [ nodejs = zig ] -+ [ nodejs = scripts ] -+ [ nodejs = examples ] -+ [ nodejs = tests ] -+ [ nodejs = benchmarks ] -+ [ nodejs = ports ] -+ [ nodejs = sandbox ] -+ [ nodejs = coverage ] -+ [ nodejs = address-sanitizer ] -+ [ nodejs = thread-sanitizer ] -+ [ nodejs = memory-sanitizer ] -+ [ typescript = debug ] -+ [ typescript = release ] -+ [ typescript = relwithdebinfo ] -+ [ typescript = python ] -+ [ typescript = ruby ] -+ [ typescript = netcore ] -+ [ typescript = netcore2 ] -+ [ typescript = netcore5 ] -+ [ typescript = netcore7 ] -+ [ typescript = v8 ] -+ [ typescript = nodejs ] -+ [ typescript = typescript ] -+ echo Build with typescript support -+ BUILD_TYPESCRIPT=1 -+ [ typescript = file ] -+ [ typescript = rpc ] -+ [ typescript = wasm ] -+ [ typescript = java ] -+ [ typescript = c ] -+ [ typescript = cobol ] -+ [ typescript = go ] -+ [ typescript = rust ] -+ [ typescript = zig ] -+ [ typescript = scripts ] -+ [ typescript = examples ] -+ [ typescript = tests ] -+ [ typescript = benchmarks ] -+ [ typescript = ports ] -+ [ typescript = sandbox ] -+ [ typescript = coverage ] -+ [ typescript = address-sanitizer ] -+ [ typescript = thread-sanitizer ] -+ [ typescript = memory-sanitizer ] -+ [ file = debug ] -+ [ file = release ] -+ [ file = relwithdebinfo ] -+ [ file = python ] -+ [ file = ruby ] -+ [ file = netcore ] -+ [ file = netcore2 ] -+ [ file = netcore5 ] -+ [ file = netcore7 ] -+ [ file = v8 ] -+ [ file = nodejs ] -+ [ file = typescript ] -+ [ file = file ] -+ echo Build with file support -+ BUILD_FILE=1 -+ [ file = rpc ] -+ [ file = wasm ] -Build with nodejs support -Build with typescript support -Build with file support -+ [ file = java ] -+ [ file = c ] -+ [ file = cobol ] -+ [ file = go ] -+ [ file = rust ] -+ [ file = zig ] -+ [ file = scripts ] -+ [ file = examples ] -+ [ file = tests ] -+ [ file = benchmarks ] -+ [ file = ports ] -+ [ file = sandbox ] -+ [ file = coverage ] -+ [ file = address-sanitizer ] -+ [ file = thread-sanitizer ] -+ [ file = memory-sanitizer ] -+ [ rpc = debug ] -+ [ rpc = release ] -+ [ rpc = relwithdebinfo ] -+ [ rpc = python ] -+ [ rpc = ruby ] -+ [ rpc = netcore ] -+ [ rpc = netcore2 ] -+ [ rpc = netcore5 ] -+ [ rpc = netcore7 ] -+ [ rpc = v8 ] -+ [ rpc = nodejs ] -+ [ rpc = typescript ] -+ [ rpc = file ] -+ [ rpc = rpc ] -+ echo Build with rpc support -+ BUILD_RPC=1 -+ [ rpc = wasm ] -+ [ rpc = java ] -+ [ rpc = c ] -+ [ rpc = cobol ] -+ [ rpc = go ] -+ [ rpc = rust ] -+ [ rpc = zig ] -+ [ rpc = scripts ] -+ [ rpc = examples ] -+ [ rpc = tests ] -+ [ rpc = benchmarks ] -+ [ rpc = ports ] -+ [ rpc = sandbox ] -+ [ rpc = coverage ] -+ [ rpc = address-sanitizer ] -+ [ rpc = thread-sanitizer ] -+ [ rpc = memory-sanitizer ] -+ [ wasm = debug ] -+ [ wasm = release ] -+ [ wasm = relwithdebinfo ] -+ [ wasm = python ] -+ [ wasm = ruby ] -+ [ wasm = netcore ] -+ [ wasm = netcore2 ] -+ [ wasm = netcore5Build with rpc support - ] -+ [ wasm = netcore7 ] -+ [ wasm = v8 ] -+ [ wasm = nodejs ] -+ [ wasm = typescript ] -+ [ wasm = file ] -+ [ wasm = rpc ] -+ [ wasm = wasm ] -+ echo Build with wasm support -+ BUILD_WASM=1 -+ [ wasm = java ] -+ [ wasm = c ] -+ [ wasm = cobol ] -+ [ wasm = go ] -+ [ wasm = rust ] -+ [ wasm = zig ] -+ [ wasm = scripts ] -+ [ wasm = examples ] -+ [ wasmBuild with wasm support - = tests ] -+ [ wasm = benchmarks ] -+ [ wasm = ports ] -+ [ wasm = sandbox ] -+ [ wasm = coverage ] -+ [ wasm = address-sanitizer ] -+ [ wasm = thread-sanitizer ] -+ [ wasm = memory-sanitizer ] -+ [ java = debug ] -+ [ java = release ] -+ [ java = relwithdebinfo ] -+ [ java = python ] -+ [ java = ruby ] -+ [ java = netcore ] -+ [ java = netcore2 ] -+ [ java = netcore5 ] -+ [ java = netcore7 ] -+ [ java = v8 ] -+ [ java = nodejs ] -+ [ java = typescript ] -+ [ java = file ] -+ [ java = rpc ] -+ [ java = wasm ] -+ [ java = java ] -+ echo Build with java support -+ BUILD_JAVA=1 -+ [ java = c ] -+ [ java = cobol ] -+ [ java = go ] -+ [ java = rust ] -+ [ java = zig ] -+ [ java = scripts ] -+ [ java = examples ] -Build with java support -+ [ java = tests ] -+ [ java = benchmarks ] -+ [ java = ports ] -+ [ java = sandbox ] -+ [ java = coverage ] -+ [ java = address-sanitizer ] -+ [ java = thread-sanitizer ] -+ [ java = memory-sanitizer ] -+ [ c = debug ] -+ [ c = release ] -+ [ c = relwithdebinfo ] -+ [ c = python ] -+ [ c = ruby ] -+ [ c = netcore ] -+ [ c = netcore2 ] -+ [ c = netcore5 ] -+ [ c = netcore7 ] -+ [ c = v8 ] -+ [ c = nodejs ] -+ [ c = typescript ] -+ [ c = file ] -+ [ c = rpc ] -+ [ c = wasm ] -+ [ c = java ] -+ [ c = c ] -+ echo Build with c support -+ BUILD_C=1 -+ [ c = cobol ] -+ [ c = go ] -+ [ c = rust ] -+ [ c = zig ] -+ [ c = scripts ] -+ [ c = examples ] -+ [ c = tests ] -+ [ c = benchmarks ] -+ [ c = ports ] -+ [ c = sandbox ] -+ [ c = coverage ] -+ [ c = address-sanitizer ] -+ [ c = thread-sanitizer ] -+ [ c = memory-sanitizer ] -+ [ cobol = debug ] -+ [ cobol = release ] -+ [ cobol = relwithdebinfo ] -+ [ cobol = python ] -+ [ cobol = ruby ] -+ [ cobol = netcore ] -+ [ cobol = netcore2 ] -+ [ cobol = netcore5 ] -+ [ cobol = netcore7 ] -+ [ cobol = v8 ] -+ [ cobol = nodejs ] -+ [ cobol = typescript ] -+ [ cobol = file ] -+ [ cobol = rpc ] -+ [ cobol = wasm ] -+ [ cobol = java ] -+ [ cobol = c ] -+ [ cobol = cobol ] -+ echo Build with cobol support -+ BUILD_COBOL=1 -+ [ cobol = go ] -+ [ cobol = rust ] -+ [ cobol = zig ] -+ [ cobol = scripts ] -+ [ cobol = examples ] -+ [ cobol = tests ] -+ [ cobol = benchmarks ] -+ [ cobol = ports ] -+ [ cobol = sandbox ] -+ [ cobol = coverage ] -+ [ cobol = address-sanitizer ] -+ [ cobol = thread-sanitizer ] -+ [ cobol = memory-sanitizer ] -+ [ go = debug ] -+ [ go = release ] -+ [ go = relwithdebinfo ] -+ [ go = python ] -+ [ go = ruby ] -+ [ go = netcore ] -+ [ go = netcore2 ] -+ [ go = netcore5 ] -+ [ go = netcore7 ] -+ [ go = v8 ] -+ [ go = nodejs ] -+ [ go = typescript ] -+ [ go = file ] -+ [ go = rpc ] -+ [ go = wasm ] -+ [ go = java ] -+ [ go = c ] -+ [ go = cobol ] -+ [ go = go ] -+ echo Build with go support -+ BUILD_GO=1 -+ [ go = rust ] -+ [ go = zig ] -+ [ go = scripts ] -+ [ go = examples ] -+ [ go = tests ] -+ [ go = benchmarks ] -+ [ go = ports ] -+ [ go = sandbox ] -+ [ go = coverage ] -+ [ go = address-sanitizer ] -+ [ go = thread-sanitizer ] -+ [ go = memory-sanitizer ] -+ [ rust = debug ] -+ [ rust = release ] -+ [ rust = relwithdebinfo ] -+ [ rust = python ] -+ [ rust = ruby ] -+ [ rust = netcore ] -+ [ rust = netcore2 ] -+ [ rust = netcore5 ] -+ [ rust = netcore7 ] -+ [ rust = v8 ] -+ [ rust = nodejs ] -+ [ rust = typescript ] -+ [ rust = file ] -+ [ rust = rpc ] -+ [ rust = wasm ] -+ [ rust = java ] -+ [ rust = c ] -+ [ rust = cobol ] -+ [ rust = go ] -+ [ rust = rust ] -+ echo Build with rust support -+ BUILD_RUST=1 -+ [ rust = zig ] -+ [ rust = scripts ] -+ [ rust = examples ] -+ [ rust = tests ] -+ [ rust = benchmarks ] -+ [ rust = ports ] -+ [ rust = sandbox ] -+ [ rust = coverage ] -+ [ rust = address-sanitizer ] -+ [ rust = thread-sanitizer ] -+ [ rust = memory-sanitizer ] -+ [ examples = debug ] -+ [ examples = release ] -+ [ examples = relwithdebinfo ] -+ [ examples = python ] -+ [ examples = ruby ] -+ [ examples = netcore ] -+ [ examples = netcore2 ] -+ [ examples = netcore5 ] -+ [ examples = netcore7 ] -+ [ examples = v8 ] -+ [ examples = nodejs ] -+ [ examples = typescript ] -+ [ examples = file ] -+ [ examples = rpc ] -+ [ examples = wasm ] -+ [ examples = java ] -+ [ examples = c ] -+ [ examples = cobol ] -+ [ examples = go ] -+ [ examples = rust ] -+ [ examples = zig ] -+ [ examples = scripts ] -+ [ examples = examples ] -+ echo Build all examples -+ BUILD_EXAMPLES=1 -+ [ examples = tests ] -+ [ examples = benchmarks ] -+ [ examples = ports ] -+ [ examples = sandbox ] -+ [ examples = coverage ] -+ [ examples = address-sanitizer ] -+ [ examples = thread-sanitizer ] -+ [ examples = memory-sanitizer ] -+ [ tests = debug ] -+ [ tests = release ] -+ [ tests = relwithdebinfo ] -+ [ tests = python ] -+ [ tests = ruby ] -+ [ tests = netcore ] -+ [ tests = netcore2 ] -+ [ tests = netcore5 ] -+ [ tests = netcore7 ] -+ [ tests = v8 ] -+ [ tests = nodejs ] -+ [ tests = typescript ] -+ [ tests = file ] -+ [ tests = rpc ] -+ [ tests = wasm ] -+ [ tests = java ] -+ [ tests = c ] -+ [ tests = cobol ] -+ [ tests = go ] -+ [ tests = rust ] -+ [ tests = zig ] -+ [ tests = scripts ] -+ [ tests = examples ] -+ [ tests = tests ] -+ echo Build all tests -+ BUILD_TESTS=1 -+ [ tests = benchmarks ] -+ [ tests = ports ] -+ [ tests = sandbox ] -+ [ tests = coverage ] -+ [ tests = address-sanitizer ] -+ [ tests = thread-sanitizer ] -+ [ tests = memory-sanitizer ] -+ [ scripts = debug ] -+ [ scripts = release ] -+ [ scripts = relwithdebinfo ] -+ [ scripts = python ]Build with c support -Build with cobol support -Build with go support -Build with rust support -Build all examples -Build all tests - -+ [ scripts = ruby ] -+ [ scripts = netcore ] -+ [ scripts = netcore2 ] -+ [ scripts = netcore5 ] -+ [ scripts = netcore7 ] -+ [ scripts = v8 ] -+ [ scripts = nodejs ] -+ [ scripts = typescript ] -+ [ scripts = file ] -+ [ scripts = rpc ] -+ [ scripts = wasm ] -+ [ scripts = java ] -+ [ scripts = c ] -+ [ scripts = cobol ] -+ [ scripts = go ] -+ [ scripts = rust ] -+ [ scripts = zig ] -+ [ scripts = scripts ] -+ echo Build all scripts -+ BUILD_SCRIPTS=1 -+ [ scripts = examples ] -+ [ scripts = tests ] -+ [ scripts = benchmarks ] -+ [ scripts = ports ] -+ [ scripts = sandbox ] -+ [ scripts = coverage ] -+ [ scripts = address-sanitizer ] -+ [ scripts = thread-sanitizer ] -+ [ scripts = memory-sanitizer ] -+ [ ports = debug ] -+ [ ports = release ] -+ [ ports = relwithdebinfo ] -Build all scripts -+ [ ports = python ] -+ [ ports = ruby ] -+ [ ports = netcore ] -+ [ ports = netcore2 ] -+ [ ports = netcore5 ] -+ [ ports = netcore7 ] -+ [ ports = v8 ] -+ [ ports = nodejs ] -+ [ ports = typescript ] -+ [ ports = file ] -+ [ ports = rpc ] -+ [ ports = wasm ] -+ [ ports = java ] -+ [ ports = c ] -+ [ ports = cobol ] -+ [ ports = go ] -+ [ ports = rust ] -+ [ ports = zig ] -+ [ ports = scripts ] -+ [ ports = examples ] -+ [ ports = tests ] -+ [ ports = benchmarks ] -+ [ ports = ports ] -+ echo Build all ports -Build all ports -+ BUILD_PORTS=1 -+ [ ports = sandbox ] -+ [ ports = coverage ] -+ [ ports = address-sanitizer ] -+ [ ports = thread-sanitizer ] -+ [ ports = memory-sanitizer ] -+ [ install = debug ] -+ [ install = release ] -+ [ install = relwithdebinfo ] -+ [ install = python ] -+ [ install = ruby ] -+ [ install = netcore ] -+ [ install = netcore2 ] -+ [ install = netcore5 ] -+ [ install = netcore7 ] -+ [ install = v8 ] -+ [ install = nodejs ] -+ [ install = typescript ] -+ [ install = file ] -+ [ install = rpc ] -+ [ install = wasm ] -+ [ install = java ] -+ [ install = c ] -+ [ install = cobol ] -+ [ install = go ] -+ [ install = rust ] -+ [ install = zig ] -+ [ install = scripts ] -+ [ install = examples ] -+ [ install = tests ] -+ [ install = benchmarks ] -+ [ install = ports ] -+ [ install = sandbox ] -+ [ install = coverage ] -+ [ install = address-sanitizer ] -+ [ install = thread-sanitizer ] -+ [ install = memory-sanitizer ] -+ [ pack = debug ] -+ [ pack = release ] -+ [ pack = relwithdebinfo ] -+ [ pack = python ] -+ [ pack = ruby ] -+ [ pack = netcore ] -+ [ pack = netcore2 ] -+ [ pack = netcore5 ] -+ [ pack = netcore7 ] -+ [ pack = v8 ] -+ [ pack = nodejs ] -+ [ pack = typescript ] -+ [ pack = file ] -+ [ pack = rpc ] -+ [ pack = wasm ] -+ [ pack = java ] -+ [ pack = c ] -+ [ pack = cobol ] -+ [ pack = go ] -+ [ pack = rust ] -+ [ pack = zig ] -+ [ pack = scripts ] -+ [ pack = examples ] -+ [ pack = tests ] -+ [ pack = benchmarks ] -+ [ pack = ports ] -+ [ pack = sandbox ] -+ [ pack = coverage ] -+ [ pack = address-sanitizer ] -+ [ pack = thread-sanitizer ] -+ [ pack = memory-sanitizer ] -+ [ sandbox = debug ] -+ [ sandbox = release ] -+ [ sandbox = relwithdebinfo ] -+ [ sandbox = python ] -+ [ sandbox = ruby ] -+ [ sandbox = netcore ] -+ [ sandbox = netcore2 ] -+ [ sandbox = netcore5 ] -+ [ sandbox = netcore7 ] -+ [ sandbox = v8 ] -+ [ sandbox = nodejs ] -+ [ sandbox = typescript ] -+ [ sandbox = file ] -+ [ sandbox = rpc ] -+ [ sandbox = wasm ] -+ [ sandbox = java ] -+ [ sandbox = c ] -+ [ sandbox = cobol ] -+ [ sandbox = go ] -+ [ sandbox = rust ] -+ [ sandbox = zig ] -+ [ sandbox = scripts ] -+ [ sandbox = examples ] -+ [ sandbox = tests ] -+ [ sandbox = benchmarks ] -+ [ sandbox = ports ] -+ [ sandbox = sandbox ] -+ echo Build with sandboxing support -+ BUILD_SANDBOX=1 -+ [ sandbox = coverage ] -+ [ sandbox = address-sanitizer ] -+ [ sandbox = thread-sanitizer ] -+ [ sandbox = memory-sanitizer ] -+ [ benchmarks = debug ] -+ [ benchmarks = release ] -+ [ benchmarks = relwithdebinfo ] -+ [ benchmarks = python ] -+ [ benchmarks = ruby ] -+ [ benchmarks = netcore ] -+ [ benchmarks = netcore2 ] -+ [ benchmarks = netcore5 ] -+ [ benchmarks = netcore7 ] -+ [ benchmarks = v8 ] -+ [ benchmarks = nodejs ] -+ [ benchmarks = typescript ] -+ [ benchmarks = file ] -+ [ benchmarks = rpcBuild with sandboxing support -Build all benchmarks - ] -+ [ benchmarks = wasm ] -+ [ benchmarks = java ] -+ [ benchmarks = c ] -+ [ benchmarks = cobol ] -+ [ benchmarks = go ] -+ [ benchmarks = rust ] -+ [ benchmarks = zig ] -+ [ benchmarks = scripts ] -+ [ benchmarks = examples ] -+ [ benchmarks = tests ] -+ [ benchmarks = benchmarks ] -+ echo Build all benchmarks -+ BUILD_BENCHMARKS=1 -+ [ benchmarks = ports ] -+ [ benchmarks = sandbox ] -+ [ benchmarks = coverage ] -+ [ benchmarks = address-sanitizer ] -+ [ benchmarks = thread-sanitizer ] -+ [ benchmarks = memory-sanitizer ] -+ sub_configure -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -+ [ debian = alpine ] -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -+ [ Linux = Darwin ] -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -+ [ 0 = 1 ] -+ [ 0 = 1 ] -+ [ 0 = 1 ] -+ [ 1 = 1 ] -+ sub_find_dotnet_runtime 7 -+ dotnet --list-runtimes -+ grep -m 1 Microsoft.NETCore.App 7 -+ NETCORE_BASE_PATH=Microsoft.NETCore.App 7.0.20 [/usr/share/dotnet/shared/Microsoft.NETCore.App] -+ echo Microsoft.NETCore.App 7.0.20 [/usr/share/dotnet/shared/Microsoft.NETCore.App] -+ awk { print $3 } -+ tail -c +2 -+ head -c -2 -+ echo Microsoft.NETCore.App 7.0.20 [/usr/share/dotnet/shared/Microsoft.NETCore.App] -+ awk { print $2 } -+ echo /usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -+ [ 0 = 1 ] -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -+ [ debian = alpine ] -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -+ [ 1 = 1 ] -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -+ [ 0 = 1 ] -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -+ [ 1 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -DOPTION_BUILD_PLUGINS_SANDBOX=On -+ [ 0 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -DOPTION_BUILD_PLUGINS_SANDBOX=On -DOPTION_COVERAGE=Off -+ [ 0 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -DOPTION_BUILD_PLUGINS_SANDBOX=On -DOPTION_COVERAGE=Off -DOPTION_BUILD_ADDRESS_SANITIZER=Off -+ [ 0 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -DOPTION_BUILD_PLUGINS_SANDBOX=On -DOPTION_COVERAGE=Off -DOPTION_BUILD_ADDRESS_SANITIZER=Off -DOPTION_BUILD_THREAD_SANITIZER=Off -+ [ 0 = 1 ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -DOPTION_BUILD_PLUGINS_SANDBOX=On -DOPTION_COVERAGE=Off -DOPTION_BUILD_ADDRESS_SANITIZER=Off -DOPTION_BUILD_THREAD_SANITIZER=Off -DOPTION_BUILD_MEMORY_SANITIZER=Off -+ CMAKE_CONFIG_FILE=/usr/local/metacall/build/CMakeConfig.txt -+ [ -f /usr/local/metacall/build/CMakeConfig.txt ] -+ BUILD_STRING=-DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -DOPTION_BUILD_PLUGINS_SANDBOX=On -DOPTION_COVERAGE=Off -DOPTION_BUILD_ADDRESS_SANITIZER=Off -DOPTION_BUILD_THREAD_SANITIZER=Off -DOPTION_BUILD_MEMORY_SANITIZER=Off -DCMAKE_BUILD_TYPE=Debug -+ cmake -Wno-dev -DOPTION_GIT_HOOKS=Off -DOPTION_BUILD_LOG_PRETTY=Off -DOPTION_BUILD_LOADERS=On -DOPTION_BUILD_LOADERS_MOCK=On -DOPTION_BUILD_SCRIPTS=On -DOPTION_BUILD_LOADERS_PY=On -DOPTION_BUILD_SCRIPTS_PY=On -DOPTION_BUILD_PORTS_PY=On -DOPTION_BUILD_LOADERS_RB=On -DOPTION_BUILD_SCRIPTS_RB=On -DOPTION_BUILD_PORTS_RB=On -DOPTION_BUILD_LOADERS_CS=On -DDOTNET_CORE_PATH=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.20/ -DOPTION_BUILD_SCRIPTS_CS=On -DOPTION_BUILD_PORTS_CS=On -DOPTION_BUILD_LOADERS_NODE=On -DOPTION_BUILD_SCRIPTS_NODE=On -DOPTION_BUILD_PORTS_NODE=On -DOPTION_BUILD_LOADERS_TS=On -DOPTION_BUILD_SCRIPTS_TS=On -DOPTION_BUILD_PORTS_TS=On -DOPTION_BUILD_LOADERS_FILE=On -DOPTION_BUILD_SCRIPTS_FILE=On -DOPTION_BUILD_LOADERS_RPC=On -DOPTION_BUILD_SCRIPTS_RPC=On -DOPTION_BUILD_LOADERS_WASM=On -DOPTION_BUILD_SCRIPTS_WASM=On -DOPTION_BUILD_LOADERS_JAVA=On -DOPTION_BUILD_SCRIPTS_JAVA=On -DOPTION_BUILD_LOADERS_C=On -DOPTION_BUILD_SCRIPTS_C=On -DOPTION_BUILD_LOADERS_COB=On -DOPTION_BUILD_SCRIPTS_COB=On -DOPTION_BUILD_PORTS_GO=On -DOPTION_BUILD_LOADERS_RS=On -DOPTION_BUILD_SCRIPTS_RS=On -DOPTION_BUILD_PORTS_RS=On -DOPTION_BUILD_EXAMPLES=On -DOPTION_BUILD_TESTS=On -DOPTION_BUILD_BENCHMARKS=On -DOPTION_BUILD_PORTS=On -DOPTION_BUILD_PLUGINS_SANDBOX=On -DOPTION_COVERAGE=Off -DOPTION_BUILD_ADDRESS_SANITIZER=Off -DOPTION_BUILD_THREAD_SANITIZER=Off -DOPTION_BUILD_MEMORY_SANITIZER=Off -DCMAKE_BUILD_TYPE=Debug .. --- The C compiler identification is GNU 14.2.0 --- The CXX compiler identification is GNU 14.2.0 --- Detecting C compiler ABI info --- Detecting C compiler ABI info - done --- Check for working C compiler: /usr/bin/cc - skipped --- Detecting C compile features --- Detecting C compile features - done --- Detecting CXX compiler ABI info --- Detecting CXX compiler ABI info - done --- Check for working CXX compiler: /usr/bin/c++ - skipped --- Detecting CXX compile features --- Detecting CXX compile features - done --- Target Operative System: Linux --- Target OS Family: unix --- Linux x86_64 64bit detected -CMake Warning at CMakeLists.txt:162 (message): - Linting disabled: clang-format executable not found - - --- Lib version --- Performing Test PIC_C_FLAG --- Performing Test PIC_C_FLAG - Success --- Performing Test STACK_PROTECTOR_STRONG_C_FLAG --- Performing Test STACK_PROTECTOR_STRONG_C_FLAG - Success --- Performing Test FORTIFY_SOURCE_C_FLAG --- Performing Test FORTIFY_SOURCE_C_FLAG - Success --- Performing Test PIC_CXX_FLAG --- Performing Test PIC_CXX_FLAG - Success --- Performing Test STACK_PROTECTOR_STRONG_CXX_FLAG --- Performing Test STACK_PROTECTOR_STRONG_CXX_FLAG - Success --- Performing Test FORTIFY_SOURCE_CXX_FLAG --- Performing Test FORTIFY_SOURCE_CXX_FLAG - Success --- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY --- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success --- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY --- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success --- Performing Test COMPILER_HAS_DEPRECATED_ATTR --- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success --- Lib preprocessor --- Lib environment --- Lib format --- Lib log --- Lib memory --- Lib portability --- Lib threading --- Lib adt --- Lib filesystem --- Lib dynlink --- Lib plugin --- Lib detour --- Lib reflect --- Lib serial --- Lib configuration --- Lib loader --- Lib metacall --- Found LibFFI: /usr/lib/x86_64-linux-gnu/libffi.so --- Could NOT find LibTCC (missing: LIBTCC_LIBRARY LIBTCC_INCLUDE_DIR) --- Installing LibTCC 6ec4a10 --- Found LibClang: /usr/lib/llvm-14/lib/libclang.so --- Plugin c_loader --- Found COBOL: /usr/bin/cobc (found version "3.2.0") --- Plugin cob_loader --- Plugin cs_loader_impl implementation --- Plugin cs_loader --- Plugin ext_loader --- Plugin file_loader --- Found JNI: /usr/lib/jvm/default-java/include found components: AWT JVM --- Found Java: /usr/bin/java (found version "21.0.7") --- Plugin java_loader_bootstrap bootstrap --- Plugin java_loader --- Plugin mock_loader --- Searching NodeJS library version 115 --- NodeJS Library Found --- Found NodeJS: /usr/bin/node (found version "20.19.0") --- Found NPM: /usr/bin/npm (found version "9.2.0") --- Plugin node_loader_bootstrap bootstrap --- Plugin node_loader --- Found Python3: /usr/include/python3.13d (found version "3.13.2") found components: Development Development.Module Development.Embed --- Plugin py_loader --- Found Ruby: /usr/bin/ruby (found suitable version "3.3.7", minimum required is "1.8.0") --- Plugin rb_loader -CMake Warning at source/loaders/rs_loader/CMakeLists.txt:8 (message): - Rust loader is out of date, needs to be updated in order to work - - --- Found CURL: /usr/lib/x86_64-linux-gnu/libcurl.so (found version "8.13.0") --- Plugin rpc_loader --- Plugin ts_loader_bootstrap bootstrap --- Plugin ts_loader --- Wasmtime C API library or headers not found, downloading from archive --- [download 0% complete] --- [download 1% complete] --- [download 2% complete] --- [download 3% complete] --- [download 4% complete] --- [download 5% complete] --- [download 6% complete] --- [download 7% complete] --- [download 8% complete] --- [download 9% complete] --- [download 10% complete] --- [download 11% complete] --- [download 12% complete] --- [download 13% complete] --- [download 14% complete] --- [download 15% complete] --- [download 16% complete] --- [download 17% complete] --- [download 18% complete] --- [download 19% complete] --- [download 20% complete] --- [download 21% complete] --- [download 22% complete] --- [download 23% complete] --- [download 24% complete] --- [download 25% complete] --- [download 26% complete] --- [download 27% complete] --- [download 28% complete] --- [download 29% complete] --- [download 30% complete] --- [download 31% complete] --- [download 32% complete] --- [download 33% complete] --- [download 34% complete] --- [download 35% complete] --- [download 36% complete] --- [download 37% complete] --- [download 38% complete] --- [download 39% complete] --- [download 40% complete] --- [download 41% complete] --- [download 42% complete] --- [download 43% complete] --- [download 44% complete] --- [download 45% complete] --- [download 46% complete] --- [download 47% complete] --- [download 48% complete] --- [download 49% complete] --- [download 50% complete] --- [download 51% complete] --- [download 52% complete] --- [download 53% complete] --- [download 54% complete] --- [download 55% complete] --- [download 56% complete] --- [download 57% complete] --- [download 58% complete] --- [download 59% complete] --- [download 60% complete] --- [download 61% complete] --- [download 62% complete] --- [download 63% complete] --- [download 64% complete] --- [download 65% complete] --- [download 66% complete] --- [download 67% complete] --- [download 68% complete] --- [download 69% complete] --- [download 70% complete] --- [download 71% complete] --- [download 72% complete] --- [download 73% complete] --- [download 74% complete] --- [download 75% complete] --- [download 76% complete] --- [download 77% complete] --- [download 78% complete] --- [download 79% complete] --- [download 80% complete] --- [download 81% complete] --- [download 82% complete] --- [download 83% complete] --- [download 84% complete] --- [download 85% complete] --- [download 86% complete] --- [download 87% complete] --- [download 88% complete] --- [download 89% complete] --- [download 90% complete] --- [download 91% complete] --- [download 92% complete] --- [download 93% complete] --- [download 94% complete] --- [download 95% complete] --- [download 96% complete] --- [download 97% complete] --- [download 98% complete] --- [download 99% complete] --- [download 100% complete] --- Found Wasmtime: /usr/local/metacall/build/wasmtime/wasmtime-v8.0.1-x86_64-linux-c-api/lib/libwasmtime.so (found suitable version "8.0.1", minimum required is "8.0.1") --- Plugin wasm_loader --- Serial metacall_serial --- Found RapidJSON header files in /usr/local/include --- Serial rapid_json_serial --- Detour plthook_detour --- Extension plugin_extension --- Found libdw: /usr/lib/x86_64-linux-gnu/libdw.so --- Could NOT find libbfd (missing: LIBBFD_LIBRARY LIBBFD_INCLUDE_DIR) --- Could NOT find libdwarf (missing: LIBDWARF_LIBRARY LIBDWARF_INCLUDE_DIR) --- Found Backward: /usr/local/metacall/build/_deps/backwardcpp-src --- Could NOT find libbfd (missing: LIBBFD_LIBRARY LIBBFD_INCLUDE_DIR) --- Could NOT find libdwarf (missing: LIBDWARF_LIBRARY LIBDWARF_INCLUDE_DIR) --- Could NOT find libbfd (missing: LIBBFD_LIBRARY LIBBFD_INCLUDE_DIR) --- Could NOT find libdwarf (missing: LIBDWARF_LIBRARY LIBDWARF_INCLUDE_DIR) --- Found Backward: /usr/local/metacall/build/_deps/backwardcpp-src --- Plugin backtrace_plugin --- Found LibSecComp: /usr/lib/x86_64-linux-gnu/libseccomp.so (Required is at least version "2") --- Plugin sandbox_plugin --- Port node_port --- Found Python: /usr/bin/python3 (found version "3.13.2") found components: Interpreter --- Test node_port_test --- Test node_port_test_executable --- Port py_port --- Found Python3: /usr/bin/python3 (found version "3.13.2") found components: Interpreter --- The Golang compiler identification is go1.24.2 linux/amd64 --- Check for working Golang compiler: /usr/bin/go --- Port go_port --- Found Rust: /root/.cargo/bin/cargo (found version "1.86.0") --- Port rs_port - Updating crates.io index - Downloading crates ... - Downloaded bindgen-cli v0.71.1 - Installing bindgen-cli v0.71.1 - Updating crates.io index - Locking 59 packages to latest compatible versions - Adding env_logger v0.10.2 (available: v0.11.8) - Downloading crates ... - Downloaded anstyle-parse v0.2.6 - Downloaded bitflags v2.9.0 - Downloaded anstream v0.6.18 - Downloaded cfg-if v1.0.0 - Downloaded is-terminal v0.4.16 - Downloaded anstyle-query v1.1.2 - Downloaded is_terminal_polyfill v1.70.1 - Downloaded anstyle v1.0.10 - Downloaded strsim v0.11.1 - Downloaded clap_lex v0.7.4 - Downloaded utf8parse v0.2.2 - Downloaded termcolor v1.4.1 - Downloaded quote v1.0.40 - Downloaded libloading v0.8.6 - Downloaded unicode-ident v1.0.18 - Downloaded colorchoice v1.0.3 - Downloaded prettyplease v0.2.32 - Downloaded minimal-lexical v0.2.1 - Downloaded memchr v2.7.4 - Downloaded nom v7.1.3 - Downloaded itertools v0.13.0 - Downloaded clap_builder v4.5.35 - Downloaded aho-corasick v1.1.3 - Downloaded clap v4.5.35 - Downloaded bindgen v0.71.1 - Downloaded clang-sys v1.8.1 - Downloaded proc-macro2 v1.0.94 - Downloaded regex v1.11.1 - Downloaded unicode-width v0.2.0 - Downloaded syn v2.0.100 - Downloaded log v0.4.27 - Downloaded clap_complete v4.5.47 - Downloaded regex-syntax v0.8.5 - Downloaded clap_derive v4.5.32 - Downloaded cexpr v0.6.0 - Downloaded heck v0.5.0 - Downloaded glob v0.3.2 - Downloaded env_logger v0.10.2 - Downloaded shlex v1.3.0 - Downloaded rustc-hash v2.1.1 - Downloaded annotate-snippets v0.11.5 - Downloaded humantime v2.2.0 - Downloaded either v1.15.0 - Downloaded regex-automata v0.4.9 - Downloaded libc v0.2.171 - Compiling proc-macro2 v1.0.94 - Compiling memchr v2.7.4 - Compiling unicode-ident v1.0.18 - Compiling anstyle v1.0.10 - Compiling libc v0.2.171 - Compiling utf8parse v0.2.2 - Compiling anstyle-query v1.1.2 - Compiling is_terminal_polyfill v1.70.1 - Compiling colorchoice v1.0.3 - Compiling glob v0.3.2 - Compiling clap_lex v0.7.4 - Compiling strsim v0.11.1 - Compiling prettyplease v0.2.32 - Compiling regex-syntax v0.8.5 - Compiling heck v0.5.0 - Compiling minimal-lexical v0.2.1 - Compiling cfg-if v1.0.0 - Compiling bindgen v0.71.1 - Compiling unicode-width v0.2.0 - Compiling log v0.4.27 - Compiling either v1.15.0 - Compiling humantime v2.2.0 - Compiling libloading v0.8.6 - Compiling anstyle-parse v0.2.6 - Compiling bitflags v2.9.0 - Compiling termcolor v1.4.1 - Compiling shlex v1.3.0 - Compiling rustc-hash v2.1.1 - Compiling anstream v0.6.18 - Compiling itertools v0.13.0 - Compiling annotate-snippets v0.11.5 - Compiling clang-sys v1.8.1 - Compiling clap_builder v4.5.35 - Compiling aho-corasick v1.1.3 - Compiling nom v7.1.3 - Compiling quote v1.0.40 - Compiling syn v2.0.100 - Compiling is-terminal v0.4.16 - Compiling regex-automata v0.4.9 - Compiling cexpr v0.6.0 - Compiling clap_derive v4.5.32 - Compiling regex v1.11.1 - Compiling env_logger v0.10.2 - Compiling clap v4.5.35 - Compiling clap_complete v4.5.47 - Compiling bindgen-cli v0.71.1 - Finished `release` profile [optimized] target(s) in 31.97s - Installing /root/.cargo/bin/bindgen - Installed package `bindgen-cli v0.71.1` (executable `bindgen`) --- Found SWIG: /usr/bin/swig (found version "4.3.0") --- Port rb_port --- Script compiled --- Script ffi --- Script cbks --- Script loadtest --- Script say --- Script hello --- Script static --- Script function --- Script sum_extension --- Script static --- Script favicon --- Script glob --- Script fibonnaci --- Script jartest --- Script test --- Script nod --- Script inline --- Script export --- Script host --- Script server --- Script factcallback --- Script derpyramda --- Script gram --- Script duplicated --- Script ramda --- Script example --- Script helloworld --- Script initfini --- Script callback --- Script function --- Script ducktype --- Script rsasample --- Script garbage --- Script classname --- Script web --- Script landing --- Script model --- Script pointer --- Script dicty --- Script host --- Script s1 --- Script s2 --- Script withoutfunctions --- Script wasm --- Script badimport --- Script watzon --- Script fnmesh --- Script hello --- Script second --- Script blog --- Script cache --- Script ducktype --- Script invalid --- Script klass --- Script failempty --- Script remote --- Script typedfunc --- Script templating --- Script loopfail --- Script badrequire --- Script server --- Script tests --- Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY) (Required is at least version "1.11.0") --- Performing Test CMAKE_HAVE_LIBC_PTHREAD --- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success --- Found Threads: TRUE --- Install Google Test v1.11.0 --- Test preprocessor-test --- Test environment-test --- Test log-test --- Test log-custom-test --- Test adt-set-test --- Test adt-trie-test --- Test adt-vector-test --- Test adt-map-test --- Test reflect-value-cast-test --- Test reflect-function-test --- Test reflect-object-class-test --- Test reflect-scope-test --- Test reflect-metadata-test --- Test dynlink-test --- Test detour-test --- Test serial-test --- Test configuration-test --- Test rb-loader-parser-test --- Test portability-path-test --- Test metacall-logs-test --- Test metacall-load-memory-test --- Test metacall-load-memory-empty-test --- Test metacall-load-configuration-test --- Test metacall-load-configuration-fail-test --- Test metacall-load-configuration-relative-test --- Test metacall-load-configuration-python-node-test --- Test metacall-load-configuration-node-python-test --- Test metacall-duplicated-handle-test --- Test metacall-duplicated-symbols-test --- Test metacall-handle-export-test --- Test metacall-handle-get-test --- Test metacall-test --- Test metacall-node-test --- Test metacall-node-event-loop-test --- Test metacall-node-event-loop-signal-test --- Test metacall-node-call-test --- Test metacall-node-inline-test --- Test metacall-node-async-test --- Test metacall-node-async-multiple-test --- Test metacall-node-reentrant-test --- Test metacall-node-port-test --- Test metacall-node-port-await-test --- Found LibGit2: /usr/lib/x86_64-linux-gnu/libgit2.so (found version "1.8.4") --- Test metacall-node-port-c-lib-test --- Test metacall-node-python-port-mock-test --- Test metacall-node-python-port-ruby-test --- Searching NodeJS library version 115 --- NodeJS Library Found --- Test metacall-node-python-ruby-test --- Test metacall-node-callback-test --- Test metacall-node-fail-test --- Test metacall-node-fail-env-var-test --- Test metacall-node-fail-load-leak-test --- Test metacall-node-typescript-test --- Test metacall-node-python-async-after-destroy-test --- Test metacall-node-python-await-test --- Test metacall-node-python-exception-test --- Test metacall-node-clear-mem-test --- Test metacall-node-async-resources-test --- Test metacall-node-await-chain-test --- Test metacall-node-exception-test --- Test metacall-node-python-deadlock-test --- Test metacall-node-native-code-test --- Test metacall-node-extension-test --- Searching NodeJS library version 115 --- NodeJS Library Found --- Script node_extension_test --- Test metacall-node-multithread-deadlock-test --- Test metacall-distributable-test --- Test metacall-cast-test --- Test metacall-init-fini-test --- Test metacall-ducktype-test --- Test metacall-inspect-test --- Test metacall-integration-test --- Test metacall-depends-test --- Test metacall-configuration-exec-path-test --- Test metacall-configuration-default-test --- Test metacall-clear-test --- Test metacall-python-test --- Test metacall-python-object-class-test --- Test metacall-python-gc-test --- Test metacall-python-open-test --- Test metacall-python-dict-test --- Test metacall-python-pointer-test --- Test metacall-python-reentrant-test --- Test metacall-python-varargs-test --- Test py-loader-port-test --- Test metacall-python-port-https-test --- Test metacall-python-port-callback-test --- Test metacall-python-port-pointer-test --- Test metacall-python-port-import-test --- Test metacall-python-callback-test --- Test metacall-python-fail-test --- Test metacall-python-relative-path-test --- Test metacall-python-without-functions-test --- Test metacall-python-builtins-test --- Test metacall-python-async-test --- Test metacall-python-exception-test --- Test metacall-python-without-env-vars-test --- Test metacall-map-test --- Test metacall-map-await-test --- Test metacall-initialize-test --- Test metacall-initialize-ex-test --- Test metacall-reinitialize-test --- Test metacall-initialize-destroy-multiple-test --- Test metacall-initialize-destroy-multiple-node-test --- Test metacall-reload-functions-test --- Test metacall-invalid-loader-test --- Test metacall-fork-test --- Test metacall-return-monad-test --- Test metacall-callback-complex-test --- Test metacall-ruby-fail-test --- Test metacall-ruby-fail-empty-test --- Test metacall-ruby-object-class-test --- Test metacall-ruby-parser-integration-test --- Test metacall-function-test --- Test metacall-cobol-test --- Test metacall-file-test --- Test metacall-file-fail-test --- Test metacall-file-glob-test --- Test metacall-typescript-test --- Test metacall-typescript-node-test --- Test metacall-typescript-call-map-test --- Test metacall-typescript-tsx-test --- Test metacall-typescript-tsx-loop-fail-test --- Test metacall-typescript-require-test --- Test metacall-typescript-jsx-default-test --- Test metacall-rpc-test --- Test metacall-csharp-static-class-test --- Test metacall-ruby-test --- Test metacall-cs-test --- Test metacall-java-test --- Test metacall-wasm-test --- Test metacall-wasm-python-port-test --- Test metacall-c-test --- Test metacall-c-lib-test --- Test metacall-version-test --- Test metacall-dynlink-path-test --- Test metacall-library-path-without-env-vars-test --- Test metacall-ext-test --- Test metacall-plugin-extension-test --- Test metacall-plugin-extension-local-test --- Test metacall-backtrace-plugin-test --- Test metacall-sandbox-plugin-test --- Could NOT find GBench (missing: GBENCH_INCLUDE_DIR GBENCH_LIBRARY) --- Install Google Benchmark v1.6.1 --- Benchmark log-bench --- Found Python3: /usr/include/python3.13d (found version "3.13.2") found components: Development Development.Module Development.Embed --- Benchmark metacall-py-c-api-bench --- Benchmark metacall-py-call-bench --- Benchmark metacall-py-init-bench --- Benchmark metacall-node-call-bench --- Benchmark metacall-rb-call-bench --- Benchmark metacall-cs-call-bench --- CLI metacallcli --- Searching NodeJS library version 115 --- NodeJS Library Found --- Plugin cli_repl_plugin --- Searching NodeJS library version 115 --- NodeJS Library Found --- Plugin cli_core_plugin --- Plugin cli_cmd_plugin --- Plugin cli_sandbox_plugin --- Example metacalllog --- Configuring done (84.4s) --- Generating done (1.1s) --- Build files have been written to: /usr/local/metacall/build -Removing intermediate container 84f6a9010292 - ---> d5122ec3833c -Step 11/11 : RUN cd $METACALL_PATH/build && $METACALL_PATH/tools/metacall-build.sh ${METACALL_BUILD_TYPE} ${METACALL_BUILD_OPTIONS} - ---> Running in 8fc0ef566964 -+ BUILD_TYPE=Release -+ BUILD_TESTS=0 -+ BUILD_BENCHMARKS=0 -+ BUILD_COVERAGE=0 -+ BUILD_INSTALL=0 -Current option settings -errexit on -noglob off -ignoreeof off -interactive off -monitor off -noexec off -stdin off -xtrace on -verbose off -vi off -emacs off -noclobber off -allexport off -notify off -nounset on -privileged off -nolog off -pipefail off -debug off -+ id -u -+ [ 0 = 0 ] -+ SUDO_CMD= -+ sub_options debug python ruby netcore7 nodejs typescript file rpc wasm java c cobol go rust examples tests scripts ports install pack sandbox benchmarks -+ [ debug = debug ] -+ echo Build all scripts in debug mode -+ BUILD_TYPE=Debug -+ [ debug = release ] -+ [Build all scripts in debug mode - debug = relwithdebinfo ] -+ [ debug = tests ] -+ [ debug = benchmarks ] -+ [ debug = coverage ] -+ [ debug = install ] -+ [ python = debug ] -+ [ python = release ] -+ [ python = relwithdebinfo ] -+ [ python = tests ] -+ [ python = benchmarks ] -+ [ python = coverage ] -+ [ python = install ] -+ [ ruby = debug ] -+ [ ruby = release ] -+ [ ruby = relwithdebinfo ] -+ [ ruby = tests ] -+ [ ruby = benchmarks ] -+ [ ruby = coverage ] -+ [ ruby = install ] -+ [ netcore7 = debug ] -+ [ netcore7 = release ] -+ [ netcore7 = relwithdebinfo ] -+ [ netcore7 = tests ] -+ [ netcore7 = benchmarks ] -+ [ netcore7 = coverage ] -+ [ netcore7 = install ] -+ [ nodejs = debug ] -+ [ nodejs = release ] -+ [ nodejs = relwithdebinfo ] -+ [ nodejs = tests ] -+ [ nodejs = benchmarks ] -+ [ nodejs = coverage ] -+ [ nodejs = install ] -+ [ typescript = debug ] -+ [ typescript = release ] -+ [ typescript = relwithdebinfo ] -+ [ typescript = tests ] -+ [ typescript = benchmarks ] -+ [ typescript = coverage ] -+ [ typescript = install ] -+ [ file = debug ] -+ [ file = release ] -+ [ file = relwithdebinfo ] -+ [ file = tests ] -+ [ file = benchmarks ] -+ [ file = coverage ] -+ [ file = install ] -+ [ rpc = debug ] -+ [ rpc = release ] -+ [ rpc = relwithdebinfo ] -+ [ rpc = tests ] -+ [ rpc = benchmarks ] -+ [ rpc = coverage ] -+ [ rpc = install ] -+ [ wasm = debug ] -+ [ wasm = release ] -+ [ wasm = relwithdebinfo ] -+ [ wasm = tests ] -+ [ wasm = benchmarks ] -+ [ wasm = coverage ] -+ [ wasm = install ] -+ [ java = debug ] -+ [ java = release ] -+ [ java = relwithdebinfo ] -+ [ java = tests ] -+ [ java = benchmarks ] -+ [ java = coverage ] -+ [ java = install ] -+ [ c = debug ] -+ [ c = release ] -+ [ c = relwithdebinfo ] -+ [ c = tests ] -+ [ c = benchmarks ] -+ [ c = coverage ] -+ [ c = install ] -+ [ cobol = debug ] -+ [ cobol = release ] -+ [ cobol = relwithdebinfo ] -+ [ cobol = tests ] -+ [ cobol = benchmarks ] -+ [ cobol = coverage ] -+ [ cobol = install ] -+ [ go = debug ] -+ [ go = release ] -+ [ go = relwithdebinfo ] -+ [ go = tests ] -+ [ go = benchmarks ] -+ [ go = coverage ] -+ [ go = install ] -+ [ rust = debug ] -+ [ rust = release ] -+ [ rust = relwithdebinfo ] -+ [ rust = tests ] -+ [ rust = benchmarks ] -+ [ rust = coverage ] -+ [ rust = install ] -+ [ examples = debug ] -+ [ examples = release ] -+ [ examples = relwithdebinfo ] -+ [ examples = tests ] -+ [ examples = benchmarks ] -+ [ examples = coverage ] -+ [ examples = install ] -+ [ tests = debug ] -+ [ tests = release ] -+ [ tests = relwithdebinfo ] -+ [ tests = tests ] -+ echo Build and run all tests -+ BUILD_TESTS=1 -+ [ tests = benchmarks ] -+ [ tests = coverage ] -+ [ tests = install ] -+ [ scripts = debug ] -+ [ scripts = release ] -+ [ scripts = relwithdebinfo ] -+ [ scripts = tests ] -+ [ scripts = benchmarks ] -+ [ scripts = coverage ] -+ [ scripts = install ] -+ [ ports = debug ] -+ [ ports = release ] -+ [ ports = relwithdebinfo ] -+ [ ports = tests ] -+ [ ports = benchmarks ] -+ [ ports = coverage ] -+ [ ports = install ] -+ [ install = debug ] -+ [ install = release ] -+ [ install = relwithdebinfo ] -+ [ install = tests ] -+ Build and run all tests -[ install = benchmarks ] -+ [ install = coverage ] -+ [ install = install ] -+ echo Install all libraries -+ BUILD_INSTALL=1 -+ [ pack = debug ] -+ [ pack = release ] -+ [ pack = relwithdebinfo ] -+ [ pack = tests ] -+ [ pack = benchmarks ] -+ [ pack = coverage ] -+ [ pack = install ] -+ [ sandbox = debug ] -+ [ sandbox = release ] -+ [ sandbox = relwithdebinfo ] -+ [ sandbox = tests ] -+ [ sandbox = benchmarks ] -+ [ sandbox = coverage ] -+ [ sandbox = install ] -+ [ benchmarks = debug ] -+ [ benchmarks = release ] -+ [ benchmarks = relwithdebinfo ] -+ [ benchmarks = tests ] -+ [ benchmarks = benchmarks ] -+ echo Build and run all benchmarks -+ BUILD_BENCHMARKS=1 -+ [ benchmarks = coverage ] -+ [ benchmarks = install ] -+ sub_build -Install all libraries -Build and run all benchmarks -+ getconf _NPROCESSORS_ONLN -+ make -j24 -[ 0%] Building C object source/version/CMakeFiles/version.dir/source/version.c.o -Installing node_loader_bootstrap dependencies -[ 0%] Creating directories for 'libtcc-depends' -[ 0%] Building CXX object source/scripts/c/loadtest/CMakeFiles/loadtest.dir/source/loadtest.cpp.o -[ 1%] Building CXX object _deps/backwardcpp-build/CMakeFiles/backward.dir/backward.cpp.o -[ 2%] Building C object source/metacall/CMakeFiles/metacall.dir/__/version/source/version.c.o -[ 3%] Swig compile /usr/local/metacall/source/ports/rb_port/interface/rb_port/rb_port.i for ruby -Installing ts_loader_bootstrap dependencies -[ 3%] Built target c-ffi -[ 3%] Building CXX object _deps/backwardcpp-build/CMakeFiles/backward_object.dir/backward.cpp.o -[ 3%] Built target c-cbks -[ 3%] Built target c-compiled -[ 3%] Built target file-glob -[ 3%] Built target csharp-function -[ 3%] Built target file-static -[ 3%] Built target file-favicon -[ 3%] Built target sandbox_plugin_config -[ 3%] Built target c-loadtest -[ 3%] Built target backtrace_plugin_config -[ 3%] Built target csharp-static -[ 3%] Built target csharp-hello -[ 3%] Building C object source/metacall/CMakeFiles/metacall.dir/__/preprocessor/source/preprocessor.c.o -[ 3%] Building C object source/metacall/CMakeFiles/metacall.dir/__/environment/source/environment.c.o -[ 3%] Performing download step (download, verify and extract) for 'libtcc-depends' --- Downloading... - dst='/usr/local/metacall/build/source/loaders/c_loader/libtcc-depends-prefix/src/tinycc.tar.gz' - timeout='none' - inactivity timeout='none' --- Using src='https://github.com/metacall/tinycc/archive/6ec4a10.tar.gz' -[ 3%] Building C object source/metacall/CMakeFiles/metacall.dir/__/environment/source/environment_variable.c.o -[ 3%] Built target java-test -[ 3%] Built target java-jartest -[ 3%] Building C object source/metacall/CMakeFiles/metacall.dir/__/environment/source/environment_variable_path.c.o -[ 3%] Built target nodejs-nod -[ 3%] Built target java-fibonnaci -[ 3%] Linking CXX shared library ../../libversiond.so -[ 3%] Built target nodejs-inline -[ 3%] Built target nodejs-server -[ 3%] Built target nodejs-factcallback -[ 3%] Building C object source/metacall/CMakeFiles/metacall.dir/__/format/source/format.c.o -[ 3%] Built target nodejs-host -[ 3%] Built target nodejs-export -[ 3%] Built target nodejs-derpyramda -[ 3%] Building C object source/metacall/CMakeFiles/metacall.dir/__/threading/source/threading.c.o -[ 3%] Built target python-example -[ 3%] Building C object source/metacall/CMakeFiles/metacall.dir/__/threading/source/threading_thread_id.c.o -[ 3%] Built target nodejs-duplicated -[ 3%] Built target python-callback -[ 3%] Built target python-initfini -[ 3%] Built target python-ducktype -[ 4%] Building C object source/metacall/CMakeFiles/metacall.dir/__/threading/source/threading_mutex_pthread.c.o -[ 4%] Built target version -[ 4%] Built target python-function -[ 4%] Built target python-helloworld -[ 4%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log.c.o -[ 4%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_map.c.o -[ 4%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_valid_size.c.o -[ 4%] Built target cobol-say -[ 5%] Linking CXX shared library ../../../../scripts/libloadtest.so -[ 5%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_level.c.o -[ 5%] Built target python-garbage -[ 5%] Built target python-rsasample -[ 5%] Built target python-classname -/usr/local/metacall/source/metacall/include/metacall/metacall.h:61: Warning 801: Wrong class name (corrected to `Metacall_initialize_configuration_type') -/usr/local/metacall/source/metacall/include/metacall/metacall.h:61: Warning 801: Wrong class name (corrected to `Metacall_initialize_configuration_type') -/usr/local/metacall/source/metacall/include/metacall/metacall.h:62: Warning 451: Setting a const char * variable may leak memory. -/usr/local/metacall/source/metacall/include/metacall/metacall.h:69: Warning 801: Wrong class name (corrected to `Metacall_await_callbacks') -/usr/local/metacall/source/metacall/include/metacall/metacall.h:69: Warning 801: Wrong class name (corrected to `Metacall_await_callbacks') -[ 5%] Built target python-web -/usr/local/metacall/source/metacall/include/metacall/metacall.h:76: Warning 801: Wrong class name (corrected to `Metacall_version_type') -/usr/local/metacall/source/metacall/include/metacall/metacall.h:76: Warning 801: Wrong class name (corrected to `Metacall_version_type') -[ 5%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_record.c.o -[ 5%] Built target python-model - -/usr/local/metacall/source/metacall/include/metacall/metacall.h:80: Warning 451: Setting a const char * variable may leak memory. -Welcome to .NET 7.0! ---------------------- -SDK Version: 7.0.410 - ----------------- -Installed an ASP.NET Core HTTPS development certificate. -To trust the certificate run 'dotnet dev-certs https --trust' (Windows and macOS only). -Learn about HTTPS: https://aka.ms/dotnet-https ----------------- -Write your first app: https://aka.ms/dotnet-hello-world -Find out what's new: https://aka.ms/dotnet-whats-new -Explore documentation: https://aka.ms/dotnet-docs -Report issues and find source on GitHub: https://github.com/dotnet/core -Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli --------------------------------------------------------------------------------------- -/usr/local/metacall/source/metacall/include/metacall/metacall.h:81: Warning 451: Setting a const char * variable may leak memory. -/usr/local/metacall/source/metacall/include/metacall/metacall.h:82: Warning 451: Setting a const char * variable may leak memory. -[ 5%] Built target python-landing -[ 5%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_handle.c.o -[ 6%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy.c.o -[ 6%] Built target python-dicty -[ 6%] Built target python-pointer -[ 6%] Built target python-s1 -[ 6%] Built target python-host -[ 6%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_aspect.c.o -[ 6%] Built target python-s2 -[ 6%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_singleton.c.o -[ 6%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_impl.c.o -[ 6%] Built target python-withoutfunctions -[ 6%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_format.c.o -[ 6%] Built target python-wasm -[ 6%] Built target rb_port_swig_compilation -[ 6%] Built target python-badimport -[ 6%] Built target loadtest -[ 6%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_format_binary.c.o -[ 6%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_format_custom.c.o -[ 6%] Built target python-fnmesh -[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_schedule.c.o -[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_format_text.c.o -[ 7%] Built target ruby-hello -[ 7%] Built target python-watzon -[ 7%] Built target ruby-second -[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_schedule_async.c.o -[ 7%] Built target ruby-blog -[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_schedule_sync.c.o -[ 7%] Built target ruby-ducktype -[ 7%] Built target ruby-invalid -[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_storage.c.o -[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_storage_batch.c.o -[ 7%] Built target ruby-klass -[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_storage_sequential.c.o -[ 7%] Built target ruby-failempty -[ 7%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_stream.c.o -[ 7%] Built target ruby-cache -[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_stream_file.c.o -[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_stream_custom.c.o -[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_stream_nginx.c.o -[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_stream_socket.c.o -[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_stream_stdio.c.o -[ 8%] Built target rpc-remote -[ 8%] Built target typescript-typedfunc -[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_aspect_format.c.o -[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_policy_stream_syslog.c.o -[ 8%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_aspect_schedule.c.o -[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_aspect_storage.c.o -[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/log/source/log_aspect_stream.c.o -[ 9%] Built target typescript-loopfail -[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/memory/source/memory.c.o -[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/memory/source/memory_allocator.c.o -[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/memory/source/memory_allocator_std_impl.c.o -[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/memory/source/memory_allocator_nginx.c.o -[ 9%] Built target typescript-badrequire -[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/memory/source/memory_allocator_std.c.o -[ 9%] Built target typescript-server -[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/memory/source/memory_allocator_nginx_impl.c.o -[ 9%] Building C object source/metacall/CMakeFiles/metacall.dir/__/portability/source/portability.c.o --- verifying file... - file='/usr/local/metacall/build/source/loaders/c_loader/libtcc-depends-prefix/src/tinycc.tar.gz' --- Downloading... done -[ 9%] Creating directories for 'google-test-depends' -[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/portability/source/portability_executable_path.c.o -[ 10%] Building C object source/tests/metacall_node_extension_test/node_extension_test/CMakeFiles/node_extension_test.dir/source/node_extension_test.c.o -[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/portability/source/portability_working_path.c.o -[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/portability/source/portability_atexit.c.o -[ 10%] Built target wasm-tests -[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/portability/source/portability_library_path.c.o -[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt.c.o -[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/portability/source/portability_path.c.o -[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/portability/source/portability_dependency.c.o -[ 10%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt_comparable.c.o -[ 11%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt_hash.c.o --- extracting... - src='/usr/local/metacall/build/source/loaders/c_loader/libtcc-depends-prefix/src/tinycc.tar.gz' - dst='/usr/local/metacall/build/source/loaders/c_loader/libtcc-depends-prefix/src/libtcc-depends' --- extracting... [tar xfz] -[ 12%] Performing download step (git clone) for 'google-test-depends' -[ 12%] Linking CXX shared module ../../../../node_extension_test.node -[ 12%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt_set.c.o -[ 12%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt_map.c.o -[ 12%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt_bucket.c.o -[ 12%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt_vector.c.o -Cloning into 'google-test-depends'... --- extracting... [analysis] --- extracting... [rename] --- extracting... [clean up] --- extracting... done -[ 12%] Building C object source/metacall/CMakeFiles/metacall.dir/__/filesystem/source/filesystem.c.o -[ 12%] Building C object source/metacall/CMakeFiles/metacall.dir/__/filesystem/source/filesystem_file_descriptor.c.o -[ 12%] Building C object source/metacall/CMakeFiles/metacall.dir/__/adt/source/adt_trie.c.o -[ 13%] Creating directories for 'google-bench-depends' -[ 13%] No update step for 'libtcc-depends' -[ 14%] Building C object source/metacall/CMakeFiles/metacall.dir/__/filesystem/source/filesystem_directory_descriptor.c.o -[ 14%] Built target metacallcli-scripts-tests -[ 14%] Performing download step (download, verify and extract) for 'google-bench-depends' --- Downloading... - dst='/usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/src/GBench-1.6.1.tar.gz' - timeout='none' - inactivity timeout='none' --- Using src='https://github.com/google/benchmark/archive/v1.6.1.tar.gz' -[ 14%] No patch step for 'libtcc-depends' -[ 14%] Building C object source/metacall/CMakeFiles/metacall.dir/__/dynlink/source/dynlink.c.o -[ 14%] Built target cli_core_plugin_config -[ 14%] Building C object source/metacall/CMakeFiles/metacall.dir/__/dynlink/source/dynlink_impl.c.o -[ 14%] Built target cli_sandbox_plugin_config -[ 14%] Building C object source/metacall/CMakeFiles/metacall.dir/__/dynlink/source/dynlink_interface.c.o -[ 14%] Performing configure step for 'libtcc-depends' -[ 14%] Building C object source/preprocessor/CMakeFiles/preprocessor.dir/source/preprocessor.c.o -[ 14%] Building C object source/metacall/CMakeFiles/metacall.dir/__/plugin/source/plugin.c.o -[ 14%] Building C object source/metacall/CMakeFiles/metacall.dir/__/dynlink/source/dynlink_impl_unix.c.o -[ 14%] Building C object source/format/CMakeFiles/format.dir/source/format.c.o - -up to date, audited 5 packages in 658ms - -1 package is looking for funding - run `npm fund` for details - -found 0 vulnerabilities -[ 14%] Building C object source/metacall/CMakeFiles/metacall.dir/__/plugin/source/plugin_descriptor.c.o -[ 14%] Linking CXX shared library ../../libpreprocessord.so -[ 14%] Built target node_loader_bootstrap_depends -[ 15%] Building C object source/metacall/CMakeFiles/metacall.dir/__/plugin/source/plugin_loader.c.o -[ 15%] Building C object source/metacall/CMakeFiles/metacall.dir/__/plugin/source/plugin_impl.c.o -[ 15%] Building C object source/metacall/CMakeFiles/metacall.dir/__/plugin/source/plugin_manager.c.o -[ 15%] Building C object source/metacall/CMakeFiles/metacall.dir/__/detour/source/detour.c.o -Binary directory /usr/local/metacall/build/libtcc/bin -TinyCC directory /usr/local/metacall/build/libtcc/lib/tcc -Library directory /usr/local/metacall/build/libtcc/lib -Include directory /usr/local/metacall/build/libtcc/include -Manual directory /usr/local/metacall/build/libtcc/share/man -Info directory /usr/local/metacall/build/libtcc/share/info -Doc directory /usr/local/metacall/build/libtcc/share/doc -Source path /usr/local/metacall/build/source/loaders/c_loader/libtcc-depends-prefix/src/libtcc-depends - -up to date, audited 3 packages in 530ms -Build OS Linux x86_64 -C compiler gcc (14.2) -Target OS Linux -CPU x86_64 -Triplet x86_64-linux-gnu -Config debug static=no selinux -Creating config.mak and config.h -[ 15%] Linking CXX shared library ../../libformatd.so - -found 0 vulnerabilities -[ 15%] Building C object source/threading/CMakeFiles/threading.dir/source/threading.c.o -[ 15%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect.c.o -[ 15%] Built target preprocessor -Copying node_loader_bootstrap dependencies -[ 15%] Built target ts_loader_bootstrap_depends -[ 15%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_type.c.o -[ 15%] Performing build step for 'libtcc-depends' -make[3]: warning: -j24 forced in submake: resetting jobserver mode. -[ 15%] Building C object source/threading/CMakeFiles/threading.dir/source/threading_thread_id.c.o -[ 15%] Building C object source/threading/CMakeFiles/threading.dir/source/threading_mutex_pthread.c.o -[ 15%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_type_id.c.o -[ 16%] Building C object source/environment/CMakeFiles/environment.dir/source/environment.c.o -[ 16%] Built target node_extension_test -[ 16%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_signature.c.o -[ 16%] Linking CXX shared library ../../libthreadingd.so -[ 16%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_function.c.o -[ 17%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_attribute.c.o -[ 17%] Built target format -node_loader_bootstrap dependencies copied from /usr/local/metacall/source/loaders/node_loader/bootstrap/node_modules to /usr/local/metacall/build/node_modules -[ 17%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_constructor.c.o -[ 17%] Building C object source/environment/CMakeFiles/environment.dir/source/environment_variable.c.o -[ 17%] Built target node_loader_bootstrap_copy_depends -[ 17%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_memory_tracker.c.o -[ 18%] Building C object source/portability/CMakeFiles/portability.dir/source/portability.c.o - -up to date, audited 2 packages in 754ms - -found 0 vulnerabilities -[ 18%] Building C object source/portability/CMakeFiles/portability.dir/source/portability_executable_path.c.o -[ 18%] Building C object source/portability/CMakeFiles/portability.dir/source/portability_library_path.c.o --- verifying file... - file='/usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/src/GBench-1.6.1.tar.gz' --- Downloading... done -[ 18%] Built target nodejs-ramda-depends -[ 18%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_method.c.o -[ 18%] Built target threading -[ 18%] Building C object source/portability/CMakeFiles/portability.dir/source/portability_working_path.c.o -[ 18%] Building C object source/environment/CMakeFiles/environment.dir/source/environment_variable_path.c.o --- extracting... - src='/usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/src/GBench-1.6.1.tar.gz' - dst='/usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/src/google-bench-depends' --- extracting... [tar xfz] -[ 18%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_class_visibility.c.o -[ 18%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_object.c.o -[ 18%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_class.c.o -[ 18%] Building C object source/portability/CMakeFiles/portability.dir/source/portability_path.c.o --- extracting... [analysis] --- extracting... [rename] --- extracting... [clean up] --- extracting... done -[ 18%] Building C object source/portability/CMakeFiles/portability.dir/source/portability_atexit.c.o -[ 18%] Building C object source/portability/CMakeFiles/portability.dir/source/portability_dependency.c.o -[ 18%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_future.c.o -[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_exception.c.o -[ 18%] Linking CXX shared library ../../libenvironmentd.so -[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_throwable.c.o -[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_context.c.o -[ 19%] No update step for 'google-bench-depends' -[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_scope.c.o -[ 19%] Built target node_loader_bootstrap -Note: /usr/local/metacall/source/loaders/java_loader/bootstrap/lib/bootstrap.java uses or overrides a deprecated API. -Note: Recompile with -Xlint:deprecation for details. -[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_value.c.o -[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_value_type.c.o -[ 19%] Built target nodejs-ramda -[ 19%] Built target java_loader_bootstrap -[ 19%] No patch step for 'google-bench-depends' - -up to date, audited 49 packages in 1s -[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_value_type_id_size.c.o - -1 moderate severity vulnerability - -To address all issues, run: - npm audit fix - -Run `npm audit` for details. -[ 19%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_value_type_promotion.c.o -[ 19%] Built target environment -[ 20%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_value_type_demotion.c.o -[ 20%] Building C object source/metacall/CMakeFiles/metacall.dir/__/reflect/source/reflect_value_type_cast.c.o -[ 20%] Built target nodejs-gram-depends -[ 20%] Performing configure step for 'google-bench-depends' -[ 20%] Building C object source/metacall/CMakeFiles/metacall.dir/__/serial/source/serial.c.o -CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required): - Compatibility with CMake < 3.10 will be removed from a future version of - CMake. - - Update the VERSION argument value. Or, use the ... syntax - to tell CMake that the project requires at least but has been updated - to work with policies introduced by or earlier. - - -[ 20%] Building C object source/metacall/CMakeFiles/metacall.dir/__/configuration/source/configuration.c.o -[ 20%] Building C object source/metacall/CMakeFiles/metacall.dir/__/configuration/source/configuration_singleton.c.o -[ 20%] Building C object source/metacall/CMakeFiles/metacall.dir/__/configuration/source/configuration_impl.c.o -[ 20%] Building C object source/metacall/CMakeFiles/metacall.dir/__/configuration/source/configuration_object.c.o -[ 21%] Building C object source/metacall/CMakeFiles/metacall.dir/__/loader/source/loader.c.o -[ 21%] Linking CXX shared library ../../libportabilityd.so -[ 21%] Building C object source/metacall/CMakeFiles/metacall.dir/__/loader/source/loader_host.c.o -[ 21%] Building C object source/metacall/CMakeFiles/metacall.dir/__/loader/source/loader_manager_impl.c.o - Determining projects to restore... -[ 21%] Building C object source/metacall/CMakeFiles/metacall.dir/__/loader/source/loader_impl.c.o --- The CXX compiler identification is GNU 14.2.0 -[ 21%] Building C object source/metacall/CMakeFiles/metacall.dir/source/metacall.c.o --- Detecting CXX compiler ABI info -[ 21%] Building C object source/metacall/CMakeFiles/metacall.dir/source/metacall_log.c.o -[ 21%] Built target portability -[ 21%] Building C object source/metacall/CMakeFiles/metacall.dir/source/metacall_allocator.c.o -[ 22%] Building C object source/metacall/CMakeFiles/metacall.dir/source/metacall_value.c.o -[ 22%] Building C object source/metacall/CMakeFiles/metacall.dir/source/metacall_error.c.o -[ 22%] Built target backward_object -[ 22%] Building C object source/metacall/CMakeFiles/metacall.dir/source/metacall_link.c.o -[ 22%] Building C object source/metacall/CMakeFiles/metacall.dir/source/metacall_fork.c.o -[ 22%] Building C object source/log/CMakeFiles/log.dir/source/log.c.o -[ 22%] Building C object source/log/CMakeFiles/log.dir/source/log_valid_size.c.o -[ 22%] Building C object source/log/CMakeFiles/log.dir/source/log_map.c.o - -up to date, audited 7 packages in 1s - -found 0 vulnerabilities -[ 22%] Building C object source/log/CMakeFiles/log.dir/source/log_record.c.o -[ 22%] Building C object source/log/CMakeFiles/log.dir/source/log_level.c.o -[ 22%] Building C object source/log/CMakeFiles/log.dir/source/log_handle.c.o -[ 22%] Linking CXX shared library ../../libbackward.so -[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_aspect.c.o -[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_policy.c.o -[ 23%] Built target typescript-templating-depends -[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_impl.c.o -[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_singleton.c.o -[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_format_binary.c.o -[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_format.c.o -[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_format_custom.c.o -[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_format_text.c.o -[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_schedule.c.o -[ 23%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_schedule_sync.c.o -[ 24%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_schedule_async.c.o --- Detecting CXX compiler ABI info - done -[ 24%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_storage_batch.c.o -[ 24%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_storage.c.o -[ 24%] Built target nodejs-gram -[ 24%] Built target typescript-templating --- Check for working CXX compiler: /usr/bin/c++ - skipped --- Detecting CXX compile features --- Detecting CXX compile features - done -[ 24%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_stream_custom.c.o -[ 24%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_stream.c.o -[ 24%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_storage_sequential.c.o --- Failed to find LLVM FileCheck -[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_stream_nginx.c.o -[ 25%] Built target backward -[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_stream_file.c.o --- Found Git: /usr/bin/git (found version "2.47.2") --- git version: v0.0.0 normalized to 0.0.0 --- Version: 1.6.1 -[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_stream_socket.c.o --- Looking for shm_open in rt -[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_stream_syslog.c.o -[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_policy_stream_stdio.c.o -[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_aspect_storage.c.o -[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_aspect_schedule.c.o -[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_aspect_format.c.o -[ 25%] Building C object source/log/CMakeFiles/log.dir/source/log_aspect_stream.c.o -[ 26%] Linking CXX shared library ../../liblogd.so - -> ts_loader_bootstrap@1.1.0 build -> tsc - --- Looking for shm_open in rt - found --- Performing Test HAVE_CXX_FLAG_STD_CXX11 -[ 26%] Built target log -[ 26%] Building C object source/memory/CMakeFiles/memory.dir/source/memory_allocator_nginx.c.o -[ 26%] Building C object source/adt/CMakeFiles/adt.dir/source/adt.c.o -[ 26%] Building C object source/adt/CMakeFiles/adt.dir/source/adt_hash.c.o -[ 26%] Building C object source/memory/CMakeFiles/memory.dir/source/memory_allocator.c.o -[ 26%] Building C object source/adt/CMakeFiles/adt.dir/source/adt_bucket.c.o -[ 26%] Building C object source/adt/CMakeFiles/adt.dir/source/adt_set.c.o -[ 26%] Building C object source/adt/CMakeFiles/adt.dir/source/adt_trie.c.o -[ 26%] Building C object source/adt/CMakeFiles/adt.dir/source/adt_map.c.o -[ 27%] Building C object source/dynlink/CMakeFiles/dynlink.dir/source/dynlink.c.o -[ 27%] Building C object source/dynlink/CMakeFiles/dynlink.dir/source/dynlink_impl.c.o -[ 27%] Building C object source/adt/CMakeFiles/adt.dir/source/adt_comparable.c.o -[ 27%] Building C object source/memory/CMakeFiles/memory.dir/source/memory_allocator_std.c.o -[ 27%] Building C object source/memory/CMakeFiles/memory.dir/source/memory.c.o -[ 27%] Building C object source/memory/CMakeFiles/memory.dir/source/memory_allocator_nginx_impl.c.o -[ 28%] Building C object source/adt/CMakeFiles/adt.dir/source/adt_vector.c.o -[ 28%] Building C object source/memory/CMakeFiles/memory.dir/source/memory_allocator_std_impl.c.o -[ 28%] Building C object source/dynlink/CMakeFiles/dynlink.dir/source/dynlink_impl_unix.c.o -[ 28%] Building C object source/dynlink/CMakeFiles/dynlink.dir/source/dynlink_interface.c.o --- Performing Test HAVE_CXX_FLAG_STD_CXX11 - Success --- Performing Test HAVE_CXX_FLAG_WALL - -added 15 packages in 2s - -1 package is looking for funding - run `npm fund` for details -[ 28%] Linking CXX shared library ../../libmemoryd.so -[ 28%] Linking CXX shared library ../../libdynlinkd.so -[ 28%] Built target metacall-python-open-test-depends -[ 28%] Built target memory -[ 28%] Built target dynlink --- Performing Test HAVE_CXX_FLAG_WALL - Success --- Performing Test HAVE_CXX_FLAG_WEXTRA -[ 28%] Linking CXX shared library ../../libmetacalld.so -[ 28%] Linking CXX shared library ../../libadtd.so -[ 28%] Built target adt -[ 28%] Built target metacall -[ 28%] Building C object source/filesystem/CMakeFiles/filesystem.dir/source/filesystem_directory_descriptor.c.o -[ 28%] Building C object source/filesystem/CMakeFiles/filesystem.dir/source/filesystem.c.o -[ 28%] Building C object source/loaders/cob_loader/CMakeFiles/cob_loader.dir/source/cob_loader.c.o -[ 28%] Building CXX object source/loaders/cob_loader/CMakeFiles/cob_loader.dir/source/cob_loader_impl.cpp.o -[ 28%] Building C object source/filesystem/CMakeFiles/filesystem.dir/source/filesystem_file_descriptor.c.o -[ 29%] Building C object source/plugin/CMakeFiles/plugin.dir/source/plugin.c.o -[ 30%] Building C object source/serials/metacall_serial/CMakeFiles/metacall_serial.dir/source/metacall_serial.c.o -[ 30%] Building C object source/loaders/rpc_loader/CMakeFiles/rpc_loader.dir/source/rpc_loader.c.o -[ 30%] Building C object source/loaders/mock_loader/CMakeFiles/mock_loader.dir/source/mock_loader.c.o -[ 30%] Building C object source/loaders/node_loader/CMakeFiles/node_loader.dir/source/node_loader.c.o -[ 30%] Building C object source/loaders/java_loader/CMakeFiles/java_loader.dir/source/java_loader.c.o -[ 30%] Building C object source/loaders/ext_loader/CMakeFiles/ext_loader.dir/source/ext_loader.c.o -[ 30%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect.c.o -[ 30%] Building C object source/loaders/wasm_loader/CMakeFiles/wasm_loader.dir/source/wasm_loader.c.o -[ 30%] Building C object source/detours/plthook_detour/CMakeFiles/plthook_detour.dir/source/plthook_detour.c.o --- Performing Test HAVE_CXX_FLAG_WEXTRA - Success --- Performing Test HAVE_CXX_FLAG_WSHADOW -[ 30%] Building C object source/serials/rapid_json_serial/CMakeFiles/rapid_json_serial.dir/source/rapid_json_serial.c.o -[ 30%] Building C object source/loaders/rb_loader/CMakeFiles/rb_loader.dir/source/rb_loader.c.o -[ 30%] Building C object source/loaders/py_loader/CMakeFiles/py_loader.dir/source/py_loader.c.o -[ 30%] Building C object source/loaders/file_loader/CMakeFiles/file_loader.dir/source/file_loader.c.o -[ 31%] Building CXX object source/loaders/node_loader/CMakeFiles/node_loader.dir/source/node_loader_impl.cpp.o -[ 31%] Building CXX object source/loaders/node_loader/CMakeFiles/node_loader.dir/source/node_loader_port.cpp.o -[ 31%] Building CXX object source/loaders/rpc_loader/CMakeFiles/rpc_loader.dir/source/rpc_loader_impl.cpp.o -[ 31%] Building C object source/serials/metacall_serial/CMakeFiles/metacall_serial.dir/source/metacall_serial_impl.c.o -[ 31%] Building CXX object source/loaders/java_loader/CMakeFiles/java_loader.dir/source/java_loader_impl.cpp.o -[ 31%] Building C object source/loaders/rb_loader/CMakeFiles/rb_loader.dir/source/rb_loader_impl.c.o -[ 31%] Building C object source/loaders/file_loader/CMakeFiles/file_loader.dir/source/file_loader_impl.c.o -[ 31%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_type.c.o -[ 31%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_type_id.c.o -[ 32%] Building CXX object source/loaders/ext_loader/CMakeFiles/ext_loader.dir/source/ext_loader_impl.cpp.o -[ 32%] Building CXX object source/serials/rapid_json_serial/CMakeFiles/rapid_json_serial.dir/source/rapid_json_serial_impl.cpp.o -[ 33%] Linking CXX shared library ../../libfilesystemd.so -[ 33%] Building C object source/detours/plthook_detour/CMakeFiles/plthook_detour.dir/source/plthook_detour_impl.c.o -[ 33%] Building C object source/loaders/rb_loader/CMakeFiles/rb_loader.dir/source/rb_loader_impl_parser.c.o -[ 33%] Building C object source/plugin/CMakeFiles/plugin.dir/source/plugin_descriptor.c.o -[ 33%] Building C object source/loaders/wasm_loader/CMakeFiles/wasm_loader.dir/source/wasm_loader_impl.c.o -[ 33%] Building C object source/loaders/mock_loader/CMakeFiles/mock_loader.dir/source/mock_loader_impl.c.o --- Performing Test HAVE_CXX_FLAG_WSHADOW - Success --- Performing Test HAVE_CXX_FLAG_WERROR -[ 33%] Building C object source/serials/metacall_serial/CMakeFiles/metacall_serial.dir/source/metacall_serial_impl_serialize.c.o -[ 33%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_signature.c.o -[ 33%] Built target filesystem -[ 33%] Building C object source/detours/plthook_detour/CMakeFiles/plthook_detour.dir/plthook/plthook_elf.c.o -[ 33%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_function.c.o -[ 33%] Building C object source/plugin/CMakeFiles/plugin.dir/source/plugin_impl.c.o -[ 33%] Linking CXX shared module ../../../libmock_loaderd.so -[ 33%] Building CXX object source/extensions/plugin_extension/CMakeFiles/plugin_extension.dir/source/plugin_extension.cpp.o -[ 33%] Building C object source/loaders/wasm_loader/CMakeFiles/wasm_loader.dir/source/wasm_loader_function.c.o -[ 33%] Building C object source/loaders/py_loader/CMakeFiles/py_loader.dir/source/py_loader_impl.c.o --- Performing Test HAVE_CXX_FLAG_WERROR - Success -[ 33%] Building C object source/plugin/CMakeFiles/plugin.dir/source/plugin_loader.c.o --- Performing Test HAVE_CXX_FLAG_WSUGGEST_OVERRIDE -[ 33%] Building C object source/loaders/wasm_loader/CMakeFiles/wasm_loader.dir/source/wasm_loader_handle.c.o -[ 33%] Built target mock_loader -[ 33%] Linking CXX shared module ../../../libfile_loaderd.so -[ 33%] Building C object source/serials/metacall_serial/CMakeFiles/metacall_serial.dir/source/metacall_serial_impl_deserialize.c.o -[ 33%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_attribute.c.o -[ 33%] Building C object source/ports/rb_port/CMakeFiles/rb_port.dir/__/__/__/rb_portRUBY_wrap.c.o -[ 33%] Building C object source/ports/rb_port/CMakeFiles/rb_port.dir/source/rb_port.c.o -[ 33%] Building C object source/plugin/CMakeFiles/plugin.dir/source/plugin_manager.c.o -[ 33%] Building CXX object source/loaders/node_loader/CMakeFiles/node_loader.dir/source/node_loader_trampoline.cpp.o -[ 33%] Built target file_loader -HEAD is now at e2239ee6 Googletest export -[ 33%] Linking CXX shared module ../../../libplthook_detourd.so -[ 34%] Building CXX object source/scripts/extension/sum/CMakeFiles/sum_extension.dir/source/sum_extension.cpp.o --- Performing Test HAVE_CXX_FLAG_WSUGGEST_OVERRIDE - Success --- Performing Test HAVE_CXX_FLAG_PEDANTIC -[ 34%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_constructor.c.o -[ 35%] Building CXX object source/examples/metacalllog/CMakeFiles/metacalllog.dir/main.cpp.o -[ 35%] Linking CXX shared module ../../../libcob_loaderd.so -[ 35%] Built target plthook_detour -[ 35%] Linking CXX shared module ../../../libmetacall_seriald.so -[ 35%] Building C object source/loaders/py_loader/CMakeFiles/py_loader.dir/source/py_loader_port.c.o -[ 35%] Linking CXX shared library ../../libplugind.so -[ 36%] Linking CXX shared module ../../../libwasm_loaderd.so -[ 36%] No update step for 'google-test-depends' -Failed to run rustfmt: No such file or directory (os error 2) (non-fatal, continuing) -[ 36%] Built target rs_port_bindings --- Performing Test HAVE_CXX_FLAG_PEDANTIC - Success --- Performing Test HAVE_CXX_FLAG_PEDANTIC_ERRORS -[ 36%] Building CXX object source/loaders/py_loader/CMakeFiles/py_loader.dir/source/py_loader_threading.cpp.o -[ 36%] Linking CXX executable ../../../metacalllogd -[ 36%] No patch step for 'google-test-depends' -[ 36%] Built target metacall_serial -[ 37%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_memory_tracker.c.o -[ 37%] Built target plugin -[ 37%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_method.c.o -[ 37%] Built target cob_loader -[ 38%] Building C object source/loaders/py_loader/CMakeFiles/py_loader.dir/source/py_loader_dict.c.o -[ 38%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_class_visibility.c.o -[ 38%] Performing configure step for 'google-test-depends' -CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required): - Compatibility with CMake < 3.10 will be removed from a future version of - CMake. - - Update the VERSION argument value. Or, use the ... syntax - to tell CMake that the project requires at least but has been updated - to work with policies introduced by or earlier. - - -[ 38%] Built target wasm_loader -[ 38%] Linking CXX shared module ../../../librb_loaderd.so -[ 38%] Building C object source/detour/CMakeFiles/detour.dir/source/detour.c.o -[ 38%] Built target metacalllog -[ 38%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_class.c.o -[ 38%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_object.c.o -[ 38%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_future.c.o --- The C compiler identification is GNU 14.2.0 --- Performing Test HAVE_CXX_FLAG_PEDANTIC_ERRORS - Success --- Performing Test HAVE_CXX_FLAG_WSHORTEN_64_TO_32 -[ 38%] Built target rb_loader -[ 38%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_exception.c.o - Downloading crates ... -[ 38%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_throwable.c.o -/usr/local/metacall/source/serials/rapid_json_serial/source/rapid_json_serial_impl.cpp: In function 'char* rapidjson::internal::Prettify(char*, int, int, int)': -/usr/local/metacall/source/serials/rapid_json_serial/source/rapid_json_serial_impl.cpp:561:1: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow] - 561 | } - | ^ -[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_scope.c.o -In file included from /usr/include/python3.13d/internal/pycore_mimalloc.h:45, - from /usr/include/python3.13d/internal/pycore_interp.h:31, - from /usr/include/python3.13d/internal/pycore_runtime.h:17, - from /usr/include/python3.13d/internal/pycore_emscripten_trampoline.h:4, - from /usr/include/python3.13d/internal/pycore_object.h:13, - from /usr/include/python3.13d/internal/pycore_dict.h:13, - from /usr/local/metacall/source/loaders/py_loader/source/py_loader_dict.c:32: -/usr/include/python3.13d/internal/mimalloc/mimalloc/internal.h:90:12: warning: redundant redeclaration of '_mi_os_purge' [-Wredundant-decls] - 90 | bool _mi_os_purge(void* p, size_t size, mi_stats_t* stats); - | ^~~~~~~~~~~~ -/usr/include/python3.13d/internal/mimalloc/mimalloc/internal.h:84:12: note: previous declaration of '_mi_os_purge' with type '_Bool(void *, size_t, mi_stats_t *)' {aka '_Bool(void *, long unsigned int, struct mi_stats_s *)'} - 84 | bool _mi_os_purge(void* p, size_t size, mi_stats_t* stats); - | ^~~~~~~~~~~~ -/usr/include/python3.13d/internal/pycore_object.h: In function '_PyObject_HasDeferredRefcount': -/usr/include/python3.13d/internal/pycore_object.h:204:41: warning: unused parameter 'op' [-Wunused-parameter] - 204 | _PyObject_HasDeferredRefcount(PyObject *op) - | ~~~~~~~~~~^~ -/usr/include/python3.13d/internal/pycore_dict.h: In function '_PyDict_NotifyEvent': -/usr/include/python3.13d/internal/pycore_dict.h:273:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations] - 273 | int watcher_bits = mp->ma_version_tag & DICT_WATCHER_MASK; - | ^~~ -In file included from /usr/include/python3.13d/dictobject.h:101, - from /usr/include/python3.13d/Python.h:90, - from /usr/local/metacall/source/loaders/py_loader/include/py_loader/py_loader_dict.h:26, - from /usr/local/metacall/source/loaders/py_loader/source/py_loader_dict.c:21: -/usr/include/python3.13d/cpython/dictobject.h:25:34: note: declared here - 25 | Py_DEPRECATED(3.12) uint64_t ma_version_tag; - | ^~~~~~~~~~~~~~ -/usr/include/python3.13d/internal/pycore_dict.h:278:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations] - 278 | return DICT_NEXT_VERSION(interp) | (mp->ma_version_tag & DICT_WATCHER_AND_MODIFICATION_MASK); - | ^~~~~~ -/usr/include/python3.13d/cpython/dictobject.h:25:34: note: declared here - 25 | Py_DEPRECATED(3.12) uint64_t ma_version_tag; - | ^~~~~~~~~~~~~~ -[ 39%] Linking CXX shared library ../../libdetourd.so - Downloaded proc-macro2 v1.0.92 - Downloaded unicode-ident v1.0.14 - Downloaded quote v1.0.37 --- Performing Test HAVE_CXX_FLAG_WSHORTEN_64_TO_32 - Failed --- Performing Test HAVE_CXX_FLAG_FSTRICT_ALIASING -[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_value.c.o --- The CXX compiler identification is GNU 14.2.0 -[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_context.c.o --- Detecting C compiler ABI info -[ 39%] Built target detour -[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_value_type.c.o -[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_value_type_id_size.c.o - Compiling proc-macro2 v1.0.92 -[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_value_type_promotion.c.o -[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_value_type_demotion.c.o -[ 39%] Building C object source/reflect/CMakeFiles/reflect.dir/source/reflect_value_type_cast.c.o -[ 39%] Linking CXX shared module ../../../rb_portd.so - Compiling unicode-ident v1.0.14 - Compiling metacall v0.4.2 (/usr/local/metacall/source/ports/rs_port) - Restored /usr/local/metacall/source/loaders/cs_loader/netcore/source/project.csproj (in 3.59 sec). -[ 39%] Built target rb_port --- Detecting C compiler ABI info - done --- Performing Test HAVE_CXX_FLAG_FSTRICT_ALIASING - Success --- Performing Test HAVE_CXX_FLAG_WNO_DEPRECATED_DECLARATIONS --- Check for working C compiler: /usr/bin/cc - skipped --- Detecting C compile features --- Detecting C compile features - done -[ 39%] Linking CXX shared module ../../../../libsum_extensiond.so --- Detecting CXX compiler ABI info -[ 40%] Linking CXX shared module ../../../libjava_loaderd.so -[ 41%] Linking CXX shared library ../../libreflectd.so -[ 41%] Built target sum_extension --- Performing Test HAVE_CXX_FLAG_WNO_DEPRECATED_DECLARATIONS - Success --- Performing Test HAVE_CXX_FLAG_WNO_DEPRECATED --- Detecting CXX compiler ABI info - done -[ 41%] Built target java_loader -[ 41%] Built target reflect --- Check for working CXX compiler: /usr/bin/c++ - skipped --- Detecting CXX compile features --- Detecting CXX compile features - done -[ 41%] Building C object source/serial/CMakeFiles/serial.dir/source/serial.c.o -CMake Deprecation Warning at googlemock/CMakeLists.txt:45 (cmake_minimum_required): - Compatibility with CMake < 3.10 will be removed from a future version of - CMake. - - Update the VERSION argument value. Or, use the ... syntax - to tell CMake that the project requires at least but has been updated - to work with policies introduced by or earlier. - - -CMake Deprecation Warning at googletest/CMakeLists.txt:56 (cmake_minimum_required): - Compatibility with CMake < 3.10 will be removed from a future version of - CMake. - - Update the VERSION argument value. Or, use the ... syntax - to tell CMake that the project requires at least but has been updated - to work with policies introduced by or earlier. - - -[ 41%] Performing install step for 'libtcc-depends' --> /usr/local/metacall/build/libtcc/bin : tcc --> /usr/local/metacall/build/libtcc/lib/tcc : libtcc1.a runmain.o bt-exe.o bt-log.o bcheck.o --> /usr/local/metacall/build/libtcc/lib/tcc/include : ./include/*.h ./tcclib.h --> /usr/local/metacall/build/libtcc/lib : libtcc.so --> /usr/local/metacall/build/libtcc/include : ./libtcc.h --- Performing Test HAVE_CXX_FLAG_WNO_DEPRECATED - Success --- Performing Test HAVE_CXX_FLAG_WSTRICT_ALIASING --> /usr/local/metacall/build/libtcc/share/man/man1 : tcc.1 -[ 41%] Linking CXX shared library ../../libseriald.so -[ 42%] No test step for 'libtcc-depends' -[ 42%] Built target serial -[ 43%] Building C object source/configuration/CMakeFiles/configuration.dir/source/configuration_impl.c.o -[ 43%] Building C object source/configuration/CMakeFiles/configuration.dir/source/configuration.c.o -[ 43%] Building C object source/configuration/CMakeFiles/configuration.dir/source/configuration_singleton.c.o -[ 43%] Building C object source/configuration/CMakeFiles/configuration.dir/source/configuration_object.c.o -[ 43%] Completed 'libtcc-depends' --- Found Python: /usr/bin/python3 (found version "3.13.2") found components: Interpreter -[ 43%] Linking CXX shared module ../../../libplugin_extensiond.so --- Performing Test CMAKE_HAVE_LIBC_PTHREAD --- Performing Test HAVE_CXX_FLAG_WSTRICT_ALIASING - Success --- Performing Test HAVE_CXX_FLAG_WD654 -[ 43%] Built target libtcc-depends --- Performing Test HAVE_CXX_FLAG_WD654 - Failed --- Performing Test HAVE_CXX_FLAG_WTHREAD_SAFETY -[ 43%] Building CXX object source/loaders/c_loader/CMakeFiles/c_loader.dir/source/c_loader_impl.cpp.o -[ 43%] Building C object source/loaders/c_loader/CMakeFiles/c_loader.dir/source/c_loader.c.o -[ 43%] Built target plugin_extension -[ 43%] Building CXX object source/plugins/sandbox_plugin/CMakeFiles/sandbox_plugin.dir/source/sandbox_plugin.cpp.o -[ 43%] Building CXX object source/plugins/backtrace_plugin/CMakeFiles/backtrace_plugin.dir/source/backtrace_plugin.cpp.o --- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success --- Found Threads: TRUE -[ 43%] Linking CXX shared library ../../libconfigurationd.so --- Configuring done (2.0s) -[ 43%] Built target ts_loader_bootstrap_build --- Generating done (0.0s) --- Build files have been written to: /usr/local/metacall/build/source/tests/src/google-test-depends-build --- Performing Test HAVE_CXX_FLAG_WTHREAD_SAFETY - Failed --- Performing Test HAVE_CXX_FLAG_COVERAGE -[ 43%] Performing build step for 'google-test-depends' -Copying ts_loader_bootstrap dependencies -In function 'int64_t node_loader_impl_user_async_handles_count(loader_impl_node)', - inlined from 'void node_loader_impl_destroy_cb(loader_impl_node)' at /usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4349:94, - inlined from 'void node_loader_impl_destroy_prepare_cb(uv_prepare_t*)' at /usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4370:29: -/usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4506:66: warning: assuming signed overflow does not occur when simplifying 'X - Y <= 0' to 'X <= Y' [-Wstrict-overflow] - 4506 | return active_handles - node_impl->base_active_handles - extra_active_handles; - | ^~~~~~~~~~~~~~~~~~~~ -In function 'int64_t node_loader_impl_user_async_handles_count(loader_impl_node)', - inlined from 'void node_loader_impl_destroy_cb(loader_impl_node)' at /usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4349:94, - inlined from 'void node_loader_impl_destroy_check_cb(uv_check_t*)' at /usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4377:29: -/usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4506:66: warning: assuming signed overflow does not occur when simplifying 'X - Y <= 0' to 'X <= Y' [-Wstrict-overflow] - 4506 | return active_handles - node_impl->base_active_handles - extra_active_handles; - | ^~~~~~~~~~~~~~~~~~~~ - Compiling quote v1.0.37 -[ 43%] Built target configuration -MSBuild version 17.7.6+77d58ec69 for .NET -[ 43%] Building C object source/loader/CMakeFiles/loader.dir/source/loader_impl.c.o -[ 43%] Building C object source/loader/CMakeFiles/loader.dir/source/loader.c.o -[ 12%] Building CXX object googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o -[ 43%] Building C object source/loader/CMakeFiles/loader.dir/source/loader_host.c.o -[ 43%] Building C object source/loader/CMakeFiles/loader.dir/source/loader_manager_impl.c.o --- Performing Test HAVE_CXX_FLAG_COVERAGE - Success --- Performing Test HAVE_STD_REGEX --- Performing Test HAVE_STD_REGEX -In file included from /usr/local/include/rapidjson/writer.h:23, - from /usr/local/metacall/source/serials/rapid_json_serial/source/rapid_json_serial_impl.cpp:21: -In function 'char* rapidjson::internal::WriteExponent(int, char*)', - inlined from 'char* rapidjson::internal::Prettify(char*, int, int, int)' at /usr/local/include/rapidjson/internal/dtoa.h:216:29, - inlined from 'char* rapidjson::internal::dtoa(double, char*, int)' at /usr/local/include/rapidjson/internal/dtoa.h:238:24, - inlined from 'char* rapidjson::internal::dtoa(double, char*, int)' at /usr/local/include/rapidjson/internal/dtoa.h:220:14, - inlined from 'bool rapidjson::Writer::WriteDouble(double) [with OutputStream = rapidjson::GenericStringBuffer >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = rapidjson::CrtAllocator; unsigned int writeFlags = 0]' at /usr/local/include/rapidjson/writer.h:579:31, - inlined from 'bool rapidjson::Writer::WriteDouble(double) [with OutputStream = rapidjson::GenericStringBuffer >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = rapidjson::CrtAllocator; unsigned int writeFlags = 0]' at /usr/local/include/rapidjson/writer.h:552:13, - inlined from 'bool rapidjson::Writer::Double(double) [with OutputStream = rapidjson::GenericStringBuffer >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = rapidjson::CrtAllocator; unsigned int writeFlags = 0]' at /usr/local/include/rapidjson/writer.h:195:83, - inlined from 'bool rapidjson::GenericValue::Accept(Handler&) const [with Handler = rapidjson::Writer > >; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator]' at /usr/local/include/rapidjson/document.h:1979:58: -/usr/local/include/rapidjson/internal/dtoa.h:131:5: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow] - 131 | if (K < 0) { - | ^~ -/usr/local/include/rapidjson/internal/dtoa.h:136:5: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow] - 136 | if (K >= 100) { - | ^~ -ts_loader_bootstrap dependencies copied from /usr/local/metacall/source/loaders/ts_loader/bootstrap/node_modules to /usr/local/metacall/build/node_modules -[ 43%] Built target ts_loader_bootstrap -[ 43%] Linking CXX shared module ../../../libpy_loaderd.so - Compiling metacall-inline v0.2.0 (/usr/local/metacall/source/ports/rs_port/inline) -[ 43%] Built target py_loader -[ 44%] Linking CXX shared module ../../../librpc_loaderd.so - Determining projects to restore... -[ 44%] Linking CXX shared library ../../libloaderd.so -[ 44%] Built target rpc_loader -[ 44%] Built target loader -[ 44%] Linking CXX shared module ../../../libext_loaderd.so -[ 44%] Built target ext_loader -In file included from /usr/local/include/rapidjson/reader.h:26, - from /usr/local/include/rapidjson/document.h:20, - from /usr/local/metacall/source/serials/rapid_json_serial/source/rapid_json_serial_impl.cpp:18: -In function 'double rapidjson::internal::FastPath(double, int)', - inlined from 'double rapidjson::internal::StrtodNormalPrecision(double, int)' at /usr/local/include/rapidjson/internal/strtod.h:41:21, - inlined from 'void rapidjson::GenericReader::ParseNumber(InputStream&, Handler&) [with unsigned int parseFlags = 0; InputStream = rapidjson::EncodedInputStream, rapidjson::MemoryStream>; Handler = rapidjson::GenericDocument >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = rapidjson::CrtAllocator]' at /usr/local/include/rapidjson/reader.h:1717:55, - inlined from 'void rapidjson::GenericReader::ParseValue(InputStream&, Handler&) [with unsigned int parseFlags = 0; InputStream = rapidjson::EncodedInputStream, rapidjson::MemoryStream>; Handler = rapidjson::GenericDocument >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = rapidjson::CrtAllocator]' at /usr/local/include/rapidjson/reader.h:1761:46: -/usr/local/include/rapidjson/internal/strtod.h:29:5: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow] - 29 | if (exp < -308) - | ^~ - All projects are up-to-date for restore. -In function 'int64_t node_loader_impl_user_async_handles_count(loader_impl_node)', - inlined from 'void node_loader_impl_destroy_safe(napi_env, loader_impl_async_destroy_safe_type*)' at /usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4402:47: -/usr/local/metacall/source/loaders/node_loader/source/node_loader_impl.cpp:4506:66: warning: assuming signed overflow does not occur when simplifying 'X - Y <= 0' to 'X <= Y' [-Wstrict-overflow] - 4506 | return active_handles - node_impl->base_active_handles - extra_active_handles; - | ^~~~~~~~~~~~~~~~~~~~ - Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.90s -[ 44%] Built target rs_port -[ 44%] Linking CXX shared module ../../../librapid_json_seriald.so -[ 44%] Built target rapid_json_serial -[ 44%] Linking CXX shared module ../../../plugins/sandbox_plugin/libsandbox_plugind.so -[ 44%] Built target sandbox_plugin -[ 44%] Linking CXX shared module ../../../libnode_loaderd.so -[ 44%] Built target node_loader -[ 44%] Building C object source/loaders/ts_loader/CMakeFiles/ts_loader.dir/source/ts_loader.c.o -[ 45%] Building CXX object source/cli/plugins/cli_sandbox_plugin/CMakeFiles/cli_sandbox_plugin.dir/source/cli_sandbox_plugin.cpp.o -[ 45%] Building CXX object source/loaders/ts_loader/CMakeFiles/ts_loader.dir/source/ts_loader_impl.cpp.o -[ 45%] Built target cli_cmd_plugin -[ 45%] Built target cli_repl_plugin -[ 45%] Building CXX object source/cli/plugins/cli_core_plugin/CMakeFiles/cli_core_plugin.dir/source/cli_core_plugin.cpp.o -[ 45%] Linking CXX shared module ../../../libc_loaderd.so --- Performing Test HAVE_STD_REGEX -- success --- Performing Test HAVE_GNU_POSIX_REGEX --- Performing Test HAVE_GNU_POSIX_REGEX -[ 45%] Linking CXX shared module ../../../../plugins/cli/cmd/cli_sandbox_plugin/libcli_sandbox_plugind.so -[ 45%] Linking CXX shared module ../../../plugins/backtrace_plugin/libbacktrace_plugind.so -[ 45%] Built target c_loader --- Performing Test HAVE_GNU_POSIX_REGEX -- failed to compile --- Performing Test HAVE_POSIX_REGEX --- Performing Test HAVE_POSIX_REGEX -[ 45%] Built target cli_sandbox_plugin -[ 45%] Built target backtrace_plugin -[ 46%] Linking CXX shared module ../../../libts_loaderd.so -[ 46%] Built target ts_loader --- Performing Test HAVE_POSIX_REGEX -- success --- Performing Test HAVE_STEADY_CLOCK --- Performing Test HAVE_STEADY_CLOCK -Installing node_port --- Performing Test HAVE_STEADY_CLOCK -- success --- Performing Test CMAKE_HAVE_LIBC_PTHREAD --- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success --- Found Threads: TRUE --- Configuring done (11.1s) --- Generating done (0.0s) --- Build files have been written to: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/src/google-bench-depends-build -[ 46%] Performing build step for 'google-bench-depends' -[ 9%] Building CXX object src/CMakeFiles/benchmark.dir/benchmark_name.cc.o -[ 9%] Building CXX object src/CMakeFiles/benchmark.dir/benchmark.cc.o -[ 18%] Building CXX object src/CMakeFiles/benchmark.dir/csv_reporter.cc.o -[ 18%] Building CXX object src/CMakeFiles/benchmark.dir/benchmark_api_internal.cc.o -[ 22%] Building CXX object src/CMakeFiles/benchmark.dir/commandlineflags.cc.o -[ 27%] Building CXX object src/CMakeFiles/benchmark.dir/json_reporter.cc.o -[ 31%] Building CXX object src/CMakeFiles/benchmark.dir/sleep.cc.o -[ 40%] Building CXX object src/CMakeFiles/benchmark.dir/statistics.cc.o -[ 40%] Building CXX object src/CMakeFiles/benchmark.dir/complexity.cc.o -[ 45%] Building CXX object src/CMakeFiles/benchmark.dir/benchmark_register.cc.o -[ 50%] Building CXX object src/CMakeFiles/benchmark.dir/counter.cc.o -[ 54%] Building CXX object src/CMakeFiles/benchmark.dir/benchmark_runner.cc.o -[ 63%] Building CXX object src/CMakeFiles/benchmark.dir/colorprint.cc.o -[ 68%] Building CXX object src/CMakeFiles/benchmark.dir/console_reporter.cc.o -[ 68%] Building CXX object src/CMakeFiles/benchmark.dir/reporter.cc.o -[ 72%] Building CXX object src/CMakeFiles/benchmark.dir/timers.cc.o -[ 77%] Building CXX object src/CMakeFiles/benchmark.dir/string_util.cc.o -[ 81%] Building CXX object src/CMakeFiles/benchmark.dir/perf_counters.cc.o -[ 86%] Building CXX object src/CMakeFiles/benchmark.dir/sysinfo.cc.o -[ 25%] Linking CXX static library ../lib/libgtest.a - project -> /usr/local/metacall/source/loaders/cs_loader/netcore/source/bin/Debug/net7.0/CSLoader.dll - project -> /usr/local/metacall/build/ -[ 25%] Built target gtest -[ 37%] Building CXX object googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o -[ 50%] Building CXX object googlemock/CMakeFiles/gmock.dir/src/gmock-all.cc.o -[ 46%] Built target cs_loader_impl - -up to date, audited 81 packages in 1s - -20 packages are looking for funding - run `npm fund` for details - -3 moderate severity vulnerabilities - -To address all issues (including breaking changes), run: - npm audit fix --force - -Run `npm audit` for details. -[ 46%] Building CXX object source/loaders/cs_loader/CMakeFiles/cs_loader.dir/source/netcore.cpp.o -[ 47%] Building CXX object source/loaders/cs_loader/CMakeFiles/cs_loader.dir/source/simple_netcore.cpp.o -[ 47%] Building C object source/loaders/cs_loader/CMakeFiles/cs_loader.dir/source/cs_loader.c.o -[ 47%] Building CXX object source/loaders/cs_loader/CMakeFiles/cs_loader.dir/source/netcore_linux.cpp.o -[ 47%] Building C object source/loaders/cs_loader/CMakeFiles/cs_loader.dir/source/cs_loader_impl.c.o -[ 47%] Built target node_port -[ 47%] Linking CXX shared module ../../../../plugins/cli/repl/cli_core_plugin/libcli_core_plugind.so -[ 47%] Built target cli_core_plugin -[ 47%] Building CXX object source/cli/metacallcli/CMakeFiles/metacallcli.dir/source/main.cpp.o -[ 47%] Building CXX object source/cli/metacallcli/CMakeFiles/metacallcli.dir/source/application.cpp.o -[ 62%] Linking CXX static library ../lib/libgtest_main.a -[ 62%] Built target gtest_main -[ 47%] Linking CXX shared module ../../../libcs_loaderd.so -[ 47%] Built target cs_loader -[ 75%] Linking CXX static library ../lib/libgmock.a -[ 75%] Built target gmock -[ 47%] Linking CXX executable ../../../metacallclid -[ 87%] Building CXX object googlemock/CMakeFiles/gmock_main.dir/src/gmock_main.cc.o -[ 47%] Built target metacallcli -[100%] Linking CXX static library ../lib/libgmock_main.a -[100%] Built target gmock_main -[ 47%] No install step for 'google-test-depends' -[ 47%] No test step for 'google-test-depends' -[ 47%] Completed 'google-test-depends' -[ 47%] Built target google-test-depends -[ 47%] Building CXX object source/tests/log_test/CMakeFiles/log-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/reflect_scope_test/CMakeFiles/reflect-scope-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/preprocessor_test/CMakeFiles/preprocessor-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/adt_vector_test/CMakeFiles/adt-vector-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/detour_test/CMakeFiles/detour-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/log_custom_test/CMakeFiles/log-custom-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/reflect_object_class_test/CMakeFiles/reflect-object-class-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/reflect_metadata_test/CMakeFiles/reflect-metadata-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/environment_test/CMakeFiles/environment-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/metacall_logs_test/CMakeFiles/metacall-logs-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/configuration_test/CMakeFiles/configuration-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/adt_set_test/CMakeFiles/adt-set-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/metacall_load_memory_empty_test/CMakeFiles/metacall-load-memory-empty-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/adt_map_test/CMakeFiles/adt-map-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/serial_test/CMakeFiles/serial-test.dir/source/main.cpp.o -[ 47%] Building CXX object source/tests/metacall_load_memory_test/CMakeFiles/metacall-load-memory-test.dir/source/main.cpp.o -[ 48%] Building CXX object source/tests/reflect_function_test/CMakeFiles/reflect-function-test.dir/source/main.cpp.o -[ 48%] Building CXX object source/tests/portability_path_test/CMakeFiles/portability-path-test.dir/source/main.cpp.o -[ 48%] Building CXX object source/tests/dynlink_test/CMakeFiles/dynlink-test.dir/source/main.cpp.o -[ 48%] Building CXX object source/tests/rb_loader_parser_test/CMakeFiles/rb-loader-parser-test.dir/source/main.cpp.o -[ 48%] Building CXX object source/tests/metacall_load_configuration_test/CMakeFiles/metacall-load-configuration-test.dir/source/main.cpp.o -[ 49%] Building CXX object source/tests/adt_trie_test/CMakeFiles/adt-trie-test.dir/source/main.cpp.o -[ 49%] Building CXX object source/tests/metacall_load_memory_test/CMakeFiles/metacall-load-memory-test.dir/source/metacall_load_memory_test.cpp.o -[ 49%] Building CXX object source/tests/log_custom_test/CMakeFiles/log-custom-test.dir/source/log_custom_test.cpp.o -[ 49%] Building CXX object source/tests/metacall_load_memory_empty_test/CMakeFiles/metacall-load-memory-empty-test.dir/source/metacall_load_memory_empty_test.cpp.o -[ 49%] Building CXX object source/tests/reflect_metadata_test/CMakeFiles/reflect-metadata-test.dir/source/reflect_metadata_test.cpp.o -[ 49%] Building CXX object source/tests/adt_vector_test/CMakeFiles/adt-vector-test.dir/source/adt_vector_test.cpp.o -[ 49%] Building CXX object source/tests/portability_path_test/CMakeFiles/portability-path-test.dir/source/portability_path_test.cpp.o -[ 90%] Linking CXX static library libbenchmark.a -[ 49%] Building CXX object source/tests/reflect_scope_test/CMakeFiles/reflect-scope-test.dir/source/reflect_scope_test.cpp.o -[ 49%] Building CXX object source/tests/detour_test/CMakeFiles/detour-test.dir/source/detour_test.cpp.o -[ 90%] Built target benchmark -[ 49%] Building CXX object source/tests/metacall_load_configuration_test/CMakeFiles/metacall-load-configuration-test.dir/source/metacall_load_configuration_test.cpp.o -[ 49%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/reflect_value_cast_bool_test.cpp.o -[ 49%] Building CXX object source/tests/log_test/CMakeFiles/log-test.dir/source/log_test.cpp.o -[ 50%] Building CXX object source/tests/reflect_object_class_test/CMakeFiles/reflect-object-class-test.dir/source/reflect_object_class_test.cpp.o -[ 50%] Building CXX object source/tests/adt_map_test/CMakeFiles/adt-map-test.dir/source/adt_map_test.cpp.o -[ 95%] Building CXX object src/CMakeFiles/benchmark_main.dir/benchmark_main.cc.o -[ 50%] Building CXX object source/tests/adt_trie_test/CMakeFiles/adt-trie-test.dir/source/adt_trie_test.cpp.o -[ 50%] Building CXX object source/tests/adt_set_test/CMakeFiles/adt-set-test.dir/source/adt_set_test.cpp.o -[ 50%] Building CXX object source/tests/rb_loader_parser_test/CMakeFiles/rb-loader-parser-test.dir/source/rb_loader_parser_test.cpp.o -[ 51%] Building CXX object source/tests/metacall_logs_test/CMakeFiles/metacall-logs-test.dir/source/metacall_logs_test.cpp.o -[ 50%] Building CXX object source/tests/preprocessor_test/CMakeFiles/preprocessor-test.dir/source/preprocessor_test.cpp.o -[ 51%] Building CXX object source/tests/reflect_function_test/CMakeFiles/reflect-function-test.dir/source/reflect_function_test.cpp.o -[ 51%] Building CXX object source/tests/environment_test/CMakeFiles/environment-test.dir/source/environment_test.cpp.o -[ 51%] Building CXX object source/tests/serial_test/CMakeFiles/serial-test.dir/source/serial_test.cpp.o -[ 51%] Building CXX object source/tests/configuration_test/CMakeFiles/configuration-test.dir/source/configuration_test.cpp.o -[ 51%] Building CXX object source/tests/dynlink_test/CMakeFiles/dynlink-test.dir/source/dynlink_test.cpp.o -[100%] Linking CXX static library libbenchmark_main.a -[100%] Built target benchmark_main -[ 51%] Performing install step for 'google-bench-depends' -[ 90%] Built target benchmark -[100%] Built target benchmark_main -Install the project... --- Install configuration: "Release" --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/lib/libbenchmark.a --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/lib/libbenchmark_main.a --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/include/benchmark --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/include/benchmark/benchmark.h --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/lib/cmake/benchmark/benchmarkConfig.cmake --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/lib/cmake/benchmark/benchmarkConfigVersion.cmake --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/lib/pkgconfig/benchmark.pc --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/lib/cmake/benchmark/benchmarkTargets.cmake --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/lib/cmake/benchmark/benchmarkTargets-release.cmake --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/platform_specific_build_instructions.md --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/random_interleaving.md --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/AssemblyTests.md --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/perf_counters.md --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/index.md --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/dependencies.md --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/releasing.md --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/_config.yml --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/user_guide.md --- Installing: /usr/local/metacall/build/source/benchmarks/google-bench-depends-prefix/share/doc/benchmark/tools.md -[ 51%] No test step for 'google-bench-depends' -[ 51%] Completed 'google-bench-depends' -[ 51%] Built target google-bench-depends -[ 51%] Building CXX object source/tests/metacall_load_configuration_fail_test/CMakeFiles/metacall-load-configuration-fail-test.dir/source/main.cpp.o -[ 51%] Linking CXX executable ../../../metacall-load-memory-empty-testd -[ 51%] Linking CXX executable ../../../adt-vector-testd -[ 51%] Linking CXX executable ../../../log-custom-testd -[ 51%] Built target metacall-load-memory-empty-test -[ 51%] Building CXX object source/tests/metacall_load_configuration_relative_test/CMakeFiles/metacall-load-configuration-relative-test.dir/source/main.cpp.o -[ 51%] Linking CXX executable ../../../metacall-logs-testd -[ 51%] Linking CXX executable ../../../adt-trie-testd -[ 51%] Linking CXX executable ../../../metacall-load-memory-testd -[ 51%] Built target log-custom-test -[ 51%] Built target adt-vector-test -[ 51%] Building CXX object source/tests/metacall_load_configuration_node_python_test/CMakeFiles/metacall-load-configuration-node-python-test.dir/source/main.cpp.o -[ 52%] Building CXX object source/tests/metacall_load_configuration_python_node_test/CMakeFiles/metacall-load-configuration-python-node-test.dir/source/main.cpp.o -[ 52%] Built target metacall-logs-test -[ 52%] Building CXX object source/tests/metacall_duplicated_handle_test/CMakeFiles/metacall-duplicated-handle-test.dir/source/main.cpp.o -[ 52%] Built target adt-trie-test -[ 52%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/reflect_value_cast_char_test.cpp.o -[ 52%] Built target metacall-load-memory-test -[ 53%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/reflect_value_cast_short_test.cpp.o -[ 53%] Building CXX object source/tests/metacall_load_configuration_fail_test/CMakeFiles/metacall-load-configuration-fail-test.dir/source/metacall_load_configuration_fail_test.cpp.o -[ 53%] Linking CXX executable ../../../environment-testd -[ 53%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/reflect_value_cast_int_test.cpp.o -[ 53%] Linking CXX executable ../../../adt-set-testd -[ 53%] Linking CXX executable ../../../detour-testd -[ 53%] Linking CXX executable ../../../adt-map-testd -[ 53%] Linking CXX executable ../../../reflect-function-testd -[ 53%] Built target environment-test -[ 53%] Linking CXX executable ../../../dynlink-testd -[ 54%] Linking CXX executable ../../../log-testd -[ 54%] Building CXX object source/tests/metacall_duplicated_symbols_test/CMakeFiles/metacall-duplicated-symbols-test.dir/source/main.cpp.o -[ 54%] Linking CXX executable ../../../preprocessor-testd -[ 54%] Linking CXX executable ../../../reflect-metadata-testd -[ 54%] Built target detour-test -[ 54%] Built target adt-map-test -[ 54%] Built target adt-set-test -[ 54%] Building CXX object source/tests/metacall_test/CMakeFiles/metacall-test.dir/source/main.cpp.o -[ 54%] Building CXX object source/tests/metacall_load_configuration_relative_test/CMakeFiles/metacall-load-configuration-relative-test.dir/source/metacall_load_configuration_relative_test.cpp.o -[ 54%] Built target reflect-function-test -[ 54%] Building CXX object source/tests/metacall_handle_export_test/CMakeFiles/metacall-handle-export-test.dir/source/main.cpp.o -[ 54%] Building CXX object source/tests/metacall_duplicated_symbols_test/CMakeFiles/metacall-duplicated-symbols-test.dir/source/metacall_duplicated_symbols_test.cpp.o -[ 55%] Building CXX object source/tests/metacall_handle_get_test/CMakeFiles/metacall-handle-get-test.dir/source/main.cpp.o -[ 55%] Built target log-test -[ 55%] Built target dynlink-test -[ 55%] Building CXX object source/tests/metacall_node_test/CMakeFiles/metacall-node-test.dir/source/main.cpp.o -[ 55%] Built target preprocessor-test -[ 55%] Building CXX object source/tests/metacall_node_event_loop_test/CMakeFiles/metacall-node-event-loop-test.dir/source/main.cpp.o -[ 55%] Built target reflect-metadata-test -[ 55%] Building CXX object source/tests/metacall_node_event_loop_test/CMakeFiles/metacall-node-event-loop-test.dir/source/metacall_node_event_loop_test.cpp.o -[ 56%] Building CXX object source/tests/metacall_node_test/CMakeFiles/metacall-node-test.dir/source/metacall_node_test.cpp.o -[ 56%] Building C object source/tests/rb_loader_parser_test/CMakeFiles/rb-loader-parser-test.dir/__/__/loaders/rb_loader/source/rb_loader_impl_parser.c.o -[ 56%] Building CXX object source/tests/metacall_duplicated_handle_test/CMakeFiles/metacall-duplicated-handle-test.dir/source/metacall_duplicated_handle_test.cpp.o -[ 56%] Building CXX object source/tests/metacall_load_configuration_node_python_test/CMakeFiles/metacall-load-configuration-node-python-test.dir/source/metacall_load_configuration_node_python_test.cpp.o -[ 56%] Building CXX object source/tests/metacall_load_configuration_python_node_test/CMakeFiles/metacall-load-configuration-python-node-test.dir/source/metacall_load_configuration_python_node_test.cpp.o -[ 57%] Linking CXX executable ../../../rb-loader-parser-testd -[ 57%] Linking CXX executable ../../../configuration-testd -[ 57%] Linking CXX executable ../../../reflect-scope-testd -[ 57%] Built target rb-loader-parser-test -[ 58%] Building CXX object source/tests/metacall_node_event_loop_signal_test/CMakeFiles/metacall-node-event-loop-signal-test.dir/source/main.cpp.o -[ 58%] Built target configuration-test -[ 58%] Building CXX object source/tests/metacall_node_call_test/CMakeFiles/metacall-node-call-test.dir/source/main.cpp.o -[ 58%] Built target reflect-scope-test -[ 58%] Building CXX object source/tests/metacall_node_inline_test/CMakeFiles/metacall-node-inline-test.dir/source/main.cpp.o -[ 58%] Building CXX object source/tests/metacall_node_async_test/CMakeFiles/metacall-node-async-test.dir/source/main.cpp.o -[ 58%] Building CXX object source/tests/metacall_handle_export_test/CMakeFiles/metacall-handle-export-test.dir/source/metacall_handle_export_test.cpp.o -[ 59%] Linking CXX executable ../../../metacall-load-configuration-testd -[ 59%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/reflect_value_cast_long_test.cpp.o -[ 59%] Building CXX object source/tests/metacall_node_inline_test/CMakeFiles/metacall-node-inline-test.dir/source/metacall_node_inline_test.cpp.o -[ 60%] Building CXX object source/tests/metacall_test/CMakeFiles/metacall-test.dir/source/metacall_test.cpp.o -[ 61%] Building CXX object source/tests/metacall_node_async_multiple_test/CMakeFiles/metacall-node-async-multiple-test.dir/source/main.cpp.o -[ 61%] Building CXX object source/tests/metacall_handle_get_test/CMakeFiles/metacall-handle-get-test.dir/source/metacall_handle_get_test.cpp.o -[ 61%] Linking CXX executable ../../../metacall-load-configuration-fail-testd -[ 61%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/reflect_value_cast_float_test.cpp.o -[ 61%] Built target metacall-load-configuration-test -[ 61%] Building CXX object source/tests/metacall_node_reentrant_test/CMakeFiles/metacall-node-reentrant-test.dir/source/main.cpp.o -[ 61%] Linking CXX executable ../../../metacall-node-event-loop-testd -[ 61%] Linking CXX executable ../../../metacall-duplicated-symbols-testd -[ 61%] Built target metacall-load-configuration-fail-test -[ 61%] Building CXX object source/tests/metacall_node_reentrant_test/CMakeFiles/metacall-node-reentrant-test.dir/source/metacall_node_reentrant_test.cpp.o -[ 61%] Built target metacall-duplicated-symbols-test -[ 61%] Linking CXX executable ../../../metacall-load-configuration-relative-testd -[ 61%] Built target metacall-node-event-loop-test -[ 61%] Building CXX object source/tests/metacall_node_port_test/CMakeFiles/metacall-node-port-test.dir/source/main.cpp.o -[ 61%] Building CXX object source/tests/metacall_node_async_test/CMakeFiles/metacall-node-async-test.dir/source/metacall_node_async_test.cpp.o -[ 61%] Building CXX object source/tests/metacall_node_event_loop_signal_test/CMakeFiles/metacall-node-event-loop-signal-test.dir/source/metacall_node_event_loop_signal_test.cpp.o -[ 61%] Building CXX object source/tests/reflect_value_cast_test/CMakeFiles/reflect-value-cast-test.dir/source/reflect_value_cast_double_test.cpp.o -[ 61%] Building CXX object source/tests/metacall_node_async_multiple_test/CMakeFiles/metacall-node-async-multiple-test.dir/source/metacall_node_async_multiple_test.cpp.o -[ 61%] Building CXX object source/tests/metacall_node_call_test/CMakeFiles/metacall-node-call-test.dir/source/metacall_node_call_test.cpp.o -[ 61%] Linking CXX executable ../../../metacall-load-configuration-node-python-testd -[ 61%] Building CXX object source/tests/metacall_node_port_test/CMakeFiles/metacall-node-port-test.dir/source/metacall_node_port_test.cpp.o -[ 61%] Linking CXX executable ../../../metacall-load-configuration-python-node-testd -[ 61%] Built target metacall-load-configuration-relative-test -[ 61%] Building CXX object source/tests/metacall_node_port_await_test/CMakeFiles/metacall-node-port-await-test.dir/source/main.cpp.o -[ 61%] Linking CXX executable ../../../serial-testd -[ 61%] Linking CXX executable ../../../portability-path-testd -[ 61%] Built target metacall-load-configuration-node-python-test -[ 61%] Building CXX object source/tests/metacall_node_port_c_lib_test/CMakeFiles/metacall-node-port-c-lib-test.dir/source/main.cpp.o -[ 61%] Built target metacall-load-configuration-python-node-test -[ 61%] Building CXX object source/tests/metacall_node_python_port_mock_test/CMakeFiles/metacall-node-python-port-mock-test.dir/source/main.cpp.o -[ 61%] Linking CXX executable ../../../reflect-object-class-testd -[ 61%] Building CXX object source/tests/metacall_node_python_port_ruby_test/CMakeFiles/metacall-node-python-port-ruby-test.dir/source/main.cpp.o -[ 61%] Built target serial-test -[ 61%] Linking CXX executable ../../../metacall-duplicated-handle-testd -[ 61%] Building CXX object source/tests/metacall_node_python_port_mock_test/CMakeFiles/metacall-node-python-port-mock-test.dir/source/metacall_node_python_port_mock_test.cpp.o -[ 61%] Building CXX object source/tests/metacall_node_port_c_lib_test/CMakeFiles/metacall-node-port-c-lib-test.dir/source/metacall_node_port_c_lib_test.cpp.o -[ 61%] Built target portability-path-test -[ 61%] Building CXX object source/tests/metacall_node_python_ruby_test/CMakeFiles/metacall-node-python-ruby-test.dir/source/main.cpp.o -[ 61%] Built target reflect-object-class-test -[ 61%] Building CXX object source/tests/metacall_node_callback_test/CMakeFiles/metacall-node-callback-test.dir/source/main.cpp.o -[ 61%] Built target metacall-duplicated-handle-test -[ 61%] Building CXX object source/tests/metacall_node_fail_test/CMakeFiles/metacall-node-fail-test.dir/source/main.cpp.o -[ 61%] Building CXX object source/tests/metacall_node_fail_env_var_test/CMakeFiles/metacall-node-fail-env-var-test.dir/source/main.cpp.o -[ 61%] Linking CXX executable ../../../metacall-node-testd -[ 61%] Built target metacall-node-test -[ 61%] Building CXX object source/tests/metacall_node_fail_load_leak_test/CMakeFiles/metacall-node-fail-load-leak-test.dir/source/main.cpp.o -[ 62%] Building CXX object source/tests/metacall_node_fail_load_leak_test/CMakeFiles/metacall-node-fail-load-leak-test.dir/source/metacall_node_fail_load_leak_test.cpp.o -[ 62%] Building CXX object source/tests/metacall_node_port_await_test/CMakeFiles/metacall-node-port-await-test.dir/source/metacall_node_port_await_test.cpp.o -[ 62%] Building CXX object source/tests/metacall_node_python_port_ruby_test/CMakeFiles/metacall-node-python-port-ruby-test.dir/source/metacall_node_python_port_ruby_test.cpp.o -[ 62%] Building CXX object source/tests/metacall_node_typescript_test/CMakeFiles/metacall-node-typescript-test.dir/source/main.cpp.o -[ 62%] Building CXX object source/tests/metacall_node_python_async_after_destroy_test/CMakeFiles/metacall-node-python-async-after-destroy-test.dir/source/main.cpp.o -[ 62%] Linking CXX executable ../../../metacall-handle-export-testd -[ 62%] Linking CXX executable ../../../metacall-node-event-loop-signal-testd -[ 63%] Building CXX object source/tests/metacall_node_python_async_after_destroy_test/CMakeFiles/metacall-node-python-async-after-destroy-test.dir/source/metacall_node_python_async_after_destroy_test.cpp.o -[ 63%] Linking CXX executable ../../../metacall-node-inline-testd -[ 63%] Building CXX object source/tests/metacall_node_python_ruby_test/CMakeFiles/metacall-node-python-ruby-test.dir/source/metacall_node_python_ruby_test.cpp.o -[ 64%] Linking CXX executable ../../../metacall-node-call-testd -[ 64%] Built target metacall-handle-export-test -[ 64%] Linking CXX executable ../../../metacall-node-python-port-mock-testd -[ 64%] Built target metacall-node-event-loop-signal-test -[ 64%] Building CXX object source/tests/metacall_node_python_await_test/CMakeFiles/metacall-node-python-await-test.dir/source/main.cpp.o -[ 64%] Building CXX object source/tests/metacall_node_callback_test/CMakeFiles/metacall-node-callback-test.dir/source/metacall_node_callback_test.cpp.o -[ 64%] Building CXX object source/tests/metacall_node_python_await_test/CMakeFiles/metacall-node-python-await-test.dir/source/metacall_node_python_await_test.cpp.o -[ 64%] Linking CXX executable ../../../metacall-node-port-c-lib-testd -[ 64%] Built target metacall-node-inline-test -[ 65%] Building CXX object source/tests/metacall_node_python_exception_test/CMakeFiles/metacall-node-python-exception-test.dir/source/main.cpp.o -[ 65%] Linking CXX executable ../../../reflect-value-cast-testd -[ 65%] Building CXX object source/tests/metacall_node_fail_test/CMakeFiles/metacall-node-fail-test.dir/source/metacall_node_fail_test.cpp.o -[ 65%] Linking CXX executable ../../../metacall-node-port-testd -[ 65%] Built target metacall-node-python-port-mock-test -[ 65%] Built target metacall-node-call-test -[ 65%] Building CXX object source/tests/metacall_node_clear_mem_test/CMakeFiles/metacall-node-clear-mem-test.dir/source/main.cpp.o -[ 65%] Building CXX object source/tests/metacall_node_async_resources_test/CMakeFiles/metacall-node-async-resources-test.dir/source/main.cpp.o -[ 65%] Building CXX object source/tests/metacall_node_fail_env_var_test/CMakeFiles/metacall-node-fail-env-var-test.dir/source/metacall_node_fail_env_var_test.cpp.o -[ 65%] Built target metacall-node-port-c-lib-test -[ 65%] Building CXX object source/tests/metacall_node_async_resources_test/CMakeFiles/metacall-node-async-resources-test.dir/source/metacall_node_async_resources_test.cpp.o -[ 65%] Linking CXX executable ../../../metacall-node-reentrant-testd -[ 65%] Built target metacall-node-port-test -[ 65%] Building CXX object source/tests/metacall_node_await_chain_test/CMakeFiles/metacall-node-await-chain-test.dir/source/main.cpp.o -[ 65%] Built target reflect-value-cast-test -[ 65%] Linking CXX executable ../../../metacall-handle-get-testd -[ 65%] Building CXX object source/tests/metacall_node_exception_test/CMakeFiles/metacall-node-exception-test.dir/source/main.cpp.o -[ 65%] Building CXX object source/tests/metacall_node_exception_test/CMakeFiles/metacall-node-exception-test.dir/source/metacall_node_exception_test.cpp.o -[ 65%] Built target metacall-node-reentrant-test -[ 65%] Building CXX object source/tests/metacall_node_python_deadlock_test/CMakeFiles/metacall-node-python-deadlock-test.dir/source/main.cpp.o -[ 66%] Linking CXX executable ../../../metacall-node-async-testd -[ 66%] Linking CXX executable ../../../metacall-node-async-multiple-testd -[ 66%] Building CXX object source/tests/metacall_node_typescript_test/CMakeFiles/metacall-node-typescript-test.dir/source/metacall_node_typescript_test.cpp.o -[ 66%] Building CXX object source/tests/metacall_node_python_deadlock_test/CMakeFiles/metacall-node-python-deadlock-test.dir/source/metacall_node_python_deadlock_test.cpp.o -[ 66%] Built target metacall-node-async-test -[ 66%] Built target metacall-handle-get-test -[ 66%] Building CXX object source/tests/metacall_node_extension_test/CMakeFiles/metacall-node-extension-test.dir/source/main.cpp.o -[ 66%] Building CXX object source/tests/metacall_node_native_code_test/CMakeFiles/metacall-node-native-code-test.dir/source/main.cpp.o -[ 66%] Built target metacall-node-async-multiple-test -[ 67%] Linking CXX executable ../../../metacall-node-port-await-testd -[ 68%] Building CXX object source/tests/metacall_node_multithread_deadlock_test/CMakeFiles/metacall-node-multithread-deadlock-test.dir/source/main.cpp.o -[ 69%] Linking CXX executable ../../../metacall-node-python-port-ruby-testd -[ 69%] Building CXX object source/tests/metacall_distributable_test/CMakeFiles/metacall-distributable-test.dir/source/main.cpp.o -[ 69%] Linking CXX executable ../../../metacall-node-python-async-after-destroy-testd -[ 69%] Built target metacall-node-python-port-ruby-test -[ 69%] Built target metacall-node-port-await-test -[ 69%] Building CXX object source/tests/metacall_distributable_test/CMakeFiles/metacall-distributable-test.dir/source/metacall_distributable_test.cpp.o -[ 70%] Building CXX object source/tests/metacall_cast_test/CMakeFiles/metacall-cast-test.dir/source/main.cpp.o -[ 70%] Building CXX object source/tests/metacall_node_python_exception_test/CMakeFiles/metacall-node-python-exception-test.dir/source/metacall_node_python_exception_test.cpp.o -[ 70%] Building CXX object source/tests/metacall_cast_test/CMakeFiles/metacall-cast-test.dir/source/metacall_cast_test.cpp.o -[ 70%] Linking CXX executable ../../../metacall-node-python-await-testd -[ 70%] Building CXX object source/tests/metacall_node_clear_mem_test/CMakeFiles/metacall-node-clear-mem-test.dir/source/metacall_node_clear_mem_test.cpp.o -[ 70%] Built target metacall-node-python-async-after-destroy-test -[ 70%] Building CXX object source/tests/metacall_init_fini_test/CMakeFiles/metacall-init-fini-test.dir/source/main.cpp.o -[ 70%] Building CXX object source/tests/metacall_node_native_code_test/CMakeFiles/metacall-node-native-code-test.dir/source/metacall_node_native_code_test.cpp.o -[ 70%] Built target metacall-node-python-await-test -[ 70%] Building CXX object source/tests/metacall_ducktype_test/CMakeFiles/metacall-ducktype-test.dir/source/main.cpp.o -[ 70%] Building CXX object source/tests/metacall_node_await_chain_test/CMakeFiles/metacall-node-await-chain-test.dir/source/metacall_node_await_chain_test.cpp.o -[ 70%] Linking CXX executable ../../../metacall-node-fail-load-leak-testd -[ 70%] Building CXX object source/tests/metacall_inspect_test/CMakeFiles/metacall-inspect-test.dir/source/main.cpp.o -[ 70%] Linking CXX executable ../../../metacall-node-async-resources-testd -[ 70%] Built target metacall-node-fail-load-leak-test -[ 70%] Building CXX object source/tests/metacall_integration_test/CMakeFiles/metacall-integration-test.dir/source/main.cpp.o -[ 70%] Building CXX object source/tests/metacall_ducktype_test/CMakeFiles/metacall-ducktype-test.dir/source/metacall_ducktype_test.cpp.o -[ 70%] Building CXX object source/tests/metacall_node_extension_test/CMakeFiles/metacall-node-extension-test.dir/source/metacall_node_extension_test.cpp.o -[ 70%] Linking CXX executable ../../../metacall-node-callback-testd -[ 70%] Built target metacall-node-async-resources-test -[ 70%] Linking CXX executable ../../../metacall-node-python-ruby-testd -[ 71%] Building CXX object source/tests/metacall_depends_test/CMakeFiles/metacall-depends-test.dir/source/main.cpp.o -[ 72%] Linking CXX executable ../../../metacall-node-exception-testd -[ 72%] Linking CXX executable ../../../metacall-node-python-deadlock-testd -[ 72%] Building CXX object source/tests/metacall_node_multithread_deadlock_test/CMakeFiles/metacall-node-multithread-deadlock-test.dir/source/metacall_node_multithread_deadlock_test.cpp.o -[ 72%] Built target metacall-node-callback-test -[ 72%] Linking CXX executable ../../../metacall-node-fail-testd -[ 72%] Building CXX object source/tests/metacall_depends_test/CMakeFiles/metacall-depends-test.dir/source/metacall_depends_test.cpp.o -[ 72%] Linking CXX executable ../../../metacall-node-fail-env-var-testd -[ 72%] Building CXX object source/tests/metacall_init_fini_test/CMakeFiles/metacall-init-fini-test.dir/source/metacall_init_fini_test.cpp.o -[ 72%] Built target metacall-node-python-ruby-test -[ 72%] Built target metacall-node-exception-test -[ 72%] Building CXX object source/tests/metacall_configuration_default_test/CMakeFiles/metacall-configuration-default-test.dir/source/main.cpp.o -[ 72%] Building CXX object source/tests/metacall_configuration_exec_path_test/CMakeFiles/metacall-configuration-exec-path-test.dir/source/main.cpp.o -[ 72%] Building CXX object source/tests/metacall_configuration_default_test/CMakeFiles/metacall-configuration-default-test.dir/source/metacall_configuration_default_test.cpp.o -[ 72%] Built target metacall-node-python-deadlock-test -[ 72%] Building CXX object source/tests/metacall_configuration_exec_path_test/CMakeFiles/metacall-configuration-exec-path-test.dir/source/metacall_configuration_exec_path_test.cpp.o -[ 72%] Built target metacall-node-fail-test -[ 72%] Building CXX object source/tests/metacall_clear_test/CMakeFiles/metacall-clear-test.dir/source/main.cpp.o -[ 72%] Built target metacall-node-fail-env-var-test -[ 72%] Building CXX object source/tests/metacall_python_test/CMakeFiles/metacall-python-test.dir/source/main.cpp.o -[ 72%] Building CXX object source/tests/metacall_python_test/CMakeFiles/metacall-python-test.dir/source/metacall_python_test.cpp.o -[ 72%] Linking CXX executable ../../../metacall-testd -[ 72%] Building CXX object source/tests/metacall_clear_test/CMakeFiles/metacall-clear-test.dir/source/metacall_clear_test.cpp.o -[ 72%] Linking CXX executable ../../../metacall-node-python-exception-testd -[ 72%] Building CXX object source/tests/metacall_inspect_test/CMakeFiles/metacall-inspect-test.dir/source/metacall_inspect_test.cpp.o -[ 72%] Built target metacall-test -[ 72%] Building CXX object source/tests/metacall_python_object_class_test/CMakeFiles/metacall-python-object-class-test.dir/source/main.cpp.o -[ 72%] Built target metacall-node-python-exception-test -[ 72%] Building CXX object source/tests/metacall_python_gc_test/CMakeFiles/metacall-python-gc-test.dir/source/main.cpp.o -[ 72%] Linking CXX executable ../../../metacall-cast-testd -[ 72%] Building CXX object source/tests/metacall_integration_test/CMakeFiles/metacall-integration-test.dir/source/environment.cpp.o -[ 72%] Linking CXX executable ../../../metacall-node-clear-mem-testd -[ 72%] Building CXX object source/tests/metacall_python_gc_test/CMakeFiles/metacall-python-gc-test.dir/source/metacall_python_gc_test.cpp.o -[ 72%] Linking CXX executable ../../../metacall-node-typescript-testd -[ 72%] Built target metacall-cast-test -[ 72%] Building CXX object source/tests/metacall_python_open_test/CMakeFiles/metacall-python-open-test.dir/source/main.cpp.o -[ 72%] Built target metacall-node-clear-mem-test -[ 72%] Linking CXX executable ../../../metacall-node-await-chain-testd -[ 72%] Building CXX object source/tests/metacall_python_dict_test/CMakeFiles/metacall-python-dict-test.dir/source/main.cpp.o -[ 72%] Built target metacall-node-typescript-test -[ 72%] Building CXX object source/tests/metacall_integration_test/CMakeFiles/metacall-integration-test.dir/source/metacall_integration_test.cpp.o -[ 72%] Building CXX object source/tests/metacall_python_pointer_test/CMakeFiles/metacall-python-pointer-test.dir/source/main.cpp.o -[ 72%] Building CXX object source/tests/metacall_python_dict_test/CMakeFiles/metacall-python-dict-test.dir/source/metacall_python_dict_test.cpp.o -[ 72%] Building CXX object source/tests/metacall_python_reentrant_test/CMakeFiles/metacall-python-reentrant-test.dir/source/main.cpp.o -[ 72%] Built target metacall-node-await-chain-test -[ 73%] Building CXX object source/tests/metacall_python_object_class_test/CMakeFiles/metacall-python-object-class-test.dir/source/metacall_python_object_class_test.cpp.o -[ 73%] Building CXX object source/tests/metacall_python_varargs_test/CMakeFiles/metacall-python-varargs-test.dir/source/main.cpp.o -[ 73%] Linking CXX executable ../../../configuration-default-test/metacall-configuration-default-testd -[ 73%] Linking CXX executable ../../../metacall-node-native-code-testd -[ 73%] Linking CXX executable ../../../metacall-init-fini-testd -[ 73%] Built target metacall-configuration-default-test -[ 73%] Building CXX object source/tests/metacall_python_reentrant_test/CMakeFiles/metacall-python-reentrant-test.dir/source/metacall_python_reentrant_test.cpp.o -[ 74%] Building CXX object source/tests/metacall_python_loader_port_test/CMakeFiles/py-loader-port-test.dir/source/main.cpp.o -[ 74%] Linking CXX executable ../../../metacall-configuration-exec-path-testd -[ 74%] Built target metacall-node-native-code-test -[ 74%] Built target metacall-init-fini-test -[ 74%] Building CXX object source/tests/metacall_python_loader_port_test/CMakeFiles/py-loader-port-test.dir/source/metacall_python_loader_port_test.cpp.o -[ 74%] Building CXX object source/tests/metacall_python_port_https_test/CMakeFiles/metacall-python-port-https-test.dir/source/main.cpp.o -[ 75%] Building CXX object source/tests/metacall_python_port_callback_test/CMakeFiles/metacall-python-port-callback-test.dir/source/main.cpp.o -[ 75%] Linking CXX executable ../../../metacall-distributable-testd -[ 75%] Linking CXX executable ../../../metacall-node-extension-testd -[ 75%] Linking CXX executable ../../../metacall-clear-testd -[ 75%] Building CXX object source/tests/metacall_python_port_callback_test/CMakeFiles/metacall-python-port-callback-test.dir/source/metacall_python_port_callback_test.cpp.o -[ 75%] Linking CXX executable ../../../metacall-node-multithread-deadlock-testd -[ 75%] Built target metacall-configuration-exec-path-test -[ 75%] Building CXX object source/tests/metacall_python_port_pointer_test/CMakeFiles/metacall-python-port-pointer-test.dir/source/main.cpp.o -[ 75%] Linking CXX executable ../../../metacall-python-testd -[ 75%] Linking CXX executable ../../../metacall-depends-testd -[ 75%] Building CXX object source/tests/metacall_python_open_test/CMakeFiles/metacall-python-open-test.dir/source/metacall_python_open_test.cpp.o -[ 75%] Built target metacall-node-extension-test -[ 75%] Built target metacall-distributable-test -[ 75%] Building CXX object source/tests/metacall_python_port_pointer_test/CMakeFiles/metacall-python-port-pointer-test.dir/source/metacall_python_port_pointer_test.cpp.o -[ 75%] Built target metacall-clear-test -[ 76%] Building CXX object source/tests/metacall_python_callback_test/CMakeFiles/metacall-python-callback-test.dir/source/main.cpp.o -[ 76%] Building CXX object source/tests/metacall_python_port_import_test/CMakeFiles/metacall-python-port-import-test.dir/source/main.cpp.o -[ 76%] Building CXX object source/tests/metacall_python_fail_test/CMakeFiles/metacall-python-fail-test.dir/source/main.cpp.o -[ 77%] Linking CXX executable ../../../metacall-ducktype-testd -[ 77%] Building CXX object source/tests/metacall_python_fail_test/CMakeFiles/metacall-python-fail-test.dir/source/metacall_python_fail_test.cpp.o -[ 77%] Built target metacall-node-multithread-deadlock-test -[ 77%] Building CXX object source/tests/metacall_python_pointer_test/CMakeFiles/metacall-python-pointer-test.dir/source/metacall_python_pointer_test.cpp.o -[ 77%] Built target metacall-python-test -[ 77%] Built target metacall-depends-test -[ 77%] Building CXX object source/tests/metacall_python_without_functions_test/CMakeFiles/metacall-python-without-functions-test.dir/source/main.cpp.o -[ 77%] Building CXX object source/tests/metacall_python_relative_path_test/CMakeFiles/metacall-python-relative-path-test.dir/source/main.cpp.o -[ 77%] Building CXX object source/tests/metacall_python_builtins_test/CMakeFiles/metacall-python-builtins-test.dir/source/main.cpp.o -[ 77%] Building CXX object source/tests/metacall_python_varargs_test/CMakeFiles/metacall-python-varargs-test.dir/source/metacall_python_varargs_test.cpp.o -[ 77%] Linking CXX executable ../../../metacall-python-gc-testd -[ 77%] Linking CXX executable ../../../metacall-inspect-testd -[ 77%] Built target metacall-ducktype-test -[ 77%] Building CXX object source/tests/metacall_python_port_import_test/CMakeFiles/metacall-python-port-import-test.dir/source/metacall_python_port_import_test.cpp.o -[ 77%] Built target metacall-inspect-test -[ 77%] Built target metacall-python-gc-test -[ 77%] Building CXX object source/tests/metacall_python_callback_test/CMakeFiles/metacall-python-callback-test.dir/source/metacall_python_callback_test.cpp.o -[ 77%] Building CXX object source/tests/metacall_python_async_test/CMakeFiles/metacall-python-async-test.dir/source/main.cpp.o -[ 77%] Building CXX object source/tests/metacall_python_without_functions_test/CMakeFiles/metacall-python-without-functions-test.dir/source/metacall_python_without_functions_test.cpp.o -[ 77%] Building CXX object source/tests/metacall_python_async_test/CMakeFiles/metacall-python-async-test.dir/source/metacall_python_async_test.cpp.o -[ 77%] Building CXX object source/tests/metacall_python_port_https_test/CMakeFiles/metacall-python-port-https-test.dir/source/metacall_python_port_https_test.cpp.o -[ 78%] Linking CXX executable ../../../metacall-integration-testd -[ 78%] Building CXX object source/tests/metacall_python_builtins_test/CMakeFiles/metacall-python-builtins-test.dir/source/metacall_python_builtins_test.cpp.o -[ 79%] Building CXX object source/tests/metacall_python_relative_path_test/CMakeFiles/metacall-python-relative-path-test.dir/source/metacall_python_relative_path_test.cpp.o -[ 79%] Built target metacall-integration-test -[ 79%] Building CXX object source/tests/metacall_python_exception_test/CMakeFiles/metacall-python-exception-test.dir/source/main.cpp.o -[ 79%] Building CXX object source/tests/metacall_python_exception_test/CMakeFiles/metacall-python-exception-test.dir/source/metacall_python_exception_test.cpp.o -[ 79%] Linking CXX executable ../../../metacall-python-port-callback-testd -[ 80%] Building CXX object source/tests/metacall_python_without_env_vars_test/CMakeFiles/metacall-python-without-env-vars-test.dir/source/main.cpp.o -[ 80%] Building CXX object source/tests/metacall_python_without_env_vars_test/CMakeFiles/metacall-python-without-env-vars-test.dir/source/metacall_python_without_env_vars_test.cpp.o -[ 80%] Linking CXX executable ../../../metacall-python-reentrant-testd -[ 80%] Building CXX object source/tests/metacall_map_test/CMakeFiles/metacall-map-test.dir/source/main.cpp.o -[ 80%] Building CXX object source/tests/metacall_map_test/CMakeFiles/metacall-map-test.dir/source/metacall_map_test.cpp.o -[ 80%] Built target metacall-python-port-callback-test -[ 80%] Built target metacall-python-reentrant-test -[ 80%] Building CXX object source/tests/metacall_initialize_test/CMakeFiles/metacall-initialize-test.dir/source/main.cpp.o -[ 80%] Building CXX object source/tests/metacall_map_await_test/CMakeFiles/metacall-map-await-test.dir/source/main.cpp.o -[ 80%] Linking CXX executable ../../../py-loader-port-testd -[ 80%] Building CXX object source/tests/metacall_map_await_test/CMakeFiles/metacall-map-await-test.dir/source/metacall_map_await_test.cpp.o -[ 80%] Linking CXX executable ../../../metacall-python-dict-testd -[ 80%] Linking CXX executable ../../../metacall-python-port-pointer-testd -[ 80%] Built target py-loader-port-test -[ 80%] Built target metacall-python-dict-test -[ 80%] Building CXX object source/tests/metacall_initialize_ex_test/CMakeFiles/metacall-initialize-ex-test.dir/source/main.cpp.o -[ 81%] Building CXX object source/tests/metacall_reinitialize_test/CMakeFiles/metacall-reinitialize-test.dir/source/main.cpp.o -[ 81%] Linking CXX executable ../../../metacall-python-object-class-testd -[ 81%] Linking CXX executable ../../../metacall-python-fail-testd -[ 81%] Linking CXX executable ../../../metacall-python-varargs-testd -[ 81%] Built target metacall-python-port-pointer-test -[ 81%] Building CXX object source/tests/metacall_initialize_destroy_multiple_test/CMakeFiles/metacall-initialize-destroy-multiple-test.dir/source/main.cpp.o -[ 81%] Building CXX object source/tests/metacall_initialize_destroy_multiple_node_test/CMakeFiles/metacall-initialize-destroy-multiple-node-test.dir/source/main.cpp.o -[ 82%] Linking CXX executable ../../../metacall-python-port-import-testd -[ 82%] Built target metacall-python-object-class-test -[ 82%] Linking CXX executable ../../../metacall-python-port-https-testd -[ 82%] Building CXX object source/tests/metacall_reload_functions_test/CMakeFiles/metacall-reload-functions-test.dir/source/main.cpp.o -[ 82%] Linking CXX executable ../../../metacall-python-pointer-testd -[ 82%] Built target metacall-python-fail-test -[ 82%] Building CXX object source/tests/metacall_initialize_destroy_multiple_node_test/CMakeFiles/metacall-initialize-destroy-multiple-node-test.dir/source/metacall_initialize_destroy_multiple_node_test.cpp.o -[ 82%] Building CXX object source/tests/metacall_initialize_destroy_multiple_test/CMakeFiles/metacall-initialize-destroy-multiple-test.dir/source/metacall_initialize_destroy_multiple_test.cpp.o -[ 82%] Linking CXX executable ../../../metacall-python-callback-testd -[ 82%] Built target metacall-python-varargs-test -[ 82%] Building CXX object source/tests/metacall_invalid_loader_test/CMakeFiles/metacall-invalid-loader-test.dir/source/metacall_invalid_loader_test.cpp.o -[ 83%] Building CXX object source/tests/metacall_initialize_test/CMakeFiles/metacall-initialize-test.dir/source/metacall_initialize_test.cpp.o -[ 83%] Building CXX object source/tests/metacall_invalid_loader_test/CMakeFiles/metacall-invalid-loader-test.dir/source/main.cpp.o -[ 83%] Linking CXX executable ../../../metacall-python-open-testd -[ 83%] Built target metacall-python-port-https-test -[ 83%] Built target metacall-python-port-import-test -[ 84%] Linking CXX executable ../../../metacall-python-exception-testd -[ 84%] Linking CXX executable ../../../metacall-python-without-functions-testd -[ 84%] Building CXX object source/tests/metacall_return_monad_test/CMakeFiles/metacall-return-monad-test.dir/source/main.cpp.o -[ 84%] Building CXX object source/tests/metacall_fork_test/CMakeFiles/metacall-fork-test.dir/source/main.cpp.o -[ 84%] Building CXX object source/tests/metacall_fork_test/CMakeFiles/metacall-fork-test.dir/source/metacall_fork_test.cpp.o -[ 84%] Built target metacall-python-callback-test -[ 84%] Built target metacall-python-pointer-test -[ 84%] Building CXX object source/tests/metacall_return_monad_test/CMakeFiles/metacall-return-monad-test.dir/source/metacall_return_monad_test.cpp.o -[ 84%] Linking CXX executable ../../../metacall-python-without-env-vars-testd -[ 84%] Building CXX object source/tests/metacall_callback_complex_test/CMakeFiles/metacall-callback-complex-test.dir/source/main.cpp.o -[ 84%] Built target metacall-python-open-test -[ 84%] Built target metacall-python-without-functions-test -[ 84%] Building CXX object source/tests/metacall_callback_complex_test/CMakeFiles/metacall-callback-complex-test.dir/source/metacall_callback_complex_test.cpp.o -[ 84%] Building CXX object source/tests/metacall_ruby_fail_test/CMakeFiles/metacall-ruby-fail-test.dir/source/main.cpp.o -[ 84%] Built target metacall-python-exception-test -[ 84%] Building CXX object source/tests/metacall_ruby_fail_empty_test/CMakeFiles/metacall-ruby-fail-empty-test.dir/source/main.cpp.o -[ 84%] Linking CXX executable ../../../metacall-python-builtins-testd -[ 84%] Linking CXX executable ../../../metacall-python-async-testd -[ 84%] Built target metacall-python-without-env-vars-test -[ 84%] Building CXX object source/tests/metacall_ruby_object_class_test/CMakeFiles/metacall-ruby-object-class-test.dir/source/main.cpp.o -[ 84%] Building CXX object source/tests/metacall_initialize_ex_test/CMakeFiles/metacall-initialize-ex-test.dir/source/metacall_initialize_ex_test.cpp.o -[ 84%] Building CXX object source/tests/metacall_reinitialize_test/CMakeFiles/metacall-reinitialize-test.dir/source/metacall_reinitialize_test.cpp.o -[ 84%] Linking CXX executable ../../../metacall-python-relative-path-testd -[ 84%] Built target metacall-python-async-test -[ 84%] Building CXX object source/tests/metacall_ruby_parser_integration_test/CMakeFiles/metacall-ruby-parser-integration-test.dir/source/main.cpp.o -[ 84%] Built target metacall-python-builtins-test -[ 84%] Building CXX object source/tests/metacall_ruby_parser_integration_test/CMakeFiles/metacall-ruby-parser-integration-test.dir/source/metacall_ruby_parser_integration_test.cpp.o -[ 84%] Building CXX object source/tests/metacall_ruby_object_class_test/CMakeFiles/metacall-ruby-object-class-test.dir/source/metacall_ruby_object_class_test.cpp.o -[ 84%] Building CXX object source/tests/metacall_function_test/CMakeFiles/metacall-function-test.dir/source/main.cpp.o -[ 84%] Built target metacall-python-relative-path-test -[ 84%] Linking CXX executable ../../../metacall-map-testd -[ 84%] Building CXX object source/tests/metacall_reload_functions_test/CMakeFiles/metacall-reload-functions-test.dir/source/metacall_reload_functions_test.cpp.o -[ 84%] Building CXX object source/tests/metacall_cobol_test/CMakeFiles/metacall-cobol-test.dir/source/main.cpp.o -[ 84%] Building CXX object source/tests/metacall_cobol_test/CMakeFiles/metacall-cobol-test.dir/source/metacall_cobol_test.cpp.o -[ 84%] Built target metacall-map-test -[ 84%] Building CXX object source/tests/metacall_file_test/CMakeFiles/metacall-file-test.dir/source/main.cpp.o -[ 84%] Building CXX object source/tests/metacall_file_fail_test/CMakeFiles/metacall-file-fail-test.dir/source/main.cpp.o -[ 84%] Building CXX object source/tests/metacall_file_test/CMakeFiles/metacall-file-test.dir/source/metacall_file_test.cpp.o -[ 84%] Linking CXX executable ../../../metacall-invalid-loader-testd -[ 85%] Linking CXX executable ../../../metacall-initialize-destroy-multiple-node-testd -[ 85%] Linking CXX executable ../../../metacall-initialize-destroy-multiple-testd -[ 86%] Building CXX object source/tests/metacall_ruby_fail_test/CMakeFiles/metacall-ruby-fail-test.dir/source/metacall_ruby_fail_test.cpp.o -[ 86%] Linking CXX executable ../../../metacall-initialize-testd -[ 87%] Building CXX object source/tests/metacall_file_glob_test/CMakeFiles/metacall-file-glob-test.dir/source/main.cpp.o -[ 87%] Building CXX object source/tests/metacall_ruby_fail_empty_test/CMakeFiles/metacall-ruby-fail-empty-test.dir/source/metacall_ruby_fail_empty_test.cpp.o -[ 87%] Built target metacall-invalid-loader-test -[ 87%] Building CXX object source/tests/metacall_typescript_test/CMakeFiles/metacall-typescript-test.dir/source/main.cpp.o -[ 88%] Linking CXX executable ../../../metacall-fork-testd -[ 88%] Built target metacall-initialize-destroy-multiple-test -[ 88%] Built target metacall-initialize-destroy-multiple-node-test -[ 88%] Building CXX object source/tests/metacall_file_glob_test/CMakeFiles/metacall-file-glob-test.dir/source/metacall_file_glob_test.cpp.o -[ 88%] Building CXX object source/tests/metacall_typescript_test/CMakeFiles/metacall-typescript-test.dir/source/metacall_typescript_test.cpp.o -[ 88%] Built target metacall-initialize-test -[ 89%] Building CXX object source/tests/metacall_typescript_node_test/CMakeFiles/metacall-typescript-node-test.dir/source/main.cpp.o -[ 89%] Building CXX object source/tests/metacall_typescript_call_map_test/CMakeFiles/metacall-typescript-call-map-test.dir/source/main.cpp.o -[ 89%] Building CXX object source/tests/metacall_typescript_call_map_test/CMakeFiles/metacall-typescript-call-map-test.dir/source/metacall_typescript_call_map_test.cpp.o -[ 89%] Built target metacall-fork-test -[ 89%] Linking CXX executable ../../../metacall-map-await-testd -[ 89%] Building CXX object source/tests/metacall_typescript_tsx_test/CMakeFiles/metacall-typescript-tsx-test.dir/source/main.cpp.o -[ 89%] Linking CXX executable ../../../metacall-initialize-ex-testd -[ 89%] Linking CXX executable ../../../metacall-reinitialize-testd -[ 89%] Built target metacall-map-await-test -[ 89%] Building CXX object source/tests/metacall_function_test/CMakeFiles/metacall-function-test.dir/source/metacall_function_test.cpp.o -[ 89%] Building CXX object source/tests/metacall_typescript_tsx_loop_fail_test/CMakeFiles/metacall-typescript-tsx-loop-fail-test.dir/source/main.cpp.o -[ 89%] Built target metacall-initialize-ex-test -[ 89%] Building CXX object source/tests/metacall_typescript_require_test/CMakeFiles/metacall-typescript-require-test.dir/source/main.cpp.o -[ 89%] Building CXX object source/tests/metacall_typescript_jsx_default_test/CMakeFiles/metacall-typescript-jsx-default-test.dir/source/main.cpp.o -[ 89%] Built target metacall-reinitialize-test -[ 89%] Building CXX object source/tests/metacall_typescript_jsx_default_test/CMakeFiles/metacall-typescript-jsx-default-test.dir/source/metacall_typescript_jsx_default_test.cpp.o -[ 89%] Building CXX object source/tests/metacall_file_fail_test/CMakeFiles/metacall-file-fail-test.dir/source/metacall_file_fail_test.cpp.o -[ 89%] Building CXX object source/tests/metacall_typescript_require_test/CMakeFiles/metacall-typescript-require-test.dir/source/metacall_typescript_require_test.cpp.o -[ 89%] Building CXX object source/tests/metacall_typescript_node_test/CMakeFiles/metacall-typescript-node-test.dir/source/metacall_typescript_node_test.cpp.o -[ 89%] Linking CXX executable ../../../metacall-ruby-parser-integration-testd -[ 89%] Linking CXX executable ../../../metacall-ruby-fail-testd -[ 90%] Linking CXX executable ../../../metacall-return-monad-testd -[ 90%] Building CXX object source/tests/metacall_typescript_tsx_test/CMakeFiles/metacall-typescript-tsx-test.dir/source/metacall_typescript_tsx_test.cpp.o -[ 90%] Building CXX object source/tests/metacall_typescript_tsx_loop_fail_test/CMakeFiles/metacall-typescript-tsx-loop-fail-test.dir/source/metacall_typescript_tsx_loop_fail_test.cpp.o -[ 90%] Built target metacall-ruby-parser-integration-test -[ 90%] Building CXX object source/tests/metacall_csharp_static_class_test/CMakeFiles/metacall-csharp-static-class-test.dir/source/main.cpp.o -[ 90%] Building CXX object source/tests/metacall_rpc_test/CMakeFiles/metacall-rpc-test.dir/source/main.cpp.o -[ 90%] Built target metacall-ruby-fail-test -[ 90%] Building CXX object source/tests/metacall_csharp_static_class_test/CMakeFiles/metacall-csharp-static-class-test.dir/source/metacall_csharp_static_class_test.cpp.o -[ 91%] Building CXX object source/tests/metacall_ruby_test/CMakeFiles/metacall-ruby-test.dir/source/main.cpp.o -[ 91%] Built target metacall-return-monad-test -[ 91%] Building CXX object source/tests/metacall_cs_test/CMakeFiles/metacall-cs-test.dir/source/main.cpp.o -[ 91%] Building CXX object source/tests/metacall_cs_test/CMakeFiles/metacall-cs-test.dir/source/environment.cpp.o -[ 91%] Linking CXX executable ../../../metacall-callback-complex-testd -[ 91%] Building CXX object source/tests/metacall_cs_test/CMakeFiles/metacall-cs-test.dir/source/metacall_cs_test.cpp.o -[ 91%] Building CXX object source/tests/metacall_rpc_test/CMakeFiles/metacall-rpc-test.dir/source/metacall_rpc_test.cpp.o -[ 92%] Linking CXX executable ../../../metacall-cobol-testd -[ 92%] Linking CXX executable ../../../metacall-ruby-fail-empty-testd -[ 92%] Linking CXX executable ../../../metacall-reload-functions-testd -[ 92%] Linking CXX executable ../../../metacall-ruby-object-class-testd -[ 92%] Linking CXX executable ../../../metacall-file-testd -[ 92%] Built target metacall-callback-complex-test -[ 92%] Linking CXX executable ../../../metacall-typescript-jsx-default-testd -[ 92%] Building CXX object source/tests/metacall_java_test/CMakeFiles/metacall-java-test.dir/source/main.cpp.o -[ 92%] Built target metacall-cobol-test -[ 92%] Building CXX object source/tests/metacall_wasm_test/CMakeFiles/metacall-wasm-test.dir/source/main.cpp.o -[ 92%] Built target metacall-ruby-object-class-test -[ 92%] Built target metacall-reload-functions-test -[ 92%] Built target metacall-ruby-fail-empty-test -[ 92%] Building CXX object source/tests/metacall_wasm_python_port_test/CMakeFiles/metacall-wasm-python-port-test.dir/source/main.cpp.o -[ 92%] Building CXX object source/tests/metacall_c_lib_test/CMakeFiles/metacall-c-lib-test.dir/source/main.cpp.o -[ 92%] Building CXX object source/tests/metacall_c_test/CMakeFiles/metacall-c-test.dir/source/main.cpp.o -[ 92%] Built target metacall-file-test -[ 92%] Built target metacall-typescript-jsx-default-test -[ 92%] Building CXX object source/tests/metacall_version_test/CMakeFiles/metacall-version-test.dir/source/main.cpp.o -[ 92%] Building CXX object source/tests/metacall_dynlink_path_test/CMakeFiles/metacall-dynlink-path-test.dir/source/main.cpp.o -[ 93%] Linking CXX executable ../../../metacall-typescript-testd -[ 94%] Building CXX object source/tests/metacall_dynlink_path_test/CMakeFiles/metacall-dynlink-path-test.dir/source/metacall_dynlink_path_test.cpp.o -[ 94%] Linking CXX executable ../../../metacall-file-glob-testd -[ 94%] Linking CXX executable ../../../metacall-typescript-call-map-testd -[ 94%] Building CXX object source/tests/metacall_ruby_test/CMakeFiles/metacall-ruby-test.dir/source/metacall_ruby_test.cpp.o -[ 95%] Building CXX object source/tests/metacall_version_test/CMakeFiles/metacall-version-test.dir/source/metacall_version_test.cpp.o -[ 95%] Built target metacall-typescript-test -[ 95%] Building CXX object source/tests/metacall_library_path_without_env_vars_test/CMakeFiles/metacall-library-path-without-env-vars-test.dir/source/main.cpp.o -[ 95%] Built target metacall-file-glob-test -[ 95%] Building CXX object source/tests/metacall_ext_test/CMakeFiles/metacall-ext-test.dir/source/main.cpp.o -[ 95%] Building CXX object source/tests/metacall_ext_test/CMakeFiles/metacall-ext-test.dir/source/metacall_ext_test.cpp.o -[ 95%] Built target metacall-typescript-call-map-test -[ 96%] Building CXX object source/tests/metacall_plugin_extension_test/CMakeFiles/metacall-plugin-extension-test.dir/source/main.cpp.o -[ 96%] Linking CXX executable ../../../metacall-typescript-require-testd -[ 96%] Building CXX object source/tests/metacall_wasm_test/CMakeFiles/metacall-wasm-test.dir/source/metacall_wasm_test.cpp.o -[ 96%] Linking CXX executable ../../../metacall-file-fail-testd -[ 96%] Building CXX object source/tests/metacall_java_test/CMakeFiles/metacall-java-test.dir/source/metacall_java_test.cpp.o -[ 96%] Built target metacall-typescript-require-test -[ 96%] Building CXX object source/tests/metacall_wasm_python_port_test/CMakeFiles/metacall-wasm-python-port-test.dir/source/metacall_wasm_python_port_test.cpp.o -[ 96%] Linking CXX executable ../../../metacall-function-testd -[ 96%] Built target metacall-file-fail-test -[ 96%] Linking CXX executable ../../../metacall-typescript-tsx-loop-fail-testd -[ 97%] Building CXX object source/tests/metacall_library_path_without_env_vars_test/CMakeFiles/metacall-library-path-without-env-vars-test.dir/source/metacall_library_path_without_env_vars_test.cpp.o -[ 98%] Building CXX object source/tests/metacall_c_lib_test/CMakeFiles/metacall-c-lib-test.dir/source/metacall_c_lib_test.cpp.o -[ 98%] Linking CXX executable ../../../metacall-typescript-node-testd -[ 98%] Building CXX object source/tests/metacall_c_test/CMakeFiles/metacall-c-test.dir/source/metacall_c_test.cpp.o -[ 98%] Building CXX object source/tests/metacall_plugin_extension_test/CMakeFiles/metacall-plugin-extension-test.dir/source/metacall_plugin_extension_test.cpp.o -[ 98%] Building CXX object source/tests/metacall_plugin_extension_local_test/CMakeFiles/metacall-plugin-extension-local-test.dir/source/main.cpp.o -[ 98%] Building CXX object source/tests/metacall_plugin_extension_local_test/CMakeFiles/metacall-plugin-extension-local-test.dir/source/metacall_plugin_extension_local_test.cpp.o -[ 98%] Built target metacall-function-test -[ 98%] Building CXX object source/tests/metacall_backtrace_plugin_test/CMakeFiles/metacall-backtrace-plugin-test.dir/source/main.cpp.o -[ 98%] Built target metacall-typescript-tsx-loop-fail-test -[ 98%] Linking CXX executable ../../../metacall-cs-testd -[ 98%] Linking CXX executable ../../../metacall-typescript-tsx-testd -[ 98%] Building CXX object source/tests/metacall_sandbox_plugin_test/CMakeFiles/metacall-sandbox-plugin-test.dir/source/main.cpp.o -[ 98%] Built target metacall-typescript-node-test -[ 98%] Building CXX object source/benchmarks/log_bench/CMakeFiles/log-bench.dir/source/log_bench.cpp.o -[ 98%] Linking CXX executable ../../../metacall-csharp-static-class-testd -[ 98%] Building CXX object source/benchmarks/metacall_py_c_api_bench/CMakeFiles/metacall-py-c-api-bench.dir/source/metacall_py_c_api_bench.cpp.o -[ 98%] Building CXX object source/tests/metacall_sandbox_plugin_test/CMakeFiles/metacall-sandbox-plugin-test.dir/source/metacall_sandbox_plugin_test.cpp.o -[ 98%] Built target metacall-cs-test -[ 98%] Built target metacall-typescript-tsx-test -[ 98%] Building CXX object source/benchmarks/metacall_py_call_bench/CMakeFiles/metacall-py-call-bench.dir/source/metacall_py_call_bench.cpp.o -[ 98%] Building CXX object source/tests/metacall_backtrace_plugin_test/CMakeFiles/metacall-backtrace-plugin-test.dir/source/metacall_backtrace_plugin_test.cpp.o -[ 98%] Building CXX object source/benchmarks/metacall_py_init_bench/CMakeFiles/metacall-py-init-bench.dir/source/metacall_py_init_bench.cpp.o -[ 98%] Linking CXX executable ../../../metacall-dynlink-path-testd -[ 98%] Linking CXX executable ../../../metacall-ruby-testd -[ 98%] Linking CXX executable ../../../metacall-version-testd -[ 98%] Built target metacall-csharp-static-class-test -[ 98%] Building CXX object source/benchmarks/metacall_node_call_bench/CMakeFiles/metacall-node-call-bench.dir/source/metacall_node_call_bench.cpp.o -[ 98%] Building CXX object source/benchmarks/metacall_rb_call_bench/CMakeFiles/metacall-rb-call-bench.dir/source/metacall_rb_call_bench.cpp.o -[ 98%] Built target metacall-dynlink-path-test -[ 98%] Built target metacall-ruby-test -[ 98%] Building CXX object source/benchmarks/metacall_cs_call_bench/CMakeFiles/metacall-cs-call-bench.dir/source/metacall_cs_call_bench.cpp.o -[ 98%] Linking CXX executable ../../../metacall-rpc-testd -[ 98%] Built target metacall-version-test -[ 98%] Built target metacall-rpc-test -[ 98%] Linking CXX executable ../../../metacall-wasm-python-port-testd -[ 98%] Linking CXX executable ../../../log-benchd -[ 99%] Linking CXX executable ../../../metacall-py-init-benchd -[ 99%] Built target metacall-wasm-python-port-test -[ 99%] Linking CXX executable ../../../metacall-py-c-api-benchd -[ 99%] Built target log-bench -[ 99%] Linking CXX executable ../../../metacall-library-path-without-env-vars-testd -[ 99%] Built target metacall-py-init-bench -[ 99%] Built target metacall-py-c-api-bench -[ 99%] Linking CXX executable ../../../metacall-py-call-benchd -[ 99%] Built target metacall-library-path-without-env-vars-test -[ 99%] Linking CXX executable ../../../metacall-rb-call-benchd -[ 99%] Linking CXX executable ../../../metacall-ext-testd -[ 99%] Built target metacall-py-call-bench -[100%] Linking CXX executable ../../../metacall-cs-call-benchd -[100%] Linking CXX executable ../../../metacall-node-call-benchd -[100%] Built target metacall-rb-call-bench -[100%] Built target metacall-cs-call-bench -[100%] Built target metacall-ext-test -[100%] Linking CXX executable ../../../metacall-c-lib-testd -[100%] Built target metacall-node-call-bench -[100%] Built target metacall-c-lib-test -[100%] Linking CXX executable ../../../metacall-backtrace-plugin-testd -[100%] Built target metacall-backtrace-plugin-test -[100%] Linking CXX executable ../../../metacall-c-testd -[100%] Linking CXX executable ../../../metacall-plugin-extension-local-testd -[100%] Linking CXX executable ../../../metacall-plugin-extension-testd -[100%] Built target metacall-plugin-extension-local-test -[100%] Built target metacall-c-test -[100%] Built target metacall-plugin-extension-test -[100%] Linking CXX executable ../../../metacall-wasm-testd -[100%] Linking CXX executable ../../../metacall-java-testd -[100%] Built target metacall-wasm-test -[100%] Built target metacall-java-test -[100%] Linking CXX executable ../../../metacall-sandbox-plugin-testd -[100%] Built target metacall-sandbox-plugin-test -+ [ 1 = 1 ] -+ getconf _NPROCESSORS_ONLN -+ ctest -j24 --timeout 5400 --output-on-failure --test-output-size-failed 3221000000 -C Debug -Test project /usr/local/metacall/build - Start 1: ts_loader_bootstrap - Start 2: node_port - Start 3: node_port_test_executable - Start 4: py_port - Start 5: go_port - Start 6: rs_port - Start 7: rb_port - Start 8: preprocessor-test - Start 9: environment-test - Start 10: log-test - Start 11: log-custom-test - Start 12: adt-set-test - Start 13: adt-trie-test - Start 14: adt-vector-test - Start 15: adt-map-test - Start 16: reflect-value-cast-test - Start 17: reflect-function-test - Start 18: reflect-object-class-test - Start 19: reflect-scope-test - Start 20: reflect-metadata-test - Start 21: dynlink-test - Start 22: detour-test - Start 23: serial-test - Start 24: configuration-test - 1/175 Test #8: preprocessor-test ................................ Passed 0.04 sec - 2/175 Test #9: environment-test ................................. Passed 0.03 sec - 3/175 Test #10: log-test ......................................... Passed 0.03 sec - 4/175 Test #11: log-custom-test .................................. Passed 0.03 sec - 5/175 Test #12: adt-set-test ..................................... Passed 0.03 sec - 6/175 Test #13: adt-trie-test .................................... Passed 0.03 sec - 7/175 Test #14: adt-vector-test .................................. Passed 0.03 sec - 8/175 Test #15: adt-map-test ..................................... Passed 0.03 sec - 9/175 Test #16: reflect-value-cast-test .......................... Passed 0.02 sec - 10/175 Test #17: reflect-function-test ............................ Passed 0.02 sec - 11/175 Test #18: reflect-object-class-test ........................ Passed 0.02 sec - 12/175 Test #19: reflect-scope-test ............................... Passed 0.02 sec - 13/175 Test #20: reflect-metadata-test ............................ Passed 0.02 sec - 14/175 Test #21: dynlink-test ..................................... Passed 0.02 sec - Start 25: rb-loader-parser-test - Start 26: portability-path-test - Start 27: metacall-logs-test - Start 28: metacall-load-memory-test - Start 29: metacall-load-memory-empty-test - Start 30: metacall-load-configuration-test - Start 31: metacall-load-configuration-fail-test - Start 32: metacall-load-configuration-relative-test - Start 33: metacall-load-configuration-python-node-test - Start 34: metacall-load-configuration-node-python-test - Start 35: metacall-duplicated-handle-test - Start 36: metacall-duplicated-symbols-test - Start 37: metacall-handle-export-test - Start 38: metacall-handle-get-test - 15/175 Test #22: detour-test ...................................... Passed 0.08 sec - 16/175 Test #23: serial-test ...................................... Passed 0.07 sec - 17/175 Test #24: configuration-test ............................... Passed 0.07 sec - 18/175 Test #25: rb-loader-parser-test ............................ Passed 0.06 sec - 19/175 Test #26: portability-path-test ............................ Passed 0.06 sec - Start 39: metacall-test - Start 40: metacall-node-test - Start 41: metacall-node-event-loop-test - Start 42: metacall-node-event-loop-signal-test - Start 43: metacall-node-call-test - 20/175 Test #27: metacall-logs-test ............................... Passed 0.33 sec - Start 44: metacall-node-inline-test - 21/175 Test #32: metacall-load-configuration-relative-test ........ Passed 0.46 sec - Start 45: metacall-node-async-test - 22/175 Test #31: metacall-load-configuration-fail-test ............ Passed 0.66 sec - Start 46: metacall-node-async-multiple-test - 23/175 Test #42: metacall-node-event-loop-signal-test ............. Passed 0.62 sec - Start 47: metacall-node-reentrant-test - 24/175 Test #28: metacall-load-memory-test ........................ Passed 0.72 sec - Start 48: metacall-node-port-test - 25/175 Test #40: metacall-node-test ............................... Passed 0.77 sec - Start 49: metacall-node-port-await-test - 26/175 Test #7: rb_port .......................................... Passed 0.90 sec - Start 50: metacall-node-port-c-lib-test - 27/175 Test #36: metacall-duplicated-symbols-test ................. Passed 1.06 sec - Start 51: metacall-node-python-port-mock-test - 28/175 Test #45: metacall-node-async-test ......................... Passed 0.69 sec - Start 52: metacall-node-python-port-ruby-test - 29/175 Test #44: metacall-node-inline-test ........................ Passed 0.87 sec - Start 53: metacall-node-python-ruby-test - 30/175 Test #47: metacall-node-reentrant-test ..................... Passed 0.66 sec - Start 54: metacall-node-callback-test - 31/175 Test #33: metacall-load-configuration-python-node-test ..... Passed 1.37 sec - Start 55: metacall-node-fail-test - 32/175 Test #43: metacall-node-call-test .......................... Passed 1.36 sec - Start 56: metacall-node-fail-env-var-test - 33/175 Test #37: metacall-handle-export-test ...................... Passed 1.40 sec - Start 57: metacall-node-fail-load-leak-test - 34/175 Test #30: metacall-load-configuration-test ................. Passed 1.51 sec - Start 58: metacall-node-typescript-test - 35/175 Test #34: metacall-load-configuration-node-python-test ..... Passed 1.52 sec - Start 59: metacall-node-python-async-after-destroy-test - 36/175 Test #38: metacall-handle-get-test ......................... Passed 1.52 sec - Start 60: metacall-node-python-await-test - 37/175 Test #35: metacall-duplicated-handle-test .................. Passed 1.56 sec - Start 61: metacall-node-python-exception-test - 38/175 Test #4: py_port .......................................... Passed 1.72 sec - Start 62: metacall-node-clear-mem-test - 39/175 Test #49: metacall-node-port-await-test .................... Passed 0.86 sec - Start 63: metacall-node-async-resources-test - 40/175 Test #50: metacall-node-port-c-lib-test .................... Passed 0.85 sec - Start 64: metacall-node-await-chain-test - 41/175 Test #56: metacall-node-fail-env-var-test .................. Passed 0.35 sec - Start 65: metacall-node-exception-test - 42/175 Test #55: metacall-node-fail-test .......................... Passed 0.60 sec - Start 66: metacall-node-python-deadlock-test - 43/175 Test #57: metacall-node-fail-load-leak-test ................ Passed 0.55 sec - Start 67: metacall-node-native-code-test - 44/175 Test #62: metacall-node-clear-mem-test ..................... Passed 0.42 sec - Start 68: metacall-node-extension-test - 45/175 Test #52: metacall-node-python-port-ruby-test .............. Passed 1.04 sec - Start 69: metacall-node-multithread-deadlock-test - 46/175 Test #64: metacall-node-await-chain-test ................... Passed 0.51 sec - Start 70: metacall-distributable-test - 47/175 Test #51: metacall-node-python-port-mock-test .............. Passed 1.13 sec - Start 71: metacall-cast-test - 48/175 Test #54: metacall-node-callback-test ...................... Passed 0.89 sec - Start 72: metacall-init-fini-test - 49/175 Test #65: metacall-node-exception-test ..................... Passed 0.51 sec - Start 73: metacall-ducktype-test - 50/175 Test #68: metacall-node-extension-test ..................... Passed 0.40 sec - Start 74: metacall-inspect-test - 51/175 Test #60: metacall-node-python-await-test .................. Passed 0.92 sec - Start 75: metacall-integration-test - 52/175 Test #67: metacall-node-native-code-test ................... Passed 0.52 sec - Start 76: metacall-depends-test - 53/175 Test #61: metacall-node-python-exception-test .............. Passed 0.97 sec - Start 77: metacall-configuration-exec-path-test - 54/175 Test #29: metacall-load-memory-empty-test .................. Passed 2.70 sec - Start 78: metacall-configuration-default-test - 55/175 Test #78: metacall-configuration-default-test .............. Passed 0.02 sec - Start 79: metacall-clear-test - 56/175 Test #71: metacall-cast-test ............................... Passed 0.58 sec - Start 80: metacall-python-test - 57/175 Test #73: metacall-ducktype-test ........................... Passed 0.54 sec - Start 81: metacall-python-object-class-test - 58/175 Test #72: metacall-init-fini-test .......................... Passed 0.74 sec - Start 82: metacall-python-gc-test - 59/175 Test #77: metacall-configuration-exec-path-test ............ Passed 0.56 sec - Start 83: metacall-python-open-test - 60/175 Test #76: metacall-depends-test ............................ Passed 0.65 sec - Start 84: metacall-python-dict-test - 61/175 Test #53: metacall-node-python-ruby-test ................... Passed 2.00 sec - Start 85: metacall-python-pointer-test - 62/175 Test #66: metacall-node-python-deadlock-test ............... Passed 1.25 sec - Start 86: metacall-python-reentrant-test - 63/175 Test #81: metacall-python-object-class-test ................ Passed 0.65 sec - Start 87: metacall-python-varargs-test - 64/175 Test #79: metacall-clear-test .............................. Passed 0.98 sec - Start 88: py-loader-port-test - 65/175 Test #82: metacall-python-gc-test .......................... Passed 0.76 sec - Start 89: metacall-python-port-https-test - 66/175 Test #85: metacall-python-pointer-test ..................... Passed 0.57 sec - Start 90: metacall-python-port-callback-test - 67/175 Test #80: metacall-python-test ............................. Passed 1.01 sec - Start 91: metacall-python-port-pointer-test - 68/175 Test #84: metacall-python-dict-test ........................ Passed 0.68 sec - Start 92: metacall-python-port-import-test - 69/175 Test #86: metacall-python-reentrant-test ................... Passed 1.09 sec - Start 93: metacall-python-callback-test - 70/175 Test #87: metacall-python-varargs-test ..................... Passed 0.86 sec - Start 94: metacall-python-fail-test - 71/175 Test #90: metacall-python-port-callback-test ............... Passed 0.80 sec - Start 95: metacall-python-relative-path-test - 72/175 Test #88: py-loader-port-test .............................. Passed 0.91 sec - Start 96: metacall-python-without-functions-test - 73/175 Test #91: metacall-python-port-pointer-test ................ Passed 0.97 sec - Start 97: metacall-python-builtins-test - 74/175 Test #46: metacall-node-async-multiple-test ................ Passed 4.26 sec - Start 98: metacall-python-async-test - 75/175 Test #94: metacall-python-fail-test ........................ Passed 0.67 sec - Start 99: metacall-python-exception-test - 76/175 Test #89: metacall-python-port-https-test .................. Passed 1.28 sec - Start 100: metacall-python-without-env-vars-test - 77/175 Test #95: metacall-python-relative-path-test ............... Passed 0.64 sec - Start 101: metacall-map-test - 78/175 Test #96: metacall-python-without-functions-test ........... Passed 0.65 sec - Start 102: metacall-map-await-test - 79/175 Test #2: node_port ........................................ Passed 5.42 sec - Start 103: metacall-initialize-test - 80/175 Test #103: metacall-initialize-test ......................... Passed 0.05 sec - Start 104: metacall-initialize-ex-test - 81/175 Test #104: metacall-initialize-ex-test ...................... Passed 0.01 sec - Start 105: metacall-reinitialize-test - 82/175 Test #3: node_port_test_executable ........................ Passed 5.50 sec - Start 106: metacall-initialize-destroy-multiple-test - 83/175 Test #106: metacall-initialize-destroy-multiple-test ........ Passed 0.02 sec - Start 107: metacall-initialize-destroy-multiple-node-test - 84/175 Test #97: metacall-python-builtins-test .................... Passed 0.74 sec - Start 108: metacall-reload-functions-test - 85/175 Test #93: metacall-python-callback-test .................... Passed 1.21 sec - Start 109: metacall-invalid-loader-test - 86/175 Test #109: metacall-invalid-loader-test ..................... Passed 0.02 sec - Start 110: metacall-fork-test - 87/175 Test #98: metacall-python-async-test ....................... Passed 0.63 sec - 88/175 Test #105: metacall-reinitialize-test ....................... Passed 0.14 sec - Start 111: metacall-return-monad-test - Start 112: metacall-callback-complex-test - 89/175 Test #58: metacall-node-typescript-test .................... Passed 4.07 sec - Start 113: metacall-ruby-fail-test - 90/175 Test #110: metacall-fork-test ............................... Passed 0.06 sec - Start 114: metacall-ruby-fail-empty-test - 91/175 Test #99: metacall-python-exception-test ................... Passed 0.62 sec - Start 115: metacall-ruby-object-class-test - 92/175 Test #113: metacall-ruby-fail-test .......................... Passed 0.06 sec - Start 116: metacall-ruby-parser-integration-test - 93/175 Test #115: metacall-ruby-object-class-test .................. Passed 0.04 sec - Start 117: metacall-function-test - 94/175 Test #116: metacall-ruby-parser-integration-test ............ Passed 0.04 sec - Start 118: metacall-cobol-test - 95/175 Test #114: metacall-ruby-fail-empty-test .................... Passed 0.08 sec - Start 119: metacall-file-test - 96/175 Test #119: metacall-file-test ............................... Passed 0.02 sec - Start 120: metacall-file-fail-test - 97/175 Test #118: metacall-cobol-test .............................. Passed 0.04 sec - Start 121: metacall-file-glob-test - 98/175 Test #120: metacall-file-fail-test .......................... Passed 0.01 sec - Start 122: metacall-typescript-test - 99/175 Test #100: metacall-python-without-env-vars-test ............ Passed 0.70 sec - Start 123: metacall-typescript-node-test -100/175 Test #121: metacall-file-glob-test .......................... Passed 0.03 sec - Start 124: metacall-typescript-call-map-test -101/175 Test #102: metacall-map-await-test .......................... Passed 0.55 sec - Start 125: metacall-typescript-tsx-test -102/175 Test #107: metacall-initialize-destroy-multiple-node-test ... Passed 0.41 sec - Start 126: metacall-typescript-tsx-loop-fail-test -103/175 Test #41: metacall-node-event-loop-test .................... Passed 5.86 sec - Start 127: metacall-typescript-require-test -104/175 Test #111: metacall-return-monad-test ....................... Passed 0.49 sec - Start 128: metacall-typescript-jsx-default-test -105/175 Test #92: metacall-python-port-import-test ................. Passed 2.49 sec - Start 129: metacall-rpc-test -106/175 Test #101: metacall-map-test ................................ Passed 1.51 sec - Start 130: metacall-csharp-static-class-test -107/175 Test #117: metacall-function-test ........................... Passed 1.21 sec - Start 131: metacall-ruby-test -108/175 Test #131: metacall-ruby-test ............................... Passed 0.12 sec - Start 132: metacall-cs-test -109/175 Test #108: metacall-reload-functions-test ................... Passed 1.82 sec - Start 133: metacall-java-test -110/175 Test #39: metacall-test .................................... Passed 7.34 sec - Start 134: metacall-wasm-test -111/175 Test #129: metacall-rpc-test ................................ Passed 1.13 sec - Start 135: metacall-wasm-python-port-test -112/175 Test #134: metacall-wasm-test ............................... Passed 0.10 sec - Start 136: metacall-c-test -113/175 Test #136: metacall-c-test .................................. Passed 0.15 sec - Start 137: metacall-c-lib-test -114/175 Test #112: metacall-callback-complex-test ................... Passed 2.28 sec - Start 138: metacall-version-test -115/175 Test #137: metacall-c-lib-test .............................. Passed 0.19 sec - Start 139: metacall-dynlink-path-test -116/175 Test #138: metacall-version-test ............................ Passed 0.01 sec - Start 140: metacall-library-path-without-env-vars-test -117/175 Test #139: metacall-dynlink-path-test ....................... Passed 0.01 sec - Start 141: metacall-ext-test -118/175 Test #140: metacall-library-path-without-env-vars-test ...... Passed 0.02 sec - Start 142: metacall-plugin-extension-test -119/175 Test #141: metacall-ext-test ................................ Passed 0.02 sec - Start 143: metacall-plugin-extension-local-test -120/175 Test #70: metacall-distributable-test ...................... Passed 6.31 sec - Start 144: metacall-backtrace-plugin-test -121/175 Test #135: metacall-wasm-python-port-test ................... Passed 1.07 sec - Start 145: metacall-sandbox-plugin-test -122/175 Test #59: metacall-node-python-async-after-destroy-test .... Passed 7.03 sec - Start 146: log-bench -123/175 Test #75: metacall-integration-test ........................ Passed 6.16 sec - Start 147: metacall-py-c-api-bench -124/175 Test #6: rs_port .......................................... Passed 9.00 sec - Start 148: metacall-py-call-bench -125/175 Test #144: metacall-backtrace-plugin-test ................... Passed 0.45 sec - Start 149: metacall-py-init-bench -126/175 Test #74: metacall-inspect-test ............................ Passed 6.67 sec - Start 150: metacall-node-call-bench -127/175 Test #143: metacall-plugin-extension-local-test ............. Passed 1.52 sec - Start 151: metacall-rb-call-bench -128/175 Test #126: metacall-typescript-tsx-loop-fail-test ........... Passed 3.83 sec - Start 152: metacall-cs-call-bench -129/175 Test #149: metacall-py-init-bench ........................... Passed 0.77 sec - Start 153: metacallcli -130/175 Test #83: metacall-python-open-test ........................ Passed 6.71 sec - Start 154: metacallcli-inspect-leak -131/175 Test #142: metacall-plugin-extension-test ................... Passed 1.99 sec - Start 155: metacallcli-node -132/175 Test #123: metacall-typescript-node-test .................... Passed 4.72 sec - Start 156: metacallcli-node-port-py -133/175 Test #145: metacall-sandbox-plugin-test ..................... Passed 2.02 sec - Start 157: metacallcli-node-port-py-rb -134/175 Test #48: metacall-node-port-test .......................... Passed 9.87 sec - Start 158: metacallcli-node-null -135/175 Test #154: metacallcli-inspect-leak ......................... Passed 0.89 sec - Start 159: metacallcli-node-null-empty -136/175 Test #153: metacallcli ...................................... Passed 1.16 sec - Start 160: metacallcli-node-null-undefined -137/175 Test #133: metacall-java-test ............................... Passed 3.56 sec - Start 161: metacallcli-py-port -138/175 Test #155: metacallcli-node ................................. Passed 1.07 sec - Start 162: metacallcli-py-port-rb -139/175 Test #122: metacall-typescript-test ......................... Passed 5.36 sec - Start 163: metacallcli-file -140/175 Test #159: metacallcli-node-null-empty ...................... Passed 0.69 sec - Start 164: metacallcli-file-fail -141/175 Test #124: metacall-typescript-call-map-test ................ Passed 5.78 sec - Start 165: metacallcli-py-naming -142/175 Test #160: metacallcli-node-null-undefined .................. Passed 0.72 sec - Start 166: metacallcli-py-argv -143/175 Test #130: metacall-csharp-static-class-test ................ Passed 5.12 sec - Start 167: metacallcli-py-main -144/175 Test #128: metacall-typescript-jsx-default-test ............. Passed 5.90 sec - Start 168: metacallcli-py-exception -145/175 Test #163: metacallcli-file ................................. Passed 0.92 sec - Start 169: metacallcli-ts -146/175 Test #158: metacallcli-node-null ............................ Passed 1.45 sec - Start 170: metacallcli-tsx-templating -147/175 Test #157: metacallcli-node-port-py-rb ...................... Passed 1.58 sec - Start 171: metacallcli-tsx-loop-fail -148/175 Test #156: metacallcli-node-port-py ......................... Passed 1.70 sec - Start 172: metacallcli-py-tsx -149/175 Test #164: metacallcli-file-fail ............................ Passed 0.84 sec - Start 173: cli_repl_plugin -150/175 Test #162: metacallcli-py-port-rb ........................... Passed 1.43 sec - Start 174: cli_cmd_plugin -151/175 Test #161: metacallcli-py-port .............................. Passed 1.59 sec - Start 175: metacalllog -152/175 Test #175: metacalllog ...................................... Passed 0.03 sec -153/175 Test #173: cli_repl_plugin .................................. Passed 0.69 sec -154/175 Test #174: cli_cmd_plugin ................................... Passed 0.66 sec -155/175 Test #165: metacallcli-py-naming ............................ Passed 1.70 sec -156/175 Test #166: metacallcli-py-argv .............................. Passed 1.79 sec -157/175 Test #132: metacall-cs-test ................................. Passed 6.45 sec -158/175 Test #168: metacallcli-py-exception ......................... Passed 1.97 sec -159/175 Test #167: metacallcli-py-main .............................. Passed 2.32 sec -160/175 Test #127: metacall-typescript-require-test ................. Passed 8.48 sec -161/175 Test #125: metacall-typescript-tsx-test ..................... Passed 8.86 sec -162/175 Test #1: ts_loader_bootstrap .............................. Passed 15.33 sec -163/175 Test #171: metacallcli-tsx-loop-fail ........................ Passed 4.17 sec -164/175 Test #169: metacallcli-ts ................................... Passed 4.44 sec -165/175 Test #146: log-bench ........................................ Passed 8.61 sec -166/175 Test #172: metacallcli-py-tsx ............................... Passed 6.45 sec -167/175 Test #170: metacallcli-tsx-templating ....................... Passed 6.94 sec -168/175 Test #5: go_port .......................................... Passed 20.72 sec -169/175 Test #147: metacall-py-c-api-bench .......................... Passed 14.79 sec -170/175 Test #69: metacall-node-multithread-deadlock-test .......... Passed 22.96 sec -171/175 Test #152: metacall-cs-call-bench ........................... Passed 25.50 sec -172/175 Test #151: metacall-rb-call-bench ........................... Passed 33.41 sec -173/175 Test #148: metacall-py-call-bench ........................... Passed 34.83 sec -174/175 Test #63: metacall-node-async-resources-test ............... Passed 63.56 sec -175/175 Test #150: metacall-node-call-bench ......................... Passed 90.04 sec - -100% tests passed, 0 tests failed out of 175 - -Label Time Summary: -/usr/local/metacall/build/scripts/typedfunc = 28.42 sec*proc (5 tests) -MEMCHECK_IGNORE = 35.41 sec*proc (7 tests) -WORKING_DIRECTORY = 28.42 sec*proc (5 tests) -adt-map-test = 0.03 sec*proc (1 test) -adt-set-test = 0.03 sec*proc (1 test) -adt-trie-test = 0.03 sec*proc (1 test) -adt-vector-test = 0.03 sec*proc (1 test) -configuration-test = 0.07 sec*proc (1 test) -detour-test = 0.08 sec*proc (1 test) -dynlink-test = 0.02 sec*proc (1 test) -environment-test = 0.03 sec*proc (1 test) -go_port = 20.72 sec*proc (1 test) -log-bench = 8.61 sec*proc (1 test) -log-custom-test = 0.03 sec*proc (1 test) -log-test = 0.03 sec*proc (1 test) -metacall-backtrace-plugin-test = 0.45 sec*proc (1 test) -metacall-c-lib-test = 0.19 sec*proc (1 test) -metacall-c-test = 0.15 sec*proc (1 test) -metacall-callback-complex-test = 2.28 sec*proc (1 test) -metacall-cast-test = 0.58 sec*proc (1 test) -metacall-clear-test = 0.98 sec*proc (1 test) -metacall-cobol-test = 0.04 sec*proc (1 test) -metacall-configuration-default-test = 0.02 sec*proc (1 test) -metacall-configuration-exec-path-test = 0.56 sec*proc (1 test) -metacall-cs-call-bench = 25.50 sec*proc (1 test) -metacall-cs-test = 6.45 sec*proc (1 test) -metacall-csharp-static-class-test = 5.12 sec*proc (1 test) -metacall-depends-test = 0.65 sec*proc (1 test) -metacall-distributable-test = 6.31 sec*proc (1 test) -metacall-ducktype-test = 0.54 sec*proc (1 test) -metacall-duplicated-handle-test = 1.56 sec*proc (1 test) -metacall-duplicated-symbols-test = 1.06 sec*proc (1 test) -metacall-dynlink-path-test = 0.01 sec*proc (1 test) -metacall-ext-test = 0.02 sec*proc (1 test) -metacall-file-fail-test = 0.01 sec*proc (1 test) -metacall-file-glob-test = 0.03 sec*proc (1 test) -metacall-file-test = 0.02 sec*proc (1 test) -metacall-fork-test = 0.06 sec*proc (1 test) -metacall-function-test = 1.21 sec*proc (1 test) -metacall-handle-export-test = 1.40 sec*proc (1 test) -metacall-handle-get-test = 1.52 sec*proc (1 test) -metacall-init-fini-test = 0.74 sec*proc (1 test) -metacall-initialize-destroy-multiple-node-test = 0.41 sec*proc (1 test) -metacall-initialize-destroy-multiple-test = 0.02 sec*proc (1 test) -metacall-initialize-ex-test = 0.01 sec*proc (1 test) -metacall-initialize-test = 0.05 sec*proc (1 test) -metacall-inspect-test = 6.67 sec*proc (1 test) -metacall-integration-test = 6.16 sec*proc (1 test) -metacall-invalid-loader-test = 0.02 sec*proc (1 test) -metacall-java-test = 3.56 sec*proc (1 test) -metacall-library-path-without-env-vars-test = 0.02 sec*proc (1 test) -metacall-load-configuration-fail-test = 0.66 sec*proc (1 test) -metacall-load-configuration-node-python-test = 1.52 sec*proc (1 test) -metacall-load-configuration-python-node-test = 1.37 sec*proc (1 test) -metacall-load-configuration-relative-test = 0.46 sec*proc (1 test) -metacall-load-configuration-test = 1.51 sec*proc (1 test) -metacall-load-memory-empty-test = 2.70 sec*proc (1 test) -metacall-load-memory-test = 0.72 sec*proc (1 test) -metacall-logs-test = 0.33 sec*proc (1 test) -metacall-map-await-test = 0.55 sec*proc (1 test) -metacall-map-test = 1.51 sec*proc (1 test) -metacall-node-async-multiple-test = 4.26 sec*proc (1 test) -metacall-node-async-resources-test = 63.56 sec*proc (1 test) -metacall-node-async-test = 0.69 sec*proc (1 test) -metacall-node-await-chain-test = 0.51 sec*proc (1 test) -metacall-node-call-bench = 90.04 sec*proc (1 test) -metacall-node-call-test = 1.36 sec*proc (1 test) -metacall-node-callback-test = 0.89 sec*proc (1 test) -metacall-node-clear-mem-test = 0.42 sec*proc (1 test) -metacall-node-event-loop-signal-test = 0.62 sec*proc (1 test) -metacall-node-event-loop-test = 5.86 sec*proc (1 test) -metacall-node-exception-test = 0.51 sec*proc (1 test) -metacall-node-extension-test = 0.40 sec*proc (1 test) -metacall-node-fail-env-var-test = 0.35 sec*proc (1 test) -metacall-node-fail-load-leak-test = 0.55 sec*proc (1 test) -metacall-node-fail-test = 0.60 sec*proc (1 test) -metacall-node-inline-test = 0.87 sec*proc (1 test) -metacall-node-multithread-deadlock-test = 22.96 sec*proc (1 test) -metacall-node-native-code-test = 0.52 sec*proc (1 test) -metacall-node-port-await-test = 0.86 sec*proc (1 test) -metacall-node-port-c-lib-test = 0.85 sec*proc (1 test) -metacall-node-port-test = 9.87 sec*proc (1 test) -metacall-node-python-async-after-destroy-test = 7.03 sec*proc (1 test) -metacall-node-python-await-test = 0.92 sec*proc (1 test) -metacall-node-python-deadlock-test = 1.25 sec*proc (1 test) -metacall-node-python-exception-test = 0.97 sec*proc (1 test) -metacall-node-python-port-mock-test = 1.13 sec*proc (1 test) -metacall-node-python-port-ruby-test = 1.04 sec*proc (1 test) -metacall-node-python-ruby-test = 2.00 sec*proc (1 test) -metacall-node-reentrant-test = 0.66 sec*proc (1 test) -metacall-node-test = 0.77 sec*proc (1 test) -metacall-node-typescript-test = 4.07 sec*proc (1 test) -metacall-plugin-extension-local-test = 1.52 sec*proc (1 test) -metacall-plugin-extension-test = 1.99 sec*proc (1 test) -metacall-py-c-api-bench = 14.79 sec*proc (1 test) -metacall-py-call-bench = 34.83 sec*proc (1 test) -metacall-py-init-bench = 0.77 sec*proc (1 test) -metacall-python-builtins-test = 0.74 sec*proc (1 test) -metacall-python-callback-test = 1.21 sec*proc (1 test) -metacall-python-dict-test = 0.68 sec*proc (1 test) -metacall-python-exception-test = 0.62 sec*proc (1 test) -metacall-python-fail-test = 0.67 sec*proc (1 test) -metacall-python-gc-test = 0.76 sec*proc (1 test) -metacall-python-object-class-test = 0.65 sec*proc (1 test) -metacall-python-open-test = 6.71 sec*proc (1 test) -metacall-python-pointer-test = 0.57 sec*proc (1 test) -metacall-python-port-callback-test = 0.80 sec*proc (1 test) -metacall-python-port-https-test = 1.28 sec*proc (1 test) -metacall-python-port-import-test = 2.49 sec*proc (1 test) -metacall-python-port-pointer-test = 0.97 sec*proc (1 test) -metacall-python-reentrant-test = 1.09 sec*proc (1 test) -metacall-python-relative-path-test = 0.64 sec*proc (1 test) -metacall-python-test = 1.01 sec*proc (1 test) -metacall-python-varargs-test = 0.86 sec*proc (1 test) -metacall-python-without-env-vars-test = 0.70 sec*proc (1 test) -metacall-python-without-functions-test = 0.65 sec*proc (1 test) -metacall-rb-call-bench = 33.41 sec*proc (1 test) -metacall-reinitialize-test = 0.14 sec*proc (1 test) -metacall-reload-functions-test = 1.82 sec*proc (1 test) -metacall-return-monad-test = 0.49 sec*proc (1 test) -metacall-rpc-test = 1.13 sec*proc (1 test) -metacall-ruby-fail-empty-test = 0.08 sec*proc (1 test) -metacall-ruby-fail-test = 0.06 sec*proc (1 test) -metacall-ruby-object-class-test = 0.04 sec*proc (1 test) -metacall-ruby-parser-integration-test = 0.04 sec*proc (1 test) -metacall-ruby-test = 0.12 sec*proc (1 test) -metacall-sandbox-plugin-test = 2.02 sec*proc (1 test) -metacall-test = 7.34 sec*proc (1 test) -metacall-typescript-call-map-test = 5.78 sec*proc (1 test) -metacall-typescript-jsx-default-test = 5.90 sec*proc (1 test) -metacall-typescript-node-test = 4.72 sec*proc (1 test) -metacall-typescript-require-test = 8.48 sec*proc (1 test) -metacall-typescript-test = 5.36 sec*proc (1 test) -metacall-typescript-tsx-loop-fail-test = 3.83 sec*proc (1 test) -metacall-typescript-tsx-test = 8.86 sec*proc (1 test) -metacall-version-test = 0.01 sec*proc (1 test) -metacall-wasm-python-port-test = 1.07 sec*proc (1 test) -metacall-wasm-test = 0.10 sec*proc (1 test) -metacallcli = 1.16 sec*proc (1 test) -metacallcli-file = 0.92 sec*proc (1 test) -metacallcli-file-fail = 0.84 sec*proc (1 test) -metacallcli-inspect-leak = 0.89 sec*proc (1 test) -metacallcli-node = 1.07 sec*proc (1 test) -metacallcli-node-null = 1.45 sec*proc (1 test) -metacallcli-node-null-empty = 0.69 sec*proc (1 test) -metacallcli-node-null-undefined = 0.72 sec*proc (1 test) -metacallcli-node-port-py = 1.70 sec*proc (1 test) -metacallcli-node-port-py-rb = 1.58 sec*proc (1 test) -metacallcli-py-argv = 1.79 sec*proc (1 test) -metacallcli-py-exception = 1.97 sec*proc (1 test) -metacallcli-py-main = 2.32 sec*proc (1 test) -metacallcli-py-naming = 1.70 sec*proc (1 test) -metacallcli-py-port = 1.59 sec*proc (1 test) -metacallcli-py-port-rb = 1.43 sec*proc (1 test) -metacallcli-py-tsx = 6.45 sec*proc (1 test) -metacallcli-ts = 4.44 sec*proc (1 test) -metacallcli-tsx-loop-fail = 4.17 sec*proc (1 test) -metacallcli-tsx-templating = 6.94 sec*proc (1 test) -metacalllog = 0.03 sec*proc (1 test) -node_port_test = 5.42 sec*proc (1 test) -node_port_test_executable = 5.50 sec*proc (1 test) -portability-path-test = 0.06 sec*proc (1 test) -preprocessor-test = 0.04 sec*proc (1 test) -py-loader-port-test = 0.91 sec*proc (1 test) -py_port_test = 1.72 sec*proc (1 test) -rb-loader-parser-test = 0.06 sec*proc (1 test) -rb_port_test = 0.90 sec*proc (1 test) -reflect-function-test = 0.02 sec*proc (1 test) -reflect-metadata-test = 0.02 sec*proc (1 test) -reflect-object-class-test = 0.02 sec*proc (1 test) -reflect-scope-test = 0.02 sec*proc (1 test) -reflect-value-cast-test = 0.02 sec*proc (1 test) -rs_port = 9.00 sec*proc (1 test) -serial-test = 0.07 sec*proc (1 test) -ts_loader_bootstrap = 15.33 sec*proc (1 test) - -Total Test time (real) = 99.30 sec -+ [ 0 = 1 ] -+ [ 1 = 1 ] -+ [ = ] -+ make install -[ 0%] Built target version -[ 0%] Built target preprocessor -[ 1%] Built target environment -[ 1%] Built target format -[ 1%] Built target threading -[ 2%] Built target portability -[ 6%] Built target log -[ 6%] Built target memory -[ 7%] Built target adt -[ 8%] Built target filesystem -[ 9%] Built target dynlink -[ 10%] Built target plugin -[ 10%] Built target detour -[ 13%] Built target reflect -[ 13%] Built target serial -[ 14%] Built target configuration -[ 14%] Built target loader -[ 29%] Built target metacall -[ 30%] Built target libtcc-depends -[ 30%] Built target c_loader -[ 30%] Built target cob_loader - Determining projects to restore... - All projects are up-to-date for restore. -MSBuild version 17.7.6+77d58ec69 for .NET - Determining projects to restore... - All projects are up-to-date for restore. - project -> /usr/local/metacall/source/loaders/cs_loader/netcore/source/bin/Debug/net7.0/CSLoader.dll - project -> /usr/local/metacall/build/ -[ 30%] Built target cs_loader_impl -[ 31%] Built target cs_loader -[ 32%] Built target ext_loader -[ 32%] Built target file_loader -Note: /usr/local/metacall/source/loaders/java_loader/bootstrap/lib/bootstrap.java uses or overrides a deprecated API. -Note: Recompile with -Xlint:deprecation for details. -[ 32%] Built target java_loader_bootstrap -[ 33%] Built target java_loader -[ 33%] Built target mock_loader -Installing node_loader_bootstrap dependencies - -up to date, audited 5 packages in 437ms - -1 package is looking for funding - run `npm fund` for details - -found 0 vulnerabilities -[ 33%] Built target node_loader_bootstrap_depends -Copying node_loader_bootstrap dependencies -node_loader_bootstrap dependencies copied from /usr/local/metacall/source/loaders/node_loader/bootstrap/node_modules to /usr/local/metacall/build/node_modules -[ 33%] Built target node_loader_bootstrap_copy_depends -[ 33%] Built target node_loader_bootstrap -[ 34%] Built target node_loader -[ 35%] Built target py_loader -[ 35%] Built target rb_loader -[ 36%] Built target rpc_loader -Installing ts_loader_bootstrap dependencies - -up to date, audited 3 packages in 1s - -found 0 vulnerabilities -[ 36%] Built target ts_loader_bootstrap_depends - -> ts_loader_bootstrap@1.1.0 build -> tsc - -[ 36%] Built target ts_loader_bootstrap_build -Copying ts_loader_bootstrap dependencies -ts_loader_bootstrap dependencies copied from /usr/local/metacall/source/loaders/ts_loader/bootstrap/node_modules to /usr/local/metacall/build/node_modules -[ 36%] Built target ts_loader_bootstrap -[ 37%] Built target ts_loader -[ 38%] Built target wasm_loader -[ 39%] Built target metacall_serial -[ 39%] Built target rapid_json_serial -[ 39%] Built target plthook_detour -[ 39%] Built target plugin_extension -[ 39%] Built target backtrace_plugin_config -[ 39%] Built target backtrace_plugin -[ 39%] Built target backward_object -[ 40%] Built target backward -[ 40%] Built target sandbox_plugin_config -[ 40%] Built target sandbox_plugin -Installing node_port - -up to date, audited 81 packages in 722ms - -20 packages are looking for funding - run `npm fund` for details - -3 moderate severity vulnerabilities - -To address all issues (including breaking changes), run: - npm audit fix --force - -Run `npm audit` for details. -[ 40%] Built target node_port -Failed to run rustfmt: No such file or directory (os error 2) (non-fatal, continuing) -[ 40%] Built target rs_port_bindings - Compiling metacall v0.4.2 (/usr/local/metacall/source/ports/rs_port) - Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.31s -[ 40%] Built target rs_port -[ 41%] Built target rb_port_swig_compilation -[ 41%] Built target rb_port -[ 41%] Built target c-compiled -[ 41%] Built target c-ffi -[ 41%] Built target c-cbks -[ 41%] Built target c-loadtest -[ 42%] Built target loadtest -[ 42%] Built target cobol-say -[ 42%] Built target csharp-hello -[ 42%] Built target csharp-static -[ 42%] Built target csharp-function -[ 43%] Built target sum_extension -[ 43%] Built target file-static -[ 43%] Built target file-favicon -[ 43%] Built target file-glob -[ 43%] Built target java-fibonnaci -[ 43%] Built target java-jartest -[ 43%] Built target java-test -[ 43%] Built target nodejs-nod -[ 43%] Built target nodejs-inline -[ 43%] Built target nodejs-export -[ 43%] Built target nodejs-host -[ 43%] Built target nodejs-server -[ 43%] Built target nodejs-factcallback -[ 43%] Built target nodejs-derpyramda - -up to date, audited 49 packages in 608ms - -1 moderate severity vulnerability - -To address all issues, run: - npm audit fix - -Run `npm audit` for details. -[ 43%] Built target nodejs-gram-depends -[ 43%] Built target nodejs-gram -[ 43%] Built target nodejs-duplicated - -up to date, audited 2 packages in 434ms - -found 0 vulnerabilities -[ 43%] Built target nodejs-ramda-depends -[ 43%] Built target nodejs-ramda -[ 43%] Built target python-example -[ 43%] Built target python-helloworld -[ 43%] Built target python-initfini -[ 43%] Built target python-callback -[ 43%] Built target python-function -[ 43%] Built target python-ducktype -[ 43%] Built target python-rsasample -[ 43%] Built target python-garbage -[ 43%] Built target python-classname -[ 43%] Built target python-web -[ 43%] Built target python-landing -[ 43%] Built target python-model -[ 43%] Built target python-pointer -[ 43%] Built target python-dicty -[ 43%] Built target python-host -[ 43%] Built target python-s1 -[ 43%] Built target python-s2 -[ 43%] Built target python-withoutfunctions -[ 43%] Built target python-wasm -[ 43%] Built target python-badimport -[ 43%] Built target python-watzon -[ 43%] Built target python-fnmesh -[ 43%] Built target ruby-hello -[ 43%] Built target ruby-second -[ 43%] Built target ruby-blog -[ 43%] Built target ruby-cache -[ 43%] Built target ruby-ducktype -[ 43%] Built target ruby-invalid -[ 43%] Built target ruby-klass -[ 43%] Built target ruby-failempty -[ 43%] Built target rpc-remote -[ 43%] Built target typescript-typedfunc - -up to date, audited 7 packages in 477ms - -found 0 vulnerabilities -[ 43%] Built target typescript-templating-depends -[ 43%] Built target typescript-templating -[ 43%] Built target typescript-loopfail -[ 43%] Built target typescript-badrequire -[ 43%] Built target typescript-server -[ 43%] Built target wasm-tests -[ 44%] Built target google-test-depends -[ 44%] Built target preprocessor-test -[ 44%] Built target environment-test -[ 45%] Built target log-test -[ 45%] Built target log-custom-test -[ 45%] Built target adt-set-test -[ 46%] Built target adt-trie-test -[ 46%] Built target adt-vector-test -[ 46%] Built target adt-map-test -[ 47%] Built target reflect-value-cast-test -[ 47%] Built target reflect-function-test -[ 48%] Built target reflect-object-class-test -[ 48%] Built target reflect-scope-test -[ 48%] Built target reflect-metadata-test -[ 48%] Built target dynlink-test -[ 48%] Built target detour-test -[ 48%] Built target serial-test -[ 48%] Built target configuration-test -[ 49%] Built target rb-loader-parser-test -[ 50%] Built target portability-path-test -[ 51%] Built target metacall-logs-test -[ 51%] Built target metacall-load-memory-test -[ 51%] Built target metacall-load-memory-empty-test -[ 52%] Built target metacall-load-configuration-test -[ 52%] Built target metacall-load-configuration-fail-test -[ 52%] Built target metacall-load-configuration-relative-test -[ 53%] Built target metacall-load-configuration-python-node-test -[ 53%] Built target metacall-load-configuration-node-python-test -[ 53%] Built target metacall-duplicated-handle-test -[ 53%] Built target metacall-duplicated-symbols-test -[ 53%] Built target metacall-handle-export-test -[ 54%] Built target metacall-handle-get-test -[ 55%] Built target metacall-test -[ 56%] Built target metacall-node-test -[ 56%] Built target metacall-node-event-loop-test -[ 57%] Built target metacall-node-event-loop-signal-test -[ 58%] Built target metacall-node-call-test -[ 58%] Built target metacall-node-inline-test -[ 59%] Built target metacall-node-async-test -[ 60%] Built target metacall-node-async-multiple-test -[ 60%] Built target metacall-node-reentrant-test -[ 60%] Built target metacall-node-port-test -[ 61%] Built target metacall-node-port-await-test -[ 61%] Built target metacall-node-port-c-lib-test -[ 61%] Built target metacall-node-python-port-mock-test -[ 62%] Built target metacall-node-python-port-ruby-test -[ 62%] Built target metacall-node-python-ruby-test -[ 62%] Built target metacall-node-callback-test -[ 62%] Built target metacall-node-fail-test -[ 62%] Built target metacall-node-fail-env-var-test -[ 63%] Built target metacall-node-fail-load-leak-test -[ 63%] Built target metacall-node-typescript-test -[ 64%] Built target metacall-node-python-async-after-destroy-test -[ 64%] Built target metacall-node-python-await-test -[ 65%] Built target metacall-node-python-exception-test -[ 65%] Built target metacall-node-clear-mem-test -[ 65%] Built target metacall-node-async-resources-test -[ 65%] Built target metacall-node-await-chain-test -[ 66%] Built target metacall-node-exception-test -[ 66%] Built target metacall-node-python-deadlock-test -[ 66%] Built target metacall-node-native-code-test -[ 66%] Built target node_extension_test -[ 66%] Built target metacall-node-extension-test -[ 67%] Built target metacall-node-multithread-deadlock-test -[ 67%] Built target metacall-distributable-test -[ 68%] Built target metacall-cast-test -[ 68%] Built target metacall-init-fini-test -[ 69%] Built target metacall-ducktype-test -[ 69%] Built target metacall-inspect-test -[ 70%] Built target metacall-integration-test -[ 71%] Built target metacall-depends-test -[ 71%] Built target metacall-configuration-exec-path-test -[ 71%] Built target metacall-configuration-default-test -[ 71%] Built target metacall-clear-test -[ 71%] Built target metacall-python-test -[ 72%] Built target metacall-python-object-class-test -[ 72%] Built target metacall-python-gc-test - -up to date, audited 16 packages in 514ms - -1 package is looking for funding - run `npm fund` for details - -found 0 vulnerabilities -[ 72%] Built target metacall-python-open-test-depends -[ 72%] Built target metacall-python-open-test -[ 72%] Built target metacall-python-dict-test -[ 72%] Built target metacall-python-pointer-test -[ 72%] Built target metacall-python-reentrant-test -[ 72%] Built target metacall-python-varargs-test -[ 73%] Built target py-loader-port-test -[ 73%] Built target metacall-python-port-https-test -[ 74%] Built target metacall-python-port-callback-test -[ 74%] Built target metacall-python-port-pointer-test -[ 75%] Built target metacall-python-port-import-test -[ 76%] Built target metacall-python-callback-test -[ 76%] Built target metacall-python-fail-test -[ 77%] Built target metacall-python-relative-path-test -[ 77%] Built target metacall-python-without-functions-test -[ 77%] Built target metacall-python-builtins-test -[ 77%] Built target metacall-python-async-test -[ 78%] Built target metacall-python-exception-test -[ 79%] Built target metacall-python-without-env-vars-test -[ 79%] Built target metacall-map-test -[ 79%] Built target metacall-map-await-test -[ 80%] Built target metacall-initialize-test -[ 80%] Built target metacall-initialize-ex-test -[ 81%] Built target metacall-reinitialize-test -[ 81%] Built target metacall-initialize-destroy-multiple-test -[ 82%] Built target metacall-initialize-destroy-multiple-node-test -[ 82%] Built target metacall-reload-functions-test -[ 82%] Built target metacall-invalid-loader-test -[ 83%] Built target metacall-fork-test -[ 84%] Built target metacall-return-monad-test -[ 84%] Built target metacall-callback-complex-test -[ 85%] Built target metacall-ruby-fail-test -[ 85%] Built target metacall-ruby-fail-empty-test -[ 85%] Built target metacall-ruby-object-class-test -[ 85%] Built target metacall-ruby-parser-integration-test -[ 85%] Built target metacall-function-test -[ 86%] Built target metacall-cobol-test -[ 86%] Built target metacall-file-test -[ 86%] Built target metacall-file-fail-test -[ 87%] Built target metacall-file-glob-test -[ 88%] Built target metacall-typescript-test -[ 89%] Built target metacall-typescript-node-test -[ 89%] Built target metacall-typescript-call-map-test -[ 89%] Built target metacall-typescript-tsx-test -[ 89%] Built target metacall-typescript-tsx-loop-fail-test -[ 89%] Built target metacall-typescript-require-test -[ 89%] Built target metacall-typescript-jsx-default-test -[ 89%] Built target metacall-rpc-test -[ 89%] Built target metacall-csharp-static-class-test -[ 90%] Built target metacall-ruby-test -[ 90%] Built target metacall-cs-test -[ 90%] Built target metacall-java-test -[ 90%] Built target metacall-wasm-test -[ 90%] Built target metacall-wasm-python-port-test -[ 90%] Built target metacall-c-test -[ 91%] Built target metacall-c-lib-test -[ 92%] Built target metacall-version-test -[ 93%] Built target metacall-dynlink-path-test -[ 94%] Built target metacall-library-path-without-env-vars-test -[ 94%] Built target metacall-ext-test -[ 95%] Built target metacall-plugin-extension-test -[ 95%] Built target metacall-plugin-extension-local-test -[ 95%] Built target metacall-backtrace-plugin-test -[ 95%] Built target metacall-sandbox-plugin-test -[ 96%] Built target google-bench-depends -[ 96%] Built target log-bench -[ 96%] Built target metacall-py-c-api-bench -[ 96%] Built target metacall-py-call-bench -[ 97%] Built target metacall-py-init-bench -[ 97%] Built target metacall-node-call-bench -[ 97%] Built target metacall-rb-call-bench -[ 98%] Built target metacall-cs-call-bench -[ 98%] Built target cli_repl_plugin -[ 98%] Built target cli_core_plugin -[ 98%] Built target metacallcli-scripts-tests -[ 98%] Built target metacallcli -[ 98%] Built target cli_core_plugin_config -[ 98%] Built target cli_cmd_plugin -[ 99%] Built target cli_sandbox_plugin -[ 99%] Built target cli_sandbox_plugin_config -[100%] Built target metacalllog -Install the project... --- Install configuration: "Debug" --- Installing: /usr/local/share/metacall/configurations --- Installing: /usr/local/share/metacall/configurations/cs_loader.json --- Installing: /usr/local/share/metacall/configurations/node_loader.json --- Installing: /usr/local/share/metacall/configurations/global.json --- Installing: /usr/local/include/metacall --- Installing: /usr/local/include/metacall/metacall_link.h --- Installing: /usr/local/include/metacall/metacall_allocator.h --- Installing: /usr/local/include/metacall/metacall.h --- Installing: /usr/local/include/metacall/metacall_value.h --- Installing: /usr/local/include/metacall/metacall_fork.h --- Installing: /usr/local/include/metacall/metacall_log.h --- Installing: /usr/local/include/metacall/metacall_error.h --- Up-to-date: /usr/local/include/metacall --- Installing: /usr/local/include/metacall/metacall_def.h --- Installing: /usr/local/include/metacall/metacall_api.h --- Installing: /usr/local/lib/libmetacalld.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libmetacalld.so" to "/usr/local/lib" --- Installing: /usr/local/lib/libtcc.so --- Up-to-date: /usr/local/lib --- Installing: /usr/local/lib/libtcc1.a --- Installing: /usr/local/lib/runmain.o --- Installing: /usr/local/lib/bcheck.o --- Installing: /usr/local/lib/bt-log.o --- Installing: /usr/local/lib/bt-exe.o --- Up-to-date: /usr/local/include --- Installing: /usr/local/include/stdatomic.h --- Installing: /usr/local/include/tccdefs.h --- Installing: /usr/local/include/stddef.h --- Installing: /usr/local/include/varargs.h --- Installing: /usr/local/include/tcclib.h --- Installing: /usr/local/include/stdnoreturn.h --- Installing: /usr/local/include/stdarg.h --- Installing: /usr/local/include/stdbool.h --- Installing: /usr/local/include/stdalign.h --- Installing: /usr/local/include/tgmath.h --- Installing: /usr/local/include/float.h --- Installing: /usr/local/lib/libc_loaderd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libc_loaderd.so" to "/usr/local/lib:/usr/lib/llvm-14/lib" --- Installing: /usr/local/lib/libcob_loaderd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libcob_loaderd.so" to "/usr/local/lib" --- Installing: /usr/local/lib/CSLoader.dll --- Installing: /usr/local/lib/Microsoft.CodeAnalysis.dll --- Installing: /usr/local/lib/Microsoft.CodeAnalysis.CSharp.dll --- Installing: /usr/local/lib/libcs_loaderd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libcs_loaderd.so" to "/usr/local/lib" --- Installing: /usr/local/lib/libext_loaderd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libext_loaderd.so" to "/usr/local/lib" --- Installing: /usr/local/lib/libfile_loaderd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libfile_loaderd.so" to "/usr/local/lib" --- Installing: /usr/local/lib/bootstrap.class --- Installing: /usr/local/lib/libjava_loaderd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libjava_loaderd.so" to "/usr/local/lib:/usr/lib/jvm/default-java/lib:/usr/lib/jvm/default-java/lib/server" --- Installing: /usr/local/lib/libmock_loaderd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libmock_loaderd.so" to "/usr/local/lib" --- Installing: /usr/local/lib/node_modules/espree --- Installing: /usr/local/lib/node_modules/espree/dist --- Installing: /usr/local/lib/node_modules/espree/dist/espree.cjs --- Installing: /usr/local/lib/node_modules/espree/espree.js --- Installing: /usr/local/lib/node_modules/espree/package.json --- Installing: /usr/local/lib/node_modules/espree/LICENSE --- Installing: /usr/local/lib/node_modules/espree/lib --- Installing: /usr/local/lib/node_modules/espree/lib/espree.js --- Installing: /usr/local/lib/node_modules/espree/lib/options.js --- Installing: /usr/local/lib/node_modules/espree/lib/version.js --- Installing: /usr/local/lib/node_modules/espree/lib/token-translator.js --- Installing: /usr/local/lib/node_modules/espree/lib/features.js --- Installing: /usr/local/lib/node_modules/espree/README.md --- Installing: /usr/local/lib/node_modules/acorn --- Installing: /usr/local/lib/node_modules/acorn/dist --- Installing: /usr/local/lib/node_modules/acorn/dist/acorn.mjs.d.ts --- Installing: /usr/local/lib/node_modules/acorn/dist/acorn.d.ts --- Installing: /usr/local/lib/node_modules/acorn/dist/acorn.mjs --- Installing: /usr/local/lib/node_modules/acorn/dist/acorn.js --- Installing: /usr/local/lib/node_modules/acorn/dist/bin.js --- Installing: /usr/local/lib/node_modules/acorn/bin --- Installing: /usr/local/lib/node_modules/acorn/bin/acorn --- Installing: /usr/local/lib/node_modules/acorn/CHANGELOG.md --- Installing: /usr/local/lib/node_modules/acorn/package.json --- Installing: /usr/local/lib/node_modules/acorn/LICENSE --- Installing: /usr/local/lib/node_modules/acorn/README.md --- Installing: /usr/local/lib/node_modules/acorn-jsx --- Installing: /usr/local/lib/node_modules/acorn-jsx/xhtml.js --- Installing: /usr/local/lib/node_modules/acorn-jsx/index.js --- Installing: /usr/local/lib/node_modules/acorn-jsx/package.json --- Installing: /usr/local/lib/node_modules/acorn-jsx/index.d.ts --- Installing: /usr/local/lib/node_modules/acorn-jsx/LICENSE --- Installing: /usr/local/lib/node_modules/acorn-jsx/README.md --- Installing: /usr/local/lib/node_modules/eslint-visitor-keys --- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/dist --- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs --- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/dist/index.d.ts --- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/dist/visitor-keys.d.ts --- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/package.json --- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/LICENSE --- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/lib --- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/lib/visitor-keys.js --- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/lib/index.js --- Installing: /usr/local/lib/node_modules/eslint-visitor-keys/README.md --- Installing: /usr/local/lib/bootstrap.js --- Installing: /usr/local/lib/libnode_loaderd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libnode_loaderd.so" to "/usr/local/lib" --- Installing: /usr/local/lib/libpy_loaderd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libpy_loaderd.so" to "/usr/local/lib" --- Installing: /usr/local/lib/librb_loaderd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/librb_loaderd.so" to "/usr/local/lib" --- Installing: /usr/local/lib/librpc_loaderd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/librpc_loaderd.so" to "/usr/local/lib" --- Installing: /usr/local/lib/node_modules/typescript --- Installing: /usr/local/lib/node_modules/typescript/CODE_OF_CONDUCT.md --- Installing: /usr/local/lib/node_modules/typescript/LICENSE.txt --- Installing: /usr/local/lib/node_modules/typescript/bin --- Installing: /usr/local/lib/node_modules/typescript/bin/tsserver --- Installing: /usr/local/lib/node_modules/typescript/bin/tsc --- Installing: /usr/local/lib/node_modules/typescript/CopyrightNotice.txt --- Installing: /usr/local/lib/node_modules/typescript/loc --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/TypeScriptLanguageService --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/Targets --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/Targets/TypeScriptCompile.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/Targets/ProjectItemsSchema.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/Targets/TypeScriptProjectProperties.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/TypeScriptTasks --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/TypeScriptTasks/TypeScript.Tasks.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/TypeScriptDebugEngine --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/DEU/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/TypeScriptLanguageService --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/Targets --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/Targets/TypeScriptCompile.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/Targets/ProjectItemsSchema.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/Targets/TypeScriptProjectProperties.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/TypeScriptTasks --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/TypeScriptTasks/TypeScript.Tasks.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/TypeScriptDebugEngine --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PTB/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/TypeScriptLanguageService --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/Targets --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/Targets/TypeScriptCompile.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/Targets/ProjectItemsSchema.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/Targets/TypeScriptProjectProperties.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/TypeScriptTasks --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/TypeScriptTasks/TypeScript.Tasks.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/TypeScriptDebugEngine --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/RUS/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/TypeScriptLanguageService --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/Targets --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/Targets/TypeScriptCompile.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/Targets/ProjectItemsSchema.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/Targets/TypeScriptProjectProperties.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/TypeScriptTasks --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/TypeScriptTasks/TypeScript.Tasks.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/TypeScriptDebugEngine --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ESN/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/TypeScriptLanguageService --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/Targets --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/Targets/TypeScriptCompile.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/Targets/ProjectItemsSchema.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/Targets/TypeScriptProjectProperties.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/TypeScriptTasks --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/TypeScriptTasks/TypeScript.Tasks.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/TypeScriptDebugEngine --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHS/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/TypeScriptLanguageService --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/Targets --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/Targets/TypeScriptCompile.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/Targets/ProjectItemsSchema.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/Targets/TypeScriptProjectProperties.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/TypeScriptTasks --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/TypeScriptTasks/TypeScript.Tasks.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/TypeScriptDebugEngine --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/PLK/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/TypeScriptLanguageService --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/Targets --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/Targets/TypeScriptCompile.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/Targets/ProjectItemsSchema.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/Targets/TypeScriptProjectProperties.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/TypeScriptTasks --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/TypeScriptTasks/TypeScript.Tasks.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/TypeScriptDebugEngine --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/TRK/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/TypeScriptLanguageService --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/Targets --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/Targets/TypeScriptCompile.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/Targets/ProjectItemsSchema.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/Targets/TypeScriptProjectProperties.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/TypeScriptTasks --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/TypeScriptTasks/TypeScript.Tasks.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/TypeScriptDebugEngine --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CHT/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/TypeScriptLanguageService --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/Targets --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/Targets/TypeScriptCompile.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/Targets/ProjectItemsSchema.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/Targets/TypeScriptProjectProperties.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/TypeScriptTasks --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/TypeScriptTasks/TypeScript.Tasks.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/TypeScriptDebugEngine --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/KOR/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/TypeScriptLanguageService --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/Targets --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/Targets/TypeScriptCompile.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/Targets/ProjectItemsSchema.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/Targets/TypeScriptProjectProperties.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/TypeScriptTasks --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/TypeScriptTasks/TypeScript.Tasks.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/TypeScriptDebugEngine --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/ITA/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/TypeScriptLanguageService --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/Targets --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/Targets/TypeScriptCompile.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/Targets/ProjectItemsSchema.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/Targets/TypeScriptProjectProperties.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/TypeScriptTasks --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/TypeScriptTasks/TypeScript.Tasks.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/TypeScriptDebugEngine --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/JPN/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/TypeScriptLanguageService --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/Targets --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/Targets/TypeScriptCompile.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/Targets/ProjectItemsSchema.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/Targets/TypeScriptProjectProperties.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/TypeScriptTasks --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/TypeScriptTasks/TypeScript.Tasks.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/TypeScriptDebugEngine --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/CSY/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/TypeScriptLanguageService --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/TypeScriptLanguageService/Microsoft.CodeAnalysis.TypeScript.EditorFeatures.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/Targets --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/Targets/TypeScriptCompile.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/Targets/ProjectItemsSchema.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/Targets/TypeScriptProjectProperties.xaml.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/TypeScriptTasks --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/TypeScriptTasks/TypeScript.Tasks.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/TypeScriptDebugEngine --- Installing: /usr/local/lib/node_modules/typescript/loc/lcl/FRA/TypeScriptDebugEngine/TypeScriptDebugEngine.dll.lcl --- Installing: /usr/local/lib/node_modules/typescript/AUTHORS.md --- Installing: /usr/local/lib/node_modules/typescript/ThirdPartyNoticeText.txt --- Installing: /usr/local/lib/node_modules/typescript/package.json --- Installing: /usr/local/lib/node_modules/typescript/lib --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2017.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.intl.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es5.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2017.object.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.collection.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/typescriptServices.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/tsserverlibrary.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/cs --- Installing: /usr/local/lib/node_modules/typescript/lib/cs/diagnosticMessages.generated.json --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.core.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/typesMap.json --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.symbol.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/tr --- Installing: /usr/local/lib/node_modules/typescript/lib/tr/diagnosticMessages.generated.json --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.promise.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/ko --- Installing: /usr/local/lib/node_modules/typescript/lib/ko/diagnosticMessages.generated.json --- Installing: /usr/local/lib/node_modules/typescript/lib/es --- Installing: /usr/local/lib/node_modules/typescript/lib/es/diagnosticMessages.generated.json --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.string.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.esnext.weakref.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.scripthost.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/typescript.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2018.full.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.reflect.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/protocol.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2018.promise.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2017.full.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2019.string.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.webworker.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/pl --- Installing: /usr/local/lib/node_modules/typescript/lib/pl/diagnosticMessages.generated.json --- Installing: /usr/local/lib/node_modules/typescript/lib/fr --- Installing: /usr/local/lib/node_modules/typescript/lib/fr/diagnosticMessages.generated.json --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.generator.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2017.string.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.full.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/typescript.js --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.esnext.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/cancellationToken.js --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/tsserverlibrary.js --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.webworker.iterable.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/ja --- Installing: /usr/local/lib/node_modules/typescript/lib/ja/diagnosticMessages.generated.json --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2018.regexp.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.esnext.full.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2017.intl.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/pt-br --- Installing: /usr/local/lib/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.esnext.intl.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/zh-tw --- Installing: /usr/local/lib/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2016.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2019.object.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/tsserver.js --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2016.array.include.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.iterable.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/de --- Installing: /usr/local/lib/node_modules/typescript/lib/de/diagnosticMessages.generated.json --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2018.intl.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.dom.iterable.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/typescriptServices.js --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.esnext.string.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.dom.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2018.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/watchGuard.js --- Installing: /usr/local/lib/node_modules/typescript/lib/zh-cn --- Installing: /usr/local/lib/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json --- Installing: /usr/local/lib/node_modules/typescript/lib/ru --- Installing: /usr/local/lib/node_modules/typescript/lib/ru/diagnosticMessages.generated.json --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2019.symbol.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/typingsInstaller.js --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.esnext.promise.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.promise.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/README.md --- Installing: /usr/local/lib/node_modules/typescript/lib/it --- Installing: /usr/local/lib/node_modules/typescript/lib/it/diagnosticMessages.generated.json --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2016.full.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2019.array.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2020.bigint.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2019.full.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/tsc.js --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2015.proxy.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es6.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.webworker.importscripts.d.ts --- Installing: /usr/local/lib/node_modules/typescript/lib/lib.es2019.d.ts --- Installing: /usr/local/lib/node_modules/typescript/README.md --- Installing: /usr/local/lib/bootstrap.ts --- Installing: /usr/local/lib/libts_loaderd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libts_loaderd.so" to "/usr/local/lib" --- Installing: /usr/local/lib/libwasm_loaderd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libwasm_loaderd.so" to "/usr/local/lib" --- Installing: /usr/local/lib/libwasmtime.so --- Installing: /usr/local/lib/libmetacall_seriald.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libmetacall_seriald.so" to "/usr/local/lib" --- Installing: /usr/local/lib/librapid_json_seriald.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/librapid_json_seriald.so" to "/usr/local/lib" --- Installing: /usr/local/lib/libplthook_detourd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libplthook_detourd.so" to "/usr/local/lib" --- Installing: /usr/local/lib/libplugin_extensiond.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/libplugin_extensiond.so" to "/usr/local/lib" --- Installing: /usr/local/include/backward.hpp --- Installing: /usr/local/lib/backward/BackwardConfig.cmake --- Installing: /usr/local/lib/plugins --- Installing: /usr/local/lib/plugins/backtrace_plugin --- Installing: /usr/local/lib/plugins/backtrace_plugin/libbacktrace_plugind.so --- Installing: /usr/local/lib/plugins/backtrace_plugin/metacall.json --- Installing: /usr/local/lib/plugins/cli --- Installing: /usr/local/lib/plugins/cli/cmd --- Installing: /usr/local/lib/plugins/cli/cmd/cli_sandbox_plugin --- Installing: /usr/local/lib/plugins/cli/cmd/cli_sandbox_plugin/libcli_sandbox_plugind.so --- Installing: /usr/local/lib/plugins/cli/cmd/cli_sandbox_plugin/metacall.json --- Installing: /usr/local/lib/plugins/cli/internal --- Installing: /usr/local/lib/plugins/cli/internal/cli_repl_plugin --- Installing: /usr/local/lib/plugins/cli/internal/cli_repl_plugin/cli_repl_plugin.js --- Installing: /usr/local/lib/plugins/cli/internal/cli_repl_plugin/parser.js --- Installing: /usr/local/lib/plugins/cli/internal/cli_repl_plugin/metacall.json --- Installing: /usr/local/lib/plugins/cli/internal/cli_cmd_plugin --- Installing: /usr/local/lib/plugins/cli/internal/cli_cmd_plugin/cli_cmd_plugin.js --- Installing: /usr/local/lib/plugins/cli/internal/cli_cmd_plugin/metacall.json --- Installing: /usr/local/lib/plugins/cli/repl --- Installing: /usr/local/lib/plugins/cli/repl/cli_core_plugin --- Installing: /usr/local/lib/plugins/cli/repl/cli_core_plugin/libcli_core_plugind.so --- Installing: /usr/local/lib/plugins/cli/repl/cli_core_plugin/cli_core_plugin_repl.js --- Installing: /usr/local/lib/plugins/cli/repl/cli_core_plugin/metacall.json --- Installing: /usr/local/lib/plugins/sandbox_plugin --- Installing: /usr/local/lib/plugins/sandbox_plugin/libsandbox_plugind.so --- Installing: /usr/local/lib/plugins/sandbox_plugin/metacall.json --- Installing: /usr/local/lib/node_modules/metacall/index.js --- Installing: /usr/local/lib/node_modules/metacall/index.d.ts --- Installing: /usr/local/lib/node_modules/metacall/package.json --- Installing: /usr/local/lib/node_modules/metacall/package-lock.json --- Installing: /usr/local/lib/node_modules/metacall/LICENSE -Processing /usr/local/metacall/source/ports/py_port - Preparing metadata (setup.py): started - Preparing metadata (setup.py): finished with status 'done' -Building wheels for collected packages: metacall - Building wheel for metacall (setup.py): started - Building wheel for metacall (setup.py): finished with status 'done' - Created wheel for metacall: filename=metacall-0.5.1-py2.py3-none-any.whl size=14061 sha256=015f92f2fa3cc2bc911cd45a282a12c381d25ca1c498f99098a4a30018c24e84 - Stored in directory: /tmp/pip-ephem-wheel-cache-a3n0sbsf/wheels/67/d1/05/9442633228a4c6adb005b8d5d97a193b9876b444ce637c7bbe -Successfully built metacall -Installing collected packages: metacall -Successfully installed metacall-0.5.1 -WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning. --- Installing: /usr/local/lib/rb_portd.so --- Set non-toolchain portion of runtime path of "/usr/local/lib/rb_portd.so" to "/usr/local/lib" --- Installing: /usr/local/bin/metacallclid --- Set non-toolchain portion of runtime path of "/usr/local/bin/metacallclid" to "/usr/local/lib" --- Up-to-date: /usr/local/include/metacall --- Installing: /usr/local/include/metacall/metacall_loaders.h --- Installing: /usr/local/include/metacall/metacall_version.h -MetaCall configuration paths (overwritables) -LOADER_SCRIPT_PATH: - Description: Directory where scripts are located - Install Location: N/A - Default Location: scripts -CONFIGURATION_PATH: - Description: Path to the main global MetaCall configuration - Install Location: /usr/local/share/metacall/configurations/global.json - Default Location: configurations/global.json -LOADER_LIBRARY_PATH: - Description: Directory where MetaCall loader plugins are located - Install Location: /usr/local/lib - Default Location: . -SERIAL_LIBRARY_PATH: - Description: Directory where MetaCall serial plugins are located - Install Location: /usr/local/lib - Default Location: serials -DETOUR_LIBRARY_PATH: - Description: Directory where MetaCall detour plugins are located - Install Location: /usr/local/lib - Default Location: detours --- Installing: /usr/local/share/metacall/VERSION --- Installing: /usr/local/share/metacall/metacall-config.cmake --- Installing: /usr/local/share/metacall/metacall-config-version.cmake --- Installing: /usr/local/share/metacall/AUTHORS --- Installing: /usr/local/share/metacall/LICENSE --- Installing: /usr/local/share/metacall/README.md -Removing intermediate container 8fc0ef566964 - ---> a154882bd14f -Successfully built a154882bd14f -Successfully tagged metacall/core:dev diff --git a/source/plugins/backtrace_plugin/CMakeLists.txt b/source/plugins/backtrace_plugin/CMakeLists.txt index ba955b7d8..d114092a9 100644 --- a/source/plugins/backtrace_plugin/CMakeLists.txt +++ b/source/plugins/backtrace_plugin/CMakeLists.txt @@ -13,6 +13,8 @@ if(NOT OPTION_BUILD_GUIX) FetchContent_Declare(BackwardCpp GIT_REPOSITORY https://github.com/bombela/backward-cpp GIT_TAG f30744bcf726ea3735df7ecf9e9de9ddac540283 + CMAKE_ARGS + -DCMAKE_POLICY_VERSION_MINIMUM=3.5 ) FetchContent_MakeAvailable(BackwardCpp) From 1bcab450d20bd708e6ba725bbc02f5e1c9f9d74b Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 10 Apr 2025 19:16:16 +0200 Subject: [PATCH 15/68] Solve issues in release. --- source/tests/dynlink_test/CMakeLists.txt | 3 +++ source/tests/dynlink_test/source/dynlink_test.cpp | 4 +--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/source/tests/dynlink_test/CMakeLists.txt b/source/tests/dynlink_test/CMakeLists.txt index d0e0d844d..2ba18f0d3 100644 --- a/source/tests/dynlink_test/CMakeLists.txt +++ b/source/tests/dynlink_test/CMakeLists.txt @@ -115,6 +115,9 @@ target_compile_options(${target} target_link_options(${target} PRIVATE ${DEFAULT_LINKER_OPTIONS} + + $<$,$>:-Wl,-export_dynamic> + $<$:-rdynamic> ) # diff --git a/source/tests/dynlink_test/source/dynlink_test.cpp b/source/tests/dynlink_test/source/dynlink_test.cpp index 1ba674206..dea1c0c8e 100644 --- a/source/tests/dynlink_test/source/dynlink_test.cpp +++ b/source/tests/dynlink_test/source/dynlink_test.cpp @@ -38,7 +38,7 @@ class dynlink_test : public testing::Test #ifdef _WIN32 #define EXPORT_SYMBOL __declspec(dllexport) #else - #define EXPORT_SYMBOL __attribute__((used)) __attribute__((visibility("default"))) + #define EXPORT_SYMBOL __attribute__((visibility("default"))) #endif extern "C" EXPORT_SYMBOL int function_from_current_executable(void) @@ -114,8 +114,6 @@ TEST_F(dynlink_test, DefaultConstructor) dynlink_symbol_addr addr; - EXPECT_EQ((int)48, (int)function_from_current_executable()); - EXPECT_EQ((int)0, dynlink_symbol(proc, "function_from_current_executable", &addr)); ASSERT_NE((dynlink_symbol_addr)addr, (dynlink_symbol_addr)NULL); From 9171ce67af3905c16eec00865c43778cd35f809f Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 10 Apr 2025 19:34:52 +0200 Subject: [PATCH 16/68] Solve issues with atomic. --- source/metacall/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/metacall/CMakeLists.txt b/source/metacall/CMakeLists.txt index 7aefaabd1..25f45878e 100644 --- a/source/metacall/CMakeLists.txt +++ b/source/metacall/CMakeLists.txt @@ -202,6 +202,9 @@ target_link_libraries(${target} $<$:${CMAKE_DL_LIBS}> # Native dynamic load library + # Fix issues with atomics in armv6 and armv7 + $<$:-latomic> + INTERFACE ) From 06014cfb535a924373074973a6438e3358c78452 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Fri, 11 Apr 2025 00:25:43 +0200 Subject: [PATCH 17/68] Solve issues with logs on 32 b32 bits. --- source/log/source/log_policy_format_text.c | 4 ++-- source/tests/log_custom_test/source/log_custom_test.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/log/source/log_policy_format_text.c b/source/log/source/log_policy_format_text.c index 1deea2c22..7f30cae36 100644 --- a/source/log/source/log_policy_format_text.c +++ b/source/log/source/log_policy_format_text.c @@ -20,8 +20,8 @@ /* -- Definitions -- */ -#define LOG_POLICY_FORMAT_TEXT_STR_DEBUG "[%.19s] #%" PRIuS " [ %" PRIuS " | %s | %s ] @%s : " -#define LOG_POLICY_FORMAT_TEXT_STR_RELEASE "[%.19s] #%" PRIuS " @%s : " +#define LOG_POLICY_FORMAT_TEXT_STR_DEBUG "[%.19s] #%" PRIu64 " [ %" PRIuS " | %s | %s ] @%s : " +#define LOG_POLICY_FORMAT_TEXT_STR_RELEASE "[%.19s] #%" PRIu64 " @%s : " #define LOG_POLICY_FORMAT_TEXT_STR_PRETTY "\x1b[32m%s\x1b[0m: " /* -- Macros -- */ diff --git a/source/tests/log_custom_test/source/log_custom_test.cpp b/source/tests/log_custom_test/source/log_custom_test.cpp index 51754be99..f97ebcc6b 100644 --- a/source/tests/log_custom_test/source/log_custom_test.cpp +++ b/source/tests/log_custom_test/source/log_custom_test.cpp @@ -25,7 +25,7 @@ #include #include -static const char format[] = "%.19s #%" PRIuS " %s:%" PRIuS " %s @%s "; +static const char format[] = "%.19s #%" PRIu64 " %s:%" PRIuS " %s @%s "; class log_custom_test : public testing::Test { From 1e241818a7f746001d4f1a80102fadb35c5f722b Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Fri, 11 Apr 2025 17:12:34 +0200 Subject: [PATCH 18/68] Update backtrace. --- .../plugins/backtrace_plugin/CMakeLists.txt | 24 ++++--------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/source/plugins/backtrace_plugin/CMakeLists.txt b/source/plugins/backtrace_plugin/CMakeLists.txt index d114092a9..441fe1b40 100644 --- a/source/plugins/backtrace_plugin/CMakeLists.txt +++ b/source/plugins/backtrace_plugin/CMakeLists.txt @@ -12,9 +12,7 @@ if(NOT OPTION_BUILD_GUIX) FetchContent_Declare(BackwardCpp GIT_REPOSITORY https://github.com/bombela/backward-cpp - GIT_TAG f30744bcf726ea3735df7ecf9e9de9ddac540283 - CMAKE_ARGS - -DCMAKE_POLICY_VERSION_MINIMUM=3.5 + GIT_TAG 94718085efa256fb25a311a46b5948ee0d95890a ) FetchContent_MakeAvailable(BackwardCpp) @@ -25,7 +23,7 @@ if(NOT OPTION_BUILD_GUIX) ) if(NOT BackwardCpp_POPULATED) - FetchContent_Populate(backward-cpp) + FetchContent_Populate(BackwardCpp) endif() endif() @@ -33,18 +31,6 @@ if(NOT BackwardCpp_POPULATED OR NOT BackwardCpp_SOURCE) message(STATUS "BackwardCpp could not be installed, trying to find it on the system") endif() -find_package(Backward - CONFIG - PATHS ${BackwardCpp_SOURCE} -) - -if(NOT BACKWARD_FOUND) - message(WARNING "BackwardCpp could not be found, skipping backtrace plugin compilation") - return() -endif() - -include(${BackwardCpp_SOURCE}/BackwardConfig.cmake) - # # Plugin name and options # @@ -161,8 +147,6 @@ target_include_directories(${target} $ # MetaCall includes - ${BACKWARD_INCLUDE_DIR} # Backward-cpp includes - PUBLIC ${DEFAULT_INCLUDE_DIRECTORIES} @@ -180,11 +164,11 @@ target_link_libraries(${target} PRIVATE ${META_PROJECT_NAME}::metacall # MetaCall library + Backward::Interface # Backward-cpp library + PUBLIC ${DEFAULT_LIBRARIES} - Backward::Backward # Backward-cpp library - INTERFACE ) From 69dc5d40bfaef482533f03a4ac4827dc64135d74 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Fri, 11 Apr 2025 17:13:12 +0200 Subject: [PATCH 19/68] Solve issues in node loader for 32 bits. --- source/loaders/node_loader/source/node_loader_impl.cpp | 8 ++++---- .../node_loader/source/node_loader_trampoline.cpp | 9 ++++++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/source/loaders/node_loader/source/node_loader_impl.cpp b/source/loaders/node_loader/source/node_loader_impl.cpp index d622cbb0d..9a318719d 100644 --- a/source/loaders/node_loader/source/node_loader_impl.cpp +++ b/source/loaders/node_loader/source/node_loader_impl.cpp @@ -619,7 +619,7 @@ typedef struct node_loader_impl_startup_args_type } /* Get node impl pointer */ - ssize_t node_impl_ptr_length = snprintf(NULL, 0, "%p", (void *)node_impl); + ssize_t node_impl_ptr_length = snprintf(NULL, 0, "%" PRIxPTR, (uintptr_t)(node_impl)); if (node_impl_ptr_length <= 0) { @@ -636,10 +636,10 @@ typedef struct node_loader_impl_startup_args_type return 1; } - snprintf(node_impl_ptr_str, node_impl_ptr_str_size, "%p", (void *)node_impl); + snprintf(node_impl_ptr_str, node_impl_ptr_str_size, "%" PRIxPTR, (uintptr_t)(node_impl)); /* Get register pointer */ - ssize_t register_ptr_length = snprintf(NULL, 0, "%p", (void *)&node_loader_impl_register); + ssize_t register_ptr_length = snprintf(NULL, 0, "%" PRIxPTR, (uintptr_t)(&node_loader_impl_register)); if (register_ptr_length <= 0) { @@ -656,7 +656,7 @@ typedef struct node_loader_impl_startup_args_type return 1; } - snprintf(register_ptr_str, register_ptr_str_size, "%p", (void *)&node_loader_impl_register); + snprintf(register_ptr_str, register_ptr_str_size, "%" PRIxPTR, (uintptr_t)(&node_loader_impl_register)); return 0; } diff --git a/source/loaders/node_loader/source/node_loader_trampoline.cpp b/source/loaders/node_loader/source/node_loader_trampoline.cpp index 9083223a1..3dbb35293 100644 --- a/source/loaders/node_loader/source/node_loader_trampoline.cpp +++ b/source/loaders/node_loader/source/node_loader_trampoline.cpp @@ -9,7 +9,8 @@ #include #include -#include /* TODO: Improve this trick */ +#include +#include /* TODO: Improve this trick */ #define NODE_LOADER_TRAMPOLINE_DECLARE_NAPI_METHOD(name, func) \ { \ @@ -45,7 +46,7 @@ union loader_impl_trampoline_cast */ static void node_loader_trampoline_parse_pointer(napi_env env, napi_value v, void **ptr) { - const size_t ptr_str_size = (sizeof(void *) * 2) + 1; + const size_t ptr_str_size = (sizeof(uintptr_t) * 2) + 1; size_t ptr_str_size_copied = 0; char ptr_str[ptr_str_size]; napi_status status = napi_get_value_string_utf8(env, v, ptr_str, ptr_str_size, &ptr_str_size_copied); @@ -53,7 +54,9 @@ static void node_loader_trampoline_parse_pointer(napi_env env, napi_value v, voi node_loader_impl_exception(env, status); /* Convert the string to pointer type */ - sscanf(ptr_str, "%p", ptr); + uintptr_t uint_ptr; + sscanf(ptr_str, "%" SCNxPTR, &uint_ptr); + *ptr = (void *)uint_ptr; } napi_value node_loader_trampoline_register(napi_env env, napi_callback_info info) From 633e9f38b5ad552e642f7c3e359b4768e61805f1 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Tue, 15 Apr 2025 17:09:42 +0200 Subject: [PATCH 20/68] Updated gtest, add comments on fork. --- cmake/InstallGTest.cmake | 2 +- source/metacall/source/metacall_fork.c | 2 ++ source/tests/metacall_fork_test/source/metacall_fork_test.cpp | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cmake/InstallGTest.cmake b/cmake/InstallGTest.cmake index 7977751f0..24cb39665 100644 --- a/cmake/InstallGTest.cmake +++ b/cmake/InstallGTest.cmake @@ -24,7 +24,7 @@ if(NOT GTEST_FOUND OR USE_BUNDLED_GTEST) if(NOT GTEST_VERSION OR USE_BUNDLED_GTEST) - set(GTEST_VERSION 1.11.0) + set(GTEST_VERSION 1.16.0) endif() find_package(Threads REQUIRED) diff --git a/source/metacall/source/metacall_fork.c b/source/metacall/source/metacall_fork.c index e353879fd..0c626a96d 100644 --- a/source/metacall/source/metacall_fork.c +++ b/source/metacall/source/metacall_fork.c @@ -316,6 +316,8 @@ void metacall_fork_destroy(void) { detour d = detour_create(metacall_detour()); + /* TODO: Restore the hook? We need support for this on the detour API */ + detour_unload(d, detour_fork_handle); detour_fork_handle = NULL; diff --git a/source/tests/metacall_fork_test/source/metacall_fork_test.cpp b/source/tests/metacall_fork_test/source/metacall_fork_test.cpp index 2b288b12f..0f34b6bd7 100644 --- a/source/tests/metacall_fork_test/source/metacall_fork_test.cpp +++ b/source/tests/metacall_fork_test/source/metacall_fork_test.cpp @@ -115,7 +115,7 @@ pid_t fork() } else if (result == RTL_CLONE_CHILD) { - /* fix stdio */ + /* Fix stdio */ AllocConsole(); return 0; } From 8d8a6fc1beffb9ae5e6d11031793595609035f33 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Tue, 15 Apr 2025 20:23:21 +0200 Subject: [PATCH 21/68] Update google test version. --- source/tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/tests/CMakeLists.txt b/source/tests/CMakeLists.txt index aca1cfdaa..bf31bbbf9 100644 --- a/source/tests/CMakeLists.txt +++ b/source/tests/CMakeLists.txt @@ -12,7 +12,7 @@ if("${CMAKE_VERSION}" VERSION_LESS "3.11" AND POLICY CMP0037) set_policy(CMP0037 OLD) endif() -set(GTEST_VERSION 1.11.0) +set(GTEST_VERSION 1.16.0) find_package(GTest ${GTEST_VERSION}) From 8b20384e3ad253f62aa603c445f280e3fbeb3c49 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Tue, 15 Apr 2025 20:33:09 +0200 Subject: [PATCH 22/68] Solve issues with gtest. --- cmake/InstallGTest.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/InstallGTest.cmake b/cmake/InstallGTest.cmake index 24cb39665..6f03ef2fc 100644 --- a/cmake/InstallGTest.cmake +++ b/cmake/InstallGTest.cmake @@ -38,7 +38,7 @@ if(NOT GTEST_FOUND OR USE_BUNDLED_GTEST) # Import Google Test Framework ExternalProject_Add(google-test-depends GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG release-${GTEST_VERSION} + GIT_TAG v${GTEST_VERSION} CMAKE_ARGS -Dgtest_build_samples=OFF -Dgtest_build_tests=OFF From 00600e7db5e9530c840117498bc74857eb64f713 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Tue, 15 Apr 2025 21:21:42 +0200 Subject: [PATCH 23/68] Update gtest properly to c++17. --- cmake/Portability.cmake | 12 ++++++------ source/tests/adt_map_test/CMakeLists.txt | 9 +++++++++ source/tests/adt_set_test/CMakeLists.txt | 9 +++++++++ source/tests/adt_trie_test/CMakeLists.txt | 9 +++++++++ source/tests/adt_vector_test/CMakeLists.txt | 9 +++++++++ source/tests/configuration_test/CMakeLists.txt | 9 +++++++++ source/tests/detour_test/CMakeLists.txt | 9 +++++++++ source/tests/dynlink_test/CMakeLists.txt | 9 +++++++++ source/tests/environment_test/CMakeLists.txt | 9 +++++++++ source/tests/log_custom_test/CMakeLists.txt | 9 +++++++++ source/tests/log_test/CMakeLists.txt | 9 +++++++++ .../metacall_backtrace_plugin_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_c_lib_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_c_test/CMakeLists.txt | 9 +++++++++ .../metacall_callback_complex_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_cast_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_clear_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../metacall_cli_core_plugin_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_cobol_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ source/tests/metacall_cs_test/CMakeLists.txt | 9 +++++++++ .../metacall_csharp_function_test/CMakeLists.txt | 9 +++++++++ .../metacall_csharp_static_class_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_depends_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_distributable_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_ducktype_test/CMakeLists.txt | 9 +++++++++ .../metacall_duplicated_handle_test/CMakeLists.txt | 9 +++++++++ .../metacall_duplicated_symbols_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_dynlink_path_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_ext_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_file_fail_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_file_glob_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_file_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_fork_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_function_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_handle_export_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_handle_get_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_init_fini_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../tests/metacall_initialize_ex_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_initialize_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_inspect_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_integration_test/CMakeLists.txt | 9 +++++++++ .../metacall_invalid_loader_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_java_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_julia_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ source/tests/metacall_llvm_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../metacall_load_configuration_test/CMakeLists.txt | 9 +++++++++ .../metacall_load_memory_empty_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_load_memory_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_logs_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_lua_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_map_await_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_map_test/CMakeLists.txt | 9 +++++++++ .../metacall_node_async_multiple_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ source/tests/metacall_node_async_test/CMakeLists.txt | 9 +++++++++ .../metacall_node_await_chain_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_node_call_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_node_callback_test/CMakeLists.txt | 9 +++++++++ .../metacall_node_clear_mem_test/CMakeLists.txt | 9 +++++++++ .../metacall_node_default_export_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../metacall_node_event_loop_test/CMakeLists.txt | 9 +++++++++ .../metacall_node_exception_test/CMakeLists.txt | 9 +++++++++ .../metacall_node_extension_test/CMakeLists.txt | 9 +++++++++ .../metacall_node_fail_env_var_test/CMakeLists.txt | 9 +++++++++ .../metacall_node_fail_load_leak_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_node_fail_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_node_inline_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../metacall_node_native_code_test/CMakeLists.txt | 9 +++++++++ .../metacall_node_port_await_test/CMakeLists.txt | 9 +++++++++ .../metacall_node_port_c_lib_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_node_port_rs_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_node_port_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../metacall_node_python_await_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../metacall_node_python_ruby_test/CMakeLists.txt | 9 +++++++++ .../metacall_node_reentrant_test/CMakeLists.txt | 9 +++++++++ .../metacall_node_signal_handler_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_node_test/CMakeLists.txt | 9 +++++++++ .../metacall_node_typescript_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../metacall_plugin_extension_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_python_async_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_python_await_test/CMakeLists.txt | 9 +++++++++ .../metacall_python_builtins_test/CMakeLists.txt | 9 +++++++++ .../metacall_python_callback_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_python_dict_test/CMakeLists.txt | 9 +++++++++ .../metacall_python_exception_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_python_fail_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_python_gc_test/CMakeLists.txt | 9 +++++++++ .../metacall_python_loader_port_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_python_model_test/CMakeLists.txt | 9 +++++++++ .../metacall_python_node_await_test/CMakeLists.txt | 9 +++++++++ .../metacall_python_object_class_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_python_open_test/CMakeLists.txt | 9 +++++++++ .../metacall_python_pointer_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../metacall_python_port_https_test/CMakeLists.txt | 9 +++++++++ .../metacall_python_port_import_test/CMakeLists.txt | 9 +++++++++ .../metacall_python_port_pointer_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_python_port_test/CMakeLists.txt | 9 +++++++++ .../metacall_python_reentrant_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ source/tests/metacall_python_test/CMakeLists.txt | 9 +++++++++ .../metacall_python_varargs_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../tests/metacall_reinitialize_test/CMakeLists.txt | 9 +++++++++ .../metacall_reload_functions_test/CMakeLists.txt | 9 +++++++++ .../tests/metacall_return_monad_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_rpc_test/CMakeLists.txt | 9 +++++++++ .../metacall_ruby_fail_empty_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_ruby_fail_test/CMakeLists.txt | 9 +++++++++ .../metacall_ruby_object_class_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ source/tests/metacall_ruby_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_rust_class_test/CMakeLists.txt | 9 +++++++++ .../metacall_rust_load_from_mem_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ source/tests/metacall_rust_test/CMakeLists.txt | 9 +++++++++ .../metacall_sandbox_plugin_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_test/CMakeLists.txt | 9 +++++++++ .../metacall_typescript_call_map_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../metacall_typescript_node_test/CMakeLists.txt | 9 +++++++++ .../metacall_typescript_require_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_typescript_test/CMakeLists.txt | 9 +++++++++ .../CMakeLists.txt | 9 +++++++++ .../metacall_typescript_tsx_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_version_test/CMakeLists.txt | 9 +++++++++ .../metacall_wasm_python_port_test/CMakeLists.txt | 9 +++++++++ source/tests/metacall_wasm_test/CMakeLists.txt | 9 +++++++++ source/tests/portability_path_test/CMakeLists.txt | 9 +++++++++ source/tests/preprocessor_test/CMakeLists.txt | 9 +++++++++ source/tests/rb_loader_parser_test/CMakeLists.txt | 9 +++++++++ source/tests/reflect_function_test/CMakeLists.txt | 9 +++++++++ source/tests/reflect_metadata_test/CMakeLists.txt | 9 +++++++++ .../tests/reflect_object_class_test/CMakeLists.txt | 9 +++++++++ source/tests/reflect_scope_test/CMakeLists.txt | 9 +++++++++ source/tests/reflect_value_cast_test/CMakeLists.txt | 9 +++++++++ source/tests/serial_test/CMakeLists.txt | 9 +++++++++ 162 files changed, 1455 insertions(+), 6 deletions(-) diff --git a/cmake/Portability.cmake b/cmake/Portability.cmake index 86193291c..556427b18 100644 --- a/cmake/Portability.cmake +++ b/cmake/Portability.cmake @@ -146,11 +146,10 @@ set(PROJECT_ARCH_NAME ${CMAKE_SYSTEM_PROCESSOR}) # 32 or 64 bit Linux if(PROJECT_OS_LINUX) - if(${PROJECT_ARCH_NAME} STREQUAL "x86") + if (${PROJECT_ARCH_NAME} MATCHES "^(x86|i[3-6]86|x86_64)$" AND "${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") set(PROJECT_ARCH_32BIT TRUE BOOL INTERNAL) - endif() - - if(${PROJECT_ARCH_NAME} MATCHES "(x86_64)|(amd64)|(AMD64)") + set(PROJECT_ARCH_X86 TRUE BOOL INTERNAL) + elseif(${PROJECT_ARCH_NAME} MATCHES "(x86_64)|(amd64)|(AMD64)") set(PROJECT_ARCH_64BIT TRUE BOOL INTERNAL) set(PROJECT_ARCH_AMD64 TRUE BOOL INTERNAL) elseif(${PROJECT_ARCH_NAME} STREQUAL "aarch64") @@ -162,6 +161,7 @@ if(PROJECT_OS_LINUX) set(PROJECT_ARCH_64BIT TRUE BOOL INTERNAL) endif() + # Verify the architecture is correct if(PROJECT_ARCH_32BIT) if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4") message(STATUS "Linux ${PROJECT_ARCH_NAME} 32bit detected") @@ -183,7 +183,7 @@ endif() if(NOT PROJECT_ARCH_32BIT AND NOT PROJECT_ARCH_64BIT) if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4") message(STATUS "32bit architecture ${PROJECT_ARCH_NAME} detected") - set(PROJECT_ARCH_32BIT TRUE BOOL INTERNAL) + set(PROJECT_ARCH_32BIT TRUE BOOL INTERNAL) if(PROJECT_OS_WIN) set(WINXBITS Win32) @@ -191,7 +191,7 @@ if(NOT PROJECT_ARCH_32BIT AND NOT PROJECT_ARCH_64BIT) elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") message(STATUS "64bit architecture ${PROJECT_ARCH_NAME} detected") - set(PROJECT_ARCH_64BIT TRUE BOOL INTERNAL) + set(PROJECT_ARCH_64BIT TRUE BOOL INTERNAL) if(PROJECT_OS_WIN) set(WINXBITS Win64) diff --git a/source/tests/adt_map_test/CMakeLists.txt b/source/tests/adt_map_test/CMakeLists.txt index 29ae7e7e9..0767bcbb2 100644 --- a/source/tests/adt_map_test/CMakeLists.txt +++ b/source/tests/adt_map_test/CMakeLists.txt @@ -107,6 +107,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/adt_set_test/CMakeLists.txt b/source/tests/adt_set_test/CMakeLists.txt index d46b7064f..a3d3b1c3f 100644 --- a/source/tests/adt_set_test/CMakeLists.txt +++ b/source/tests/adt_set_test/CMakeLists.txt @@ -107,6 +107,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/adt_trie_test/CMakeLists.txt b/source/tests/adt_trie_test/CMakeLists.txt index 1bac7e403..19babf556 100644 --- a/source/tests/adt_trie_test/CMakeLists.txt +++ b/source/tests/adt_trie_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/adt_vector_test/CMakeLists.txt b/source/tests/adt_vector_test/CMakeLists.txt index dab9ae9a6..e454f0266 100644 --- a/source/tests/adt_vector_test/CMakeLists.txt +++ b/source/tests/adt_vector_test/CMakeLists.txt @@ -107,6 +107,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/configuration_test/CMakeLists.txt b/source/tests/configuration_test/CMakeLists.txt index c9f804954..0700e2bf7 100644 --- a/source/tests/configuration_test/CMakeLists.txt +++ b/source/tests/configuration_test/CMakeLists.txt @@ -115,6 +115,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/detour_test/CMakeLists.txt b/source/tests/detour_test/CMakeLists.txt index d73991ebc..06e3ef979 100644 --- a/source/tests/detour_test/CMakeLists.txt +++ b/source/tests/detour_test/CMakeLists.txt @@ -117,6 +117,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/dynlink_test/CMakeLists.txt b/source/tests/dynlink_test/CMakeLists.txt index 2ba18f0d3..1010f0fb9 100644 --- a/source/tests/dynlink_test/CMakeLists.txt +++ b/source/tests/dynlink_test/CMakeLists.txt @@ -108,6 +108,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/environment_test/CMakeLists.txt b/source/tests/environment_test/CMakeLists.txt index ec3e14449..3472e06a8 100644 --- a/source/tests/environment_test/CMakeLists.txt +++ b/source/tests/environment_test/CMakeLists.txt @@ -103,6 +103,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/log_custom_test/CMakeLists.txt b/source/tests/log_custom_test/CMakeLists.txt index 73ef1f64a..f46ff859e 100644 --- a/source/tests/log_custom_test/CMakeLists.txt +++ b/source/tests/log_custom_test/CMakeLists.txt @@ -105,6 +105,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/log_test/CMakeLists.txt b/source/tests/log_test/CMakeLists.txt index d3f70ddc3..d091de149 100644 --- a/source/tests/log_test/CMakeLists.txt +++ b/source/tests/log_test/CMakeLists.txt @@ -105,6 +105,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_backtrace_plugin_test/CMakeLists.txt b/source/tests/metacall_backtrace_plugin_test/CMakeLists.txt index 013b1d742..900355faa 100644 --- a/source/tests/metacall_backtrace_plugin_test/CMakeLists.txt +++ b/source/tests/metacall_backtrace_plugin_test/CMakeLists.txt @@ -114,6 +114,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_c_lib_test/CMakeLists.txt b/source/tests/metacall_c_lib_test/CMakeLists.txt index eace7e1da..d3a375064 100644 --- a/source/tests/metacall_c_lib_test/CMakeLists.txt +++ b/source/tests/metacall_c_lib_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_c_test/CMakeLists.txt b/source/tests/metacall_c_test/CMakeLists.txt index 7599f98cb..a5c3e0edd 100644 --- a/source/tests/metacall_c_test/CMakeLists.txt +++ b/source/tests/metacall_c_test/CMakeLists.txt @@ -120,6 +120,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_callback_complex_test/CMakeLists.txt b/source/tests/metacall_callback_complex_test/CMakeLists.txt index 00183a9c2..ddf680698 100644 --- a/source/tests/metacall_callback_complex_test/CMakeLists.txt +++ b/source/tests/metacall_callback_complex_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_cast_test/CMakeLists.txt b/source/tests/metacall_cast_test/CMakeLists.txt index ec7b1876b..674a14516 100644 --- a/source/tests/metacall_cast_test/CMakeLists.txt +++ b/source/tests/metacall_cast_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_clear_test/CMakeLists.txt b/source/tests/metacall_clear_test/CMakeLists.txt index bb461a5e9..859807d95 100644 --- a/source/tests/metacall_clear_test/CMakeLists.txt +++ b/source/tests/metacall_clear_test/CMakeLists.txt @@ -114,6 +114,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_cli_core_plugin_await_test/CMakeLists.txt b/source/tests/metacall_cli_core_plugin_await_test/CMakeLists.txt index 9c444e084..13284fb39 100644 --- a/source/tests/metacall_cli_core_plugin_await_test/CMakeLists.txt +++ b/source/tests/metacall_cli_core_plugin_await_test/CMakeLists.txt @@ -119,6 +119,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_cli_core_plugin_test/CMakeLists.txt b/source/tests/metacall_cli_core_plugin_test/CMakeLists.txt index 8de5b40ef..f0ecb936b 100644 --- a/source/tests/metacall_cli_core_plugin_test/CMakeLists.txt +++ b/source/tests/metacall_cli_core_plugin_test/CMakeLists.txt @@ -108,6 +108,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_cobol_test/CMakeLists.txt b/source/tests/metacall_cobol_test/CMakeLists.txt index c524b462c..3667141bc 100644 --- a/source/tests/metacall_cobol_test/CMakeLists.txt +++ b/source/tests/metacall_cobol_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_configuration_default_test/CMakeLists.txt b/source/tests/metacall_configuration_default_test/CMakeLists.txt index 571fc6786..8cf0d4007 100644 --- a/source/tests/metacall_configuration_default_test/CMakeLists.txt +++ b/source/tests/metacall_configuration_default_test/CMakeLists.txt @@ -125,6 +125,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_configuration_exec_path_test/CMakeLists.txt b/source/tests/metacall_configuration_exec_path_test/CMakeLists.txt index e63ff23b9..ff845b77b 100644 --- a/source/tests/metacall_configuration_exec_path_test/CMakeLists.txt +++ b/source/tests/metacall_configuration_exec_path_test/CMakeLists.txt @@ -114,6 +114,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_cs_test/CMakeLists.txt b/source/tests/metacall_cs_test/CMakeLists.txt index 084e5f819..6eb981ca3 100644 --- a/source/tests/metacall_cs_test/CMakeLists.txt +++ b/source/tests/metacall_cs_test/CMakeLists.txt @@ -113,6 +113,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_csharp_function_test/CMakeLists.txt b/source/tests/metacall_csharp_function_test/CMakeLists.txt index 53e8df1ac..0a70cedb5 100644 --- a/source/tests/metacall_csharp_function_test/CMakeLists.txt +++ b/source/tests/metacall_csharp_function_test/CMakeLists.txt @@ -121,6 +121,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_csharp_static_class_test/CMakeLists.txt b/source/tests/metacall_csharp_static_class_test/CMakeLists.txt index 9b04dac50..7c2289c3d 100644 --- a/source/tests/metacall_csharp_static_class_test/CMakeLists.txt +++ b/source/tests/metacall_csharp_static_class_test/CMakeLists.txt @@ -121,6 +121,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_depends_test/CMakeLists.txt b/source/tests/metacall_depends_test/CMakeLists.txt index ddc10ae8d..46fe418c7 100644 --- a/source/tests/metacall_depends_test/CMakeLists.txt +++ b/source/tests/metacall_depends_test/CMakeLists.txt @@ -114,6 +114,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_distributable_test/CMakeLists.txt b/source/tests/metacall_distributable_test/CMakeLists.txt index 87354950d..07d558161 100644 --- a/source/tests/metacall_distributable_test/CMakeLists.txt +++ b/source/tests/metacall_distributable_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_ducktype_test/CMakeLists.txt b/source/tests/metacall_ducktype_test/CMakeLists.txt index d092bc229..c8d507e6f 100644 --- a/source/tests/metacall_ducktype_test/CMakeLists.txt +++ b/source/tests/metacall_ducktype_test/CMakeLists.txt @@ -101,6 +101,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_duplicated_handle_test/CMakeLists.txt b/source/tests/metacall_duplicated_handle_test/CMakeLists.txt index 977c38726..35032c7c5 100644 --- a/source/tests/metacall_duplicated_handle_test/CMakeLists.txt +++ b/source/tests/metacall_duplicated_handle_test/CMakeLists.txt @@ -110,6 +110,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_duplicated_symbols_test/CMakeLists.txt b/source/tests/metacall_duplicated_symbols_test/CMakeLists.txt index 8ad6ff0c3..c5612d965 100644 --- a/source/tests/metacall_duplicated_symbols_test/CMakeLists.txt +++ b/source/tests/metacall_duplicated_symbols_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_dynlink_path_test/CMakeLists.txt b/source/tests/metacall_dynlink_path_test/CMakeLists.txt index 70537e13e..c1c9a76c4 100644 --- a/source/tests/metacall_dynlink_path_test/CMakeLists.txt +++ b/source/tests/metacall_dynlink_path_test/CMakeLists.txt @@ -111,6 +111,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_ext_test/CMakeLists.txt b/source/tests/metacall_ext_test/CMakeLists.txt index c7df0805a..3c6b98698 100644 --- a/source/tests/metacall_ext_test/CMakeLists.txt +++ b/source/tests/metacall_ext_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_file_fail_test/CMakeLists.txt b/source/tests/metacall_file_fail_test/CMakeLists.txt index fb4c65e7b..ab6236fe1 100644 --- a/source/tests/metacall_file_fail_test/CMakeLists.txt +++ b/source/tests/metacall_file_fail_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_file_glob_test/CMakeLists.txt b/source/tests/metacall_file_glob_test/CMakeLists.txt index b5479a0f3..ffc5a1c27 100644 --- a/source/tests/metacall_file_glob_test/CMakeLists.txt +++ b/source/tests/metacall_file_glob_test/CMakeLists.txt @@ -119,6 +119,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_file_test/CMakeLists.txt b/source/tests/metacall_file_test/CMakeLists.txt index 7be85a2a6..9dd2a4fb0 100644 --- a/source/tests/metacall_file_test/CMakeLists.txt +++ b/source/tests/metacall_file_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_fork_test/CMakeLists.txt b/source/tests/metacall_fork_test/CMakeLists.txt index 122637bdd..90c96bdef 100644 --- a/source/tests/metacall_fork_test/CMakeLists.txt +++ b/source/tests/metacall_fork_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_function_test/CMakeLists.txt b/source/tests/metacall_function_test/CMakeLists.txt index 2584da52b..9ac6fe47d 100644 --- a/source/tests/metacall_function_test/CMakeLists.txt +++ b/source/tests/metacall_function_test/CMakeLists.txt @@ -107,6 +107,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_handle_export_test/CMakeLists.txt b/source/tests/metacall_handle_export_test/CMakeLists.txt index 762cb174b..fb1a70856 100644 --- a/source/tests/metacall_handle_export_test/CMakeLists.txt +++ b/source/tests/metacall_handle_export_test/CMakeLists.txt @@ -114,6 +114,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_handle_get_test/CMakeLists.txt b/source/tests/metacall_handle_get_test/CMakeLists.txt index 73178da78..c99af8c34 100644 --- a/source/tests/metacall_handle_get_test/CMakeLists.txt +++ b/source/tests/metacall_handle_get_test/CMakeLists.txt @@ -114,6 +114,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_init_fini_test/CMakeLists.txt b/source/tests/metacall_init_fini_test/CMakeLists.txt index bb1783bf3..c757cffb7 100644 --- a/source/tests/metacall_init_fini_test/CMakeLists.txt +++ b/source/tests/metacall_init_fini_test/CMakeLists.txt @@ -114,6 +114,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_initialize_destroy_multiple_node_test/CMakeLists.txt b/source/tests/metacall_initialize_destroy_multiple_node_test/CMakeLists.txt index 3d0c2ffde..9b06663fd 100644 --- a/source/tests/metacall_initialize_destroy_multiple_node_test/CMakeLists.txt +++ b/source/tests/metacall_initialize_destroy_multiple_node_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_initialize_destroy_multiple_test/CMakeLists.txt b/source/tests/metacall_initialize_destroy_multiple_test/CMakeLists.txt index 2de694d0a..3424ea881 100644 --- a/source/tests/metacall_initialize_destroy_multiple_test/CMakeLists.txt +++ b/source/tests/metacall_initialize_destroy_multiple_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_initialize_ex_test/CMakeLists.txt b/source/tests/metacall_initialize_ex_test/CMakeLists.txt index 94332f3b4..714d7ce5b 100644 --- a/source/tests/metacall_initialize_ex_test/CMakeLists.txt +++ b/source/tests/metacall_initialize_ex_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_initialize_test/CMakeLists.txt b/source/tests/metacall_initialize_test/CMakeLists.txt index f8b5b901a..e66bf472e 100644 --- a/source/tests/metacall_initialize_test/CMakeLists.txt +++ b/source/tests/metacall_initialize_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_inspect_test/CMakeLists.txt b/source/tests/metacall_inspect_test/CMakeLists.txt index ff5eaf740..8a97a0c8b 100644 --- a/source/tests/metacall_inspect_test/CMakeLists.txt +++ b/source/tests/metacall_inspect_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_integration_test/CMakeLists.txt b/source/tests/metacall_integration_test/CMakeLists.txt index 55b69ede2..bf2cc13b9 100644 --- a/source/tests/metacall_integration_test/CMakeLists.txt +++ b/source/tests/metacall_integration_test/CMakeLists.txt @@ -113,6 +113,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_invalid_loader_test/CMakeLists.txt b/source/tests/metacall_invalid_loader_test/CMakeLists.txt index 8186d9362..cef1167c5 100644 --- a/source/tests/metacall_invalid_loader_test/CMakeLists.txt +++ b/source/tests/metacall_invalid_loader_test/CMakeLists.txt @@ -101,6 +101,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_java_test/CMakeLists.txt b/source/tests/metacall_java_test/CMakeLists.txt index d9000eeb6..fb814afc1 100644 --- a/source/tests/metacall_java_test/CMakeLists.txt +++ b/source/tests/metacall_java_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_julia_test/CMakeLists.txt b/source/tests/metacall_julia_test/CMakeLists.txt index 32dc65a6d..0bfe22f23 100644 --- a/source/tests/metacall_julia_test/CMakeLists.txt +++ b/source/tests/metacall_julia_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_library_path_without_env_vars_test/CMakeLists.txt b/source/tests/metacall_library_path_without_env_vars_test/CMakeLists.txt index e38ecba46..33428a51b 100644 --- a/source/tests/metacall_library_path_without_env_vars_test/CMakeLists.txt +++ b/source/tests/metacall_library_path_without_env_vars_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_llvm_test/CMakeLists.txt b/source/tests/metacall_llvm_test/CMakeLists.txt index 76f79b68c..cbe63c93f 100644 --- a/source/tests/metacall_llvm_test/CMakeLists.txt +++ b/source/tests/metacall_llvm_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_load_configuration_fail_test/CMakeLists.txt b/source/tests/metacall_load_configuration_fail_test/CMakeLists.txt index 3a6293c6d..c49bf0e10 100644 --- a/source/tests/metacall_load_configuration_fail_test/CMakeLists.txt +++ b/source/tests/metacall_load_configuration_fail_test/CMakeLists.txt @@ -110,6 +110,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_load_configuration_node_python_test/CMakeLists.txt b/source/tests/metacall_load_configuration_node_python_test/CMakeLists.txt index f38f63ffb..6653f9010 100644 --- a/source/tests/metacall_load_configuration_node_python_test/CMakeLists.txt +++ b/source/tests/metacall_load_configuration_node_python_test/CMakeLists.txt @@ -115,6 +115,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_load_configuration_python_node_test/CMakeLists.txt b/source/tests/metacall_load_configuration_python_node_test/CMakeLists.txt index 5d1c09042..f8dd16c32 100644 --- a/source/tests/metacall_load_configuration_python_node_test/CMakeLists.txt +++ b/source/tests/metacall_load_configuration_python_node_test/CMakeLists.txt @@ -112,6 +112,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_load_configuration_relative_test/CMakeLists.txt b/source/tests/metacall_load_configuration_relative_test/CMakeLists.txt index 4cb9cfb73..a16c0c46f 100644 --- a/source/tests/metacall_load_configuration_relative_test/CMakeLists.txt +++ b/source/tests/metacall_load_configuration_relative_test/CMakeLists.txt @@ -107,6 +107,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_load_configuration_test/CMakeLists.txt b/source/tests/metacall_load_configuration_test/CMakeLists.txt index 52f0a339f..3c42adeb5 100644 --- a/source/tests/metacall_load_configuration_test/CMakeLists.txt +++ b/source/tests/metacall_load_configuration_test/CMakeLists.txt @@ -101,6 +101,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_load_memory_empty_test/CMakeLists.txt b/source/tests/metacall_load_memory_empty_test/CMakeLists.txt index 18371653f..b98f18bca 100644 --- a/source/tests/metacall_load_memory_empty_test/CMakeLists.txt +++ b/source/tests/metacall_load_memory_empty_test/CMakeLists.txt @@ -101,6 +101,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_load_memory_test/CMakeLists.txt b/source/tests/metacall_load_memory_test/CMakeLists.txt index 7e45abf25..9203a34ca 100644 --- a/source/tests/metacall_load_memory_test/CMakeLists.txt +++ b/source/tests/metacall_load_memory_test/CMakeLists.txt @@ -101,6 +101,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_logs_test/CMakeLists.txt b/source/tests/metacall_logs_test/CMakeLists.txt index 35386f0f7..2a56bf637 100644 --- a/source/tests/metacall_logs_test/CMakeLists.txt +++ b/source/tests/metacall_logs_test/CMakeLists.txt @@ -101,6 +101,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_lua_test/CMakeLists.txt b/source/tests/metacall_lua_test/CMakeLists.txt index b9b6a62c2..d356553b5 100644 --- a/source/tests/metacall_lua_test/CMakeLists.txt +++ b/source/tests/metacall_lua_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_map_await_test/CMakeLists.txt b/source/tests/metacall_map_await_test/CMakeLists.txt index b36cdee47..6b1df3e95 100644 --- a/source/tests/metacall_map_await_test/CMakeLists.txt +++ b/source/tests/metacall_map_await_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_map_test/CMakeLists.txt b/source/tests/metacall_map_test/CMakeLists.txt index 6022a8abd..b9d40bf14 100644 --- a/source/tests/metacall_map_test/CMakeLists.txt +++ b/source/tests/metacall_map_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_async_multiple_test/CMakeLists.txt b/source/tests/metacall_node_async_multiple_test/CMakeLists.txt index fe9cea8ae..77c1e4b31 100644 --- a/source/tests/metacall_node_async_multiple_test/CMakeLists.txt +++ b/source/tests/metacall_node_async_multiple_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_async_resources_test/CMakeLists.txt b/source/tests/metacall_node_async_resources_test/CMakeLists.txt index a3edb0a50..17e130e41 100644 --- a/source/tests/metacall_node_async_resources_test/CMakeLists.txt +++ b/source/tests/metacall_node_async_resources_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_async_test/CMakeLists.txt b/source/tests/metacall_node_async_test/CMakeLists.txt index 3a29a55a4..d58db6623 100644 --- a/source/tests/metacall_node_async_test/CMakeLists.txt +++ b/source/tests/metacall_node_async_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_await_chain_test/CMakeLists.txt b/source/tests/metacall_node_await_chain_test/CMakeLists.txt index 2b34facf9..52e4ab39e 100644 --- a/source/tests/metacall_node_await_chain_test/CMakeLists.txt +++ b/source/tests/metacall_node_await_chain_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_call_test/CMakeLists.txt b/source/tests/metacall_node_call_test/CMakeLists.txt index 361544791..c0a877d4d 100644 --- a/source/tests/metacall_node_call_test/CMakeLists.txt +++ b/source/tests/metacall_node_call_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_callback_test/CMakeLists.txt b/source/tests/metacall_node_callback_test/CMakeLists.txt index 2fa56024b..1ba50b637 100644 --- a/source/tests/metacall_node_callback_test/CMakeLists.txt +++ b/source/tests/metacall_node_callback_test/CMakeLists.txt @@ -108,6 +108,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_clear_mem_test/CMakeLists.txt b/source/tests/metacall_node_clear_mem_test/CMakeLists.txt index 249b9066b..d7f9e9124 100644 --- a/source/tests/metacall_node_clear_mem_test/CMakeLists.txt +++ b/source/tests/metacall_node_clear_mem_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_default_export_test/CMakeLists.txt b/source/tests/metacall_node_default_export_test/CMakeLists.txt index 56d39f320..c00958933 100644 --- a/source/tests/metacall_node_default_export_test/CMakeLists.txt +++ b/source/tests/metacall_node_default_export_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_event_loop_signal_test/CMakeLists.txt b/source/tests/metacall_node_event_loop_signal_test/CMakeLists.txt index dbb6410c1..cb3e4701c 100644 --- a/source/tests/metacall_node_event_loop_signal_test/CMakeLists.txt +++ b/source/tests/metacall_node_event_loop_signal_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_event_loop_test/CMakeLists.txt b/source/tests/metacall_node_event_loop_test/CMakeLists.txt index 805dd2a9b..d1d83d441 100644 --- a/source/tests/metacall_node_event_loop_test/CMakeLists.txt +++ b/source/tests/metacall_node_event_loop_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_exception_test/CMakeLists.txt b/source/tests/metacall_node_exception_test/CMakeLists.txt index 707e52942..1129b3145 100644 --- a/source/tests/metacall_node_exception_test/CMakeLists.txt +++ b/source/tests/metacall_node_exception_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_extension_test/CMakeLists.txt b/source/tests/metacall_node_extension_test/CMakeLists.txt index 1aac1018e..f56da937a 100644 --- a/source/tests/metacall_node_extension_test/CMakeLists.txt +++ b/source/tests/metacall_node_extension_test/CMakeLists.txt @@ -110,6 +110,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_fail_env_var_test/CMakeLists.txt b/source/tests/metacall_node_fail_env_var_test/CMakeLists.txt index e8310a78c..ecd42051e 100644 --- a/source/tests/metacall_node_fail_env_var_test/CMakeLists.txt +++ b/source/tests/metacall_node_fail_env_var_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_fail_load_leak_test/CMakeLists.txt b/source/tests/metacall_node_fail_load_leak_test/CMakeLists.txt index aaed9e522..3b1cc5bc5 100644 --- a/source/tests/metacall_node_fail_load_leak_test/CMakeLists.txt +++ b/source/tests/metacall_node_fail_load_leak_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_fail_test/CMakeLists.txt b/source/tests/metacall_node_fail_test/CMakeLists.txt index 62fb239d4..2f46c9261 100644 --- a/source/tests/metacall_node_fail_test/CMakeLists.txt +++ b/source/tests/metacall_node_fail_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_inline_test/CMakeLists.txt b/source/tests/metacall_node_inline_test/CMakeLists.txt index af8f0c8b5..8f7c771f2 100644 --- a/source/tests/metacall_node_inline_test/CMakeLists.txt +++ b/source/tests/metacall_node_inline_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_multithread_deadlock_test/CMakeLists.txt b/source/tests/metacall_node_multithread_deadlock_test/CMakeLists.txt index 6f3f91f47..e09b97826 100644 --- a/source/tests/metacall_node_multithread_deadlock_test/CMakeLists.txt +++ b/source/tests/metacall_node_multithread_deadlock_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_native_code_test/CMakeLists.txt b/source/tests/metacall_node_native_code_test/CMakeLists.txt index 31b61509e..2f485938e 100644 --- a/source/tests/metacall_node_native_code_test/CMakeLists.txt +++ b/source/tests/metacall_node_native_code_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_port_await_test/CMakeLists.txt b/source/tests/metacall_node_port_await_test/CMakeLists.txt index c72587ba4..819a878a0 100644 --- a/source/tests/metacall_node_port_await_test/CMakeLists.txt +++ b/source/tests/metacall_node_port_await_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_port_c_lib_test/CMakeLists.txt b/source/tests/metacall_node_port_c_lib_test/CMakeLists.txt index 3c13cf6be..ab55d51e7 100644 --- a/source/tests/metacall_node_port_c_lib_test/CMakeLists.txt +++ b/source/tests/metacall_node_port_c_lib_test/CMakeLists.txt @@ -124,6 +124,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_port_rs_test/CMakeLists.txt b/source/tests/metacall_node_port_rs_test/CMakeLists.txt index 1f4f82043..57422785b 100644 --- a/source/tests/metacall_node_port_rs_test/CMakeLists.txt +++ b/source/tests/metacall_node_port_rs_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_port_test/CMakeLists.txt b/source/tests/metacall_node_port_test/CMakeLists.txt index 86dadd93d..97aa855b3 100644 --- a/source/tests/metacall_node_port_test/CMakeLists.txt +++ b/source/tests/metacall_node_port_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_python_async_after_destroy_test/CMakeLists.txt b/source/tests/metacall_node_python_async_after_destroy_test/CMakeLists.txt index 6388179f7..6c88f28d6 100644 --- a/source/tests/metacall_node_python_async_after_destroy_test/CMakeLists.txt +++ b/source/tests/metacall_node_python_async_after_destroy_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_python_await_extended_test/CMakeLists.txt b/source/tests/metacall_node_python_await_extended_test/CMakeLists.txt index e7576cb18..a82165e89 100644 --- a/source/tests/metacall_node_python_await_extended_test/CMakeLists.txt +++ b/source/tests/metacall_node_python_await_extended_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_python_await_test/CMakeLists.txt b/source/tests/metacall_node_python_await_test/CMakeLists.txt index 2edadbea7..3553dbc2c 100644 --- a/source/tests/metacall_node_python_await_test/CMakeLists.txt +++ b/source/tests/metacall_node_python_await_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_python_deadlock_test/CMakeLists.txt b/source/tests/metacall_node_python_deadlock_test/CMakeLists.txt index 4e1fb4b71..55bcbfed3 100644 --- a/source/tests/metacall_node_python_deadlock_test/CMakeLists.txt +++ b/source/tests/metacall_node_python_deadlock_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_python_exception_test/CMakeLists.txt b/source/tests/metacall_node_python_exception_test/CMakeLists.txt index f759a0b30..0d4b36869 100644 --- a/source/tests/metacall_node_python_exception_test/CMakeLists.txt +++ b/source/tests/metacall_node_python_exception_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_python_port_mock_test/CMakeLists.txt b/source/tests/metacall_node_python_port_mock_test/CMakeLists.txt index 105e401fc..cbe593374 100644 --- a/source/tests/metacall_node_python_port_mock_test/CMakeLists.txt +++ b/source/tests/metacall_node_python_port_mock_test/CMakeLists.txt @@ -112,6 +112,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_python_port_ruby_test/CMakeLists.txt b/source/tests/metacall_node_python_port_ruby_test/CMakeLists.txt index 06e1e46bb..6dfbd6c33 100644 --- a/source/tests/metacall_node_python_port_ruby_test/CMakeLists.txt +++ b/source/tests/metacall_node_python_port_ruby_test/CMakeLists.txt @@ -112,6 +112,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_python_ruby_test/CMakeLists.txt b/source/tests/metacall_node_python_ruby_test/CMakeLists.txt index a9756c091..b5e291433 100644 --- a/source/tests/metacall_node_python_ruby_test/CMakeLists.txt +++ b/source/tests/metacall_node_python_ruby_test/CMakeLists.txt @@ -118,6 +118,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_reentrant_test/CMakeLists.txt b/source/tests/metacall_node_reentrant_test/CMakeLists.txt index a4ec68f52..6dfff474f 100644 --- a/source/tests/metacall_node_reentrant_test/CMakeLists.txt +++ b/source/tests/metacall_node_reentrant_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_signal_handler_test/CMakeLists.txt b/source/tests/metacall_node_signal_handler_test/CMakeLists.txt index 16e7cbd5e..473ad45e5 100644 --- a/source/tests/metacall_node_signal_handler_test/CMakeLists.txt +++ b/source/tests/metacall_node_signal_handler_test/CMakeLists.txt @@ -115,6 +115,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_test/CMakeLists.txt b/source/tests/metacall_node_test/CMakeLists.txt index 238ccbd4c..7c08d7c10 100644 --- a/source/tests/metacall_node_test/CMakeLists.txt +++ b/source/tests/metacall_node_test/CMakeLists.txt @@ -108,6 +108,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_node_typescript_test/CMakeLists.txt b/source/tests/metacall_node_typescript_test/CMakeLists.txt index f0858d246..a7959a04b 100644 --- a/source/tests/metacall_node_typescript_test/CMakeLists.txt +++ b/source/tests/metacall_node_typescript_test/CMakeLists.txt @@ -107,6 +107,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_plugin_extension_destroy_order_test/CMakeLists.txt b/source/tests/metacall_plugin_extension_destroy_order_test/CMakeLists.txt index f11064599..0bf7f3989 100644 --- a/source/tests/metacall_plugin_extension_destroy_order_test/CMakeLists.txt +++ b/source/tests/metacall_plugin_extension_destroy_order_test/CMakeLists.txt @@ -118,6 +118,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_plugin_extension_invalid_path_test/CMakeLists.txt b/source/tests/metacall_plugin_extension_invalid_path_test/CMakeLists.txt index fc0d79660..6e5da526f 100644 --- a/source/tests/metacall_plugin_extension_invalid_path_test/CMakeLists.txt +++ b/source/tests/metacall_plugin_extension_invalid_path_test/CMakeLists.txt @@ -111,6 +111,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_plugin_extension_local_test/CMakeLists.txt b/source/tests/metacall_plugin_extension_local_test/CMakeLists.txt index 20f25e9fd..174628c0e 100644 --- a/source/tests/metacall_plugin_extension_local_test/CMakeLists.txt +++ b/source/tests/metacall_plugin_extension_local_test/CMakeLists.txt @@ -108,6 +108,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_plugin_extension_test/CMakeLists.txt b/source/tests/metacall_plugin_extension_test/CMakeLists.txt index a6eead001..ed506009f 100644 --- a/source/tests/metacall_plugin_extension_test/CMakeLists.txt +++ b/source/tests/metacall_plugin_extension_test/CMakeLists.txt @@ -108,6 +108,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_async_test/CMakeLists.txt b/source/tests/metacall_python_async_test/CMakeLists.txt index 3acc0f211..c329c7a31 100644 --- a/source/tests/metacall_python_async_test/CMakeLists.txt +++ b/source/tests/metacall_python_async_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_await_test/CMakeLists.txt b/source/tests/metacall_python_await_test/CMakeLists.txt index 767eda765..9c3403391 100644 --- a/source/tests/metacall_python_await_test/CMakeLists.txt +++ b/source/tests/metacall_python_await_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_builtins_test/CMakeLists.txt b/source/tests/metacall_python_builtins_test/CMakeLists.txt index d9ca104c3..698df7f4b 100644 --- a/source/tests/metacall_python_builtins_test/CMakeLists.txt +++ b/source/tests/metacall_python_builtins_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_callback_test/CMakeLists.txt b/source/tests/metacall_python_callback_test/CMakeLists.txt index 4f7a4e1b3..e576930fb 100644 --- a/source/tests/metacall_python_callback_test/CMakeLists.txt +++ b/source/tests/metacall_python_callback_test/CMakeLists.txt @@ -108,6 +108,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_dict_test/CMakeLists.txt b/source/tests/metacall_python_dict_test/CMakeLists.txt index 8cc1916d7..835a24fed 100644 --- a/source/tests/metacall_python_dict_test/CMakeLists.txt +++ b/source/tests/metacall_python_dict_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_exception_test/CMakeLists.txt b/source/tests/metacall_python_exception_test/CMakeLists.txt index 31109d355..e06790523 100644 --- a/source/tests/metacall_python_exception_test/CMakeLists.txt +++ b/source/tests/metacall_python_exception_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_fail_test/CMakeLists.txt b/source/tests/metacall_python_fail_test/CMakeLists.txt index fdf0097ed..d16a571d2 100644 --- a/source/tests/metacall_python_fail_test/CMakeLists.txt +++ b/source/tests/metacall_python_fail_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_gc_test/CMakeLists.txt b/source/tests/metacall_python_gc_test/CMakeLists.txt index dea0f4ae2..b72602434 100644 --- a/source/tests/metacall_python_gc_test/CMakeLists.txt +++ b/source/tests/metacall_python_gc_test/CMakeLists.txt @@ -114,6 +114,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_loader_port_test/CMakeLists.txt b/source/tests/metacall_python_loader_port_test/CMakeLists.txt index 82bfb7529..eed75ba06 100644 --- a/source/tests/metacall_python_loader_port_test/CMakeLists.txt +++ b/source/tests/metacall_python_loader_port_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_model_test/CMakeLists.txt b/source/tests/metacall_python_model_test/CMakeLists.txt index 59494beac..01475c8c8 100644 --- a/source/tests/metacall_python_model_test/CMakeLists.txt +++ b/source/tests/metacall_python_model_test/CMakeLists.txt @@ -118,6 +118,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_node_await_test/CMakeLists.txt b/source/tests/metacall_python_node_await_test/CMakeLists.txt index 9995c37e0..e2d89c8ff 100644 --- a/source/tests/metacall_python_node_await_test/CMakeLists.txt +++ b/source/tests/metacall_python_node_await_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_object_class_test/CMakeLists.txt b/source/tests/metacall_python_object_class_test/CMakeLists.txt index 475a515ca..f81c535ee 100644 --- a/source/tests/metacall_python_object_class_test/CMakeLists.txt +++ b/source/tests/metacall_python_object_class_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_open_test/CMakeLists.txt b/source/tests/metacall_python_open_test/CMakeLists.txt index ce067050d..32959b363 100644 --- a/source/tests/metacall_python_open_test/CMakeLists.txt +++ b/source/tests/metacall_python_open_test/CMakeLists.txt @@ -127,6 +127,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_pointer_test/CMakeLists.txt b/source/tests/metacall_python_pointer_test/CMakeLists.txt index 4beab7b92..fe6f4ee61 100644 --- a/source/tests/metacall_python_pointer_test/CMakeLists.txt +++ b/source/tests/metacall_python_pointer_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_port_callback_test/CMakeLists.txt b/source/tests/metacall_python_port_callback_test/CMakeLists.txt index 95ddf1ad7..bbf27070a 100644 --- a/source/tests/metacall_python_port_callback_test/CMakeLists.txt +++ b/source/tests/metacall_python_port_callback_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_port_https_test/CMakeLists.txt b/source/tests/metacall_python_port_https_test/CMakeLists.txt index fa4127119..1f1335666 100644 --- a/source/tests/metacall_python_port_https_test/CMakeLists.txt +++ b/source/tests/metacall_python_port_https_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_port_import_test/CMakeLists.txt b/source/tests/metacall_python_port_import_test/CMakeLists.txt index 8d1d94f1c..051f05953 100644 --- a/source/tests/metacall_python_port_import_test/CMakeLists.txt +++ b/source/tests/metacall_python_port_import_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_port_pointer_test/CMakeLists.txt b/source/tests/metacall_python_port_pointer_test/CMakeLists.txt index 463a4e5b6..2c4133672 100644 --- a/source/tests/metacall_python_port_pointer_test/CMakeLists.txt +++ b/source/tests/metacall_python_port_pointer_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_port_test/CMakeLists.txt b/source/tests/metacall_python_port_test/CMakeLists.txt index 431379d4a..a4179b7f2 100644 --- a/source/tests/metacall_python_port_test/CMakeLists.txt +++ b/source/tests/metacall_python_port_test/CMakeLists.txt @@ -109,6 +109,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_reentrant_test/CMakeLists.txt b/source/tests/metacall_python_reentrant_test/CMakeLists.txt index 8f6a82e07..ab29592ef 100644 --- a/source/tests/metacall_python_reentrant_test/CMakeLists.txt +++ b/source/tests/metacall_python_reentrant_test/CMakeLists.txt @@ -110,6 +110,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_relative_path_test/CMakeLists.txt b/source/tests/metacall_python_relative_path_test/CMakeLists.txt index 2a5ad0ff8..22cae4f28 100644 --- a/source/tests/metacall_python_relative_path_test/CMakeLists.txt +++ b/source/tests/metacall_python_relative_path_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_test/CMakeLists.txt b/source/tests/metacall_python_test/CMakeLists.txt index 5fb1bec57..6f89617e3 100644 --- a/source/tests/metacall_python_test/CMakeLists.txt +++ b/source/tests/metacall_python_test/CMakeLists.txt @@ -107,6 +107,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_varargs_test/CMakeLists.txt b/source/tests/metacall_python_varargs_test/CMakeLists.txt index bae80e62d..f8636d21e 100644 --- a/source/tests/metacall_python_varargs_test/CMakeLists.txt +++ b/source/tests/metacall_python_varargs_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_without_env_vars_test/CMakeLists.txt b/source/tests/metacall_python_without_env_vars_test/CMakeLists.txt index 9e871cf89..3aca8756e 100644 --- a/source/tests/metacall_python_without_env_vars_test/CMakeLists.txt +++ b/source/tests/metacall_python_without_env_vars_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_python_without_functions_test/CMakeLists.txt b/source/tests/metacall_python_without_functions_test/CMakeLists.txt index a4f92966a..e2092380e 100644 --- a/source/tests/metacall_python_without_functions_test/CMakeLists.txt +++ b/source/tests/metacall_python_without_functions_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_reinitialize_test/CMakeLists.txt b/source/tests/metacall_reinitialize_test/CMakeLists.txt index 73beda512..c1adf593e 100644 --- a/source/tests/metacall_reinitialize_test/CMakeLists.txt +++ b/source/tests/metacall_reinitialize_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_reload_functions_test/CMakeLists.txt b/source/tests/metacall_reload_functions_test/CMakeLists.txt index 4398e0a2d..8d7682d2c 100644 --- a/source/tests/metacall_reload_functions_test/CMakeLists.txt +++ b/source/tests/metacall_reload_functions_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_return_monad_test/CMakeLists.txt b/source/tests/metacall_return_monad_test/CMakeLists.txt index 54f90028d..bcf5ad5c5 100644 --- a/source/tests/metacall_return_monad_test/CMakeLists.txt +++ b/source/tests/metacall_return_monad_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_rpc_test/CMakeLists.txt b/source/tests/metacall_rpc_test/CMakeLists.txt index 091cd4196..04925f1f1 100644 --- a/source/tests/metacall_rpc_test/CMakeLists.txt +++ b/source/tests/metacall_rpc_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_ruby_fail_empty_test/CMakeLists.txt b/source/tests/metacall_ruby_fail_empty_test/CMakeLists.txt index 4503b7df1..a480292e1 100644 --- a/source/tests/metacall_ruby_fail_empty_test/CMakeLists.txt +++ b/source/tests/metacall_ruby_fail_empty_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_ruby_fail_test/CMakeLists.txt b/source/tests/metacall_ruby_fail_test/CMakeLists.txt index 7211d396e..a34d4318c 100644 --- a/source/tests/metacall_ruby_fail_test/CMakeLists.txt +++ b/source/tests/metacall_ruby_fail_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_ruby_object_class_test/CMakeLists.txt b/source/tests/metacall_ruby_object_class_test/CMakeLists.txt index 50908e439..c4d2ad9b3 100644 --- a/source/tests/metacall_ruby_object_class_test/CMakeLists.txt +++ b/source/tests/metacall_ruby_object_class_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_ruby_parser_integration_test/CMakeLists.txt b/source/tests/metacall_ruby_parser_integration_test/CMakeLists.txt index 49a899ecf..ecd892ffb 100644 --- a/source/tests/metacall_ruby_parser_integration_test/CMakeLists.txt +++ b/source/tests/metacall_ruby_parser_integration_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_ruby_rails_integration_test/CMakeLists.txt b/source/tests/metacall_ruby_rails_integration_test/CMakeLists.txt index a2afac751..6559f627a 100644 --- a/source/tests/metacall_ruby_rails_integration_test/CMakeLists.txt +++ b/source/tests/metacall_ruby_rails_integration_test/CMakeLists.txt @@ -114,6 +114,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_ruby_test/CMakeLists.txt b/source/tests/metacall_ruby_test/CMakeLists.txt index 41d084aad..163c170a6 100644 --- a/source/tests/metacall_ruby_test/CMakeLists.txt +++ b/source/tests/metacall_ruby_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_rust_class_test/CMakeLists.txt b/source/tests/metacall_rust_class_test/CMakeLists.txt index dd529756f..28a7f1dac 100644 --- a/source/tests/metacall_rust_class_test/CMakeLists.txt +++ b/source/tests/metacall_rust_class_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_rust_load_from_mem_test/CMakeLists.txt b/source/tests/metacall_rust_load_from_mem_test/CMakeLists.txt index efcfafdcb..026115ba3 100644 --- a/source/tests/metacall_rust_load_from_mem_test/CMakeLists.txt +++ b/source/tests/metacall_rust_load_from_mem_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_rust_load_from_package_class_test/CMakeLists.txt b/source/tests/metacall_rust_load_from_package_class_test/CMakeLists.txt index 33b0b2909..0f98b613a 100644 --- a/source/tests/metacall_rust_load_from_package_class_test/CMakeLists.txt +++ b/source/tests/metacall_rust_load_from_package_class_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_rust_load_from_package_dep_test/CMakeLists.txt b/source/tests/metacall_rust_load_from_package_dep_test/CMakeLists.txt index 3f9d02f86..7ac9429cf 100644 --- a/source/tests/metacall_rust_load_from_package_dep_test/CMakeLists.txt +++ b/source/tests/metacall_rust_load_from_package_dep_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_rust_load_from_package_test/CMakeLists.txt b/source/tests/metacall_rust_load_from_package_test/CMakeLists.txt index e46e552dd..a5aaabbe6 100644 --- a/source/tests/metacall_rust_load_from_package_test/CMakeLists.txt +++ b/source/tests/metacall_rust_load_from_package_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_rust_test/CMakeLists.txt b/source/tests/metacall_rust_test/CMakeLists.txt index 9b0cfc8b3..31434b1be 100644 --- a/source/tests/metacall_rust_test/CMakeLists.txt +++ b/source/tests/metacall_rust_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_sandbox_plugin_test/CMakeLists.txt b/source/tests/metacall_sandbox_plugin_test/CMakeLists.txt index 67732e310..3a98235b1 100644 --- a/source/tests/metacall_sandbox_plugin_test/CMakeLists.txt +++ b/source/tests/metacall_sandbox_plugin_test/CMakeLists.txt @@ -123,6 +123,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_test/CMakeLists.txt b/source/tests/metacall_test/CMakeLists.txt index 4d75fe9b7..8751e1fe0 100644 --- a/source/tests/metacall_test/CMakeLists.txt +++ b/source/tests/metacall_test/CMakeLists.txt @@ -101,6 +101,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_typescript_call_map_test/CMakeLists.txt b/source/tests/metacall_typescript_call_map_test/CMakeLists.txt index 46f491804..9badf8752 100644 --- a/source/tests/metacall_typescript_call_map_test/CMakeLists.txt +++ b/source/tests/metacall_typescript_call_map_test/CMakeLists.txt @@ -107,6 +107,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_typescript_jsx_default_test/CMakeLists.txt b/source/tests/metacall_typescript_jsx_default_test/CMakeLists.txt index a41409a5b..32674e550 100644 --- a/source/tests/metacall_typescript_jsx_default_test/CMakeLists.txt +++ b/source/tests/metacall_typescript_jsx_default_test/CMakeLists.txt @@ -107,6 +107,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_typescript_node_test/CMakeLists.txt b/source/tests/metacall_typescript_node_test/CMakeLists.txt index 95954f202..e91cc1717 100644 --- a/source/tests/metacall_typescript_node_test/CMakeLists.txt +++ b/source/tests/metacall_typescript_node_test/CMakeLists.txt @@ -107,6 +107,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_typescript_require_test/CMakeLists.txt b/source/tests/metacall_typescript_require_test/CMakeLists.txt index 2e1e327bd..7ab3292c5 100644 --- a/source/tests/metacall_typescript_require_test/CMakeLists.txt +++ b/source/tests/metacall_typescript_require_test/CMakeLists.txt @@ -107,6 +107,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_typescript_test/CMakeLists.txt b/source/tests/metacall_typescript_test/CMakeLists.txt index 1ad8d87d3..6827e0804 100644 --- a/source/tests/metacall_typescript_test/CMakeLists.txt +++ b/source/tests/metacall_typescript_test/CMakeLists.txt @@ -107,6 +107,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_typescript_tsx_loop_fail_test/CMakeLists.txt b/source/tests/metacall_typescript_tsx_loop_fail_test/CMakeLists.txt index 59789903b..ca6465387 100644 --- a/source/tests/metacall_typescript_tsx_loop_fail_test/CMakeLists.txt +++ b/source/tests/metacall_typescript_tsx_loop_fail_test/CMakeLists.txt @@ -107,6 +107,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_typescript_tsx_test/CMakeLists.txt b/source/tests/metacall_typescript_tsx_test/CMakeLists.txt index b6732071c..53682fa43 100644 --- a/source/tests/metacall_typescript_tsx_test/CMakeLists.txt +++ b/source/tests/metacall_typescript_tsx_test/CMakeLists.txt @@ -107,6 +107,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_version_test/CMakeLists.txt b/source/tests/metacall_version_test/CMakeLists.txt index 8b3465541..4d93e4fec 100644 --- a/source/tests/metacall_version_test/CMakeLists.txt +++ b/source/tests/metacall_version_test/CMakeLists.txt @@ -101,6 +101,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_wasm_python_port_test/CMakeLists.txt b/source/tests/metacall_wasm_python_port_test/CMakeLists.txt index 09c1efe10..7233aa579 100644 --- a/source/tests/metacall_wasm_python_port_test/CMakeLists.txt +++ b/source/tests/metacall_wasm_python_port_test/CMakeLists.txt @@ -108,6 +108,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/metacall_wasm_test/CMakeLists.txt b/source/tests/metacall_wasm_test/CMakeLists.txt index 5aeb8ca0a..6ceca6692 100644 --- a/source/tests/metacall_wasm_test/CMakeLists.txt +++ b/source/tests/metacall_wasm_test/CMakeLists.txt @@ -106,6 +106,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/portability_path_test/CMakeLists.txt b/source/tests/portability_path_test/CMakeLists.txt index 37274fd9e..b95e32718 100644 --- a/source/tests/portability_path_test/CMakeLists.txt +++ b/source/tests/portability_path_test/CMakeLists.txt @@ -101,6 +101,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/preprocessor_test/CMakeLists.txt b/source/tests/preprocessor_test/CMakeLists.txt index 68470eab2..b96a63903 100644 --- a/source/tests/preprocessor_test/CMakeLists.txt +++ b/source/tests/preprocessor_test/CMakeLists.txt @@ -102,6 +102,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/rb_loader_parser_test/CMakeLists.txt b/source/tests/rb_loader_parser_test/CMakeLists.txt index 4e6162aa5..dac449a56 100644 --- a/source/tests/rb_loader_parser_test/CMakeLists.txt +++ b/source/tests/rb_loader_parser_test/CMakeLists.txt @@ -121,6 +121,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/reflect_function_test/CMakeLists.txt b/source/tests/reflect_function_test/CMakeLists.txt index 9beb3781a..fd1875cd3 100644 --- a/source/tests/reflect_function_test/CMakeLists.txt +++ b/source/tests/reflect_function_test/CMakeLists.txt @@ -115,6 +115,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/reflect_metadata_test/CMakeLists.txt b/source/tests/reflect_metadata_test/CMakeLists.txt index 37e635bc6..33497b513 100644 --- a/source/tests/reflect_metadata_test/CMakeLists.txt +++ b/source/tests/reflect_metadata_test/CMakeLists.txt @@ -115,6 +115,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/reflect_object_class_test/CMakeLists.txt b/source/tests/reflect_object_class_test/CMakeLists.txt index 77f837183..3a74590dc 100644 --- a/source/tests/reflect_object_class_test/CMakeLists.txt +++ b/source/tests/reflect_object_class_test/CMakeLists.txt @@ -115,6 +115,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/reflect_scope_test/CMakeLists.txt b/source/tests/reflect_scope_test/CMakeLists.txt index 0a4bd718c..83990f235 100644 --- a/source/tests/reflect_scope_test/CMakeLists.txt +++ b/source/tests/reflect_scope_test/CMakeLists.txt @@ -115,6 +115,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/reflect_value_cast_test/CMakeLists.txt b/source/tests/reflect_value_cast_test/CMakeLists.txt index 46e51f3ae..4b28d3a1a 100644 --- a/source/tests/reflect_value_cast_test/CMakeLists.txt +++ b/source/tests/reflect_value_cast_test/CMakeLists.txt @@ -121,6 +121,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # diff --git a/source/tests/serial_test/CMakeLists.txt b/source/tests/serial_test/CMakeLists.txt index 8b32df06a..12356bc11 100644 --- a/source/tests/serial_test/CMakeLists.txt +++ b/source/tests/serial_test/CMakeLists.txt @@ -120,6 +120,15 @@ target_compile_options(${target} ${DEFAULT_COMPILE_OPTIONS} ) +# +# Compile features +# + +target_compile_features(${target} + PRIVATE + cxx_std_17 +) + # # Linker options # From 75816ff528634ea039c43ac411cf7ad49bd7a1b7 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Tue, 15 Apr 2025 23:50:09 +0200 Subject: [PATCH 24/68] Trying to solve issues with docker hub ci. --- .github/workflows/docker-hub.yml | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 123c572b4..9b97c8c22 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -70,20 +70,12 @@ jobs: ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform_tag} done - - name: Push Platform Images - run: | - platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-') - for tag in "deps" "dev" "runtime" "cli"; do - echo "Pushing image for tag: ${tag} with platform: ${platform_tag}" - docker push ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform_tag} - done - - name: Run Tests run: | set -exuo pipefail platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-') cat < Dockerfile.test - FROM ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:cli-${platform_tag} + FROM metacall/${IMAGE_NAME}:cli RUN echo "console.log('abcde')" > script.js RUN metacallcli script.js EOF @@ -91,6 +83,16 @@ jobs: docker build --platform ${{ matrix.platform }} -f Dockerfile.test -t test-image . docker run --rm --platform=${{ matrix.platform }} test-image + - name: Push Platform Images + # Only run when master or when tagging a version + if: (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')) && github.event_name != 'pull_request' + run: | + platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-') + for tag in "deps" "dev" "runtime" "cli"; do + echo "Pushing image for tag: ${tag} with platform: ${platform_tag}" + docker push ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform_tag} + done + manifest: name: Create and Push Manifest Lists needs: build @@ -153,7 +155,8 @@ jobs: name: Cleanup Platform Specific Tags needs: [build, manifest] runs-on: ubuntu-latest - if: always() + # Only run when master or when tagging a version + if: (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')) && github.event_name != 'pull_request' steps: - name: Remove Platform-Specific Tags run: | From a75415a0fa23f10c053bf35db29b68f896c2d826 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 16 Apr 2025 00:08:08 +0200 Subject: [PATCH 25/68] Trying to improve docker hub. --- .github/workflows/docker-hub.yml | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 9b97c8c22..007080e8b 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -35,6 +35,12 @@ jobs: - linux/s390x - linux/arm/v7 - linux/arm/v6 + # TODO: + # - linux/amd64/v2 + # - linux/amd64/v3 + # - linux/mips64le + # - linux/mips64 + # - linux/loong64 steps: - name: Checkout Repository uses: actions/checkout@v4 @@ -63,9 +69,12 @@ jobs: - name: Tag Platform Images run: | + set -exuo pipefail platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-') echo "Platform Tag: ${platform_tag}" for tag in "deps" "dev" "runtime" "cli"; do + docker tag metacall/${IMAGE_NAME}:${tag} \ + metacall/${IMAGE_NAME}:${tag}-${platform_tag} docker tag metacall/${IMAGE_NAME}:${tag} \ ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform_tag} done @@ -75,13 +84,14 @@ jobs: set -exuo pipefail platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-') cat < Dockerfile.test - FROM metacall/${IMAGE_NAME}:cli - RUN echo "console.log('abcde')" > script.js + FROM metacall/${IMAGE_NAME}:${tag}-${platform_tag} + RUN echo "console.log('0123456789abcdef')" > script.js RUN metacallcli script.js EOF - docker build --platform ${{ matrix.platform }} -f Dockerfile.test -t test-image . - docker run --rm --platform=${{ matrix.platform }} test-image + docker build --platform ${{ matrix.platform }} -f Dockerfile.test -t test-image . &> output.txt + cat output.txt + grep "0123456789abcdef" output.txt - name: Push Platform Images # Only run when master or when tagging a version @@ -155,8 +165,7 @@ jobs: name: Cleanup Platform Specific Tags needs: [build, manifest] runs-on: ubuntu-latest - # Only run when master or when tagging a version - if: (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')) && github.event_name != 'pull_request' + if: always() steps: - name: Remove Platform-Specific Tags run: | From 5db8d09c5e992e4fc6f784f74501c7d68dedd40c Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 16 Apr 2025 00:37:16 +0200 Subject: [PATCH 26/68] Sovle issues from dynlink. --- source/tests/dynlink_test/CMakeLists.txt | 10 ++++- .../dynlink_test/source/dynlink_test.cpp | 38 +++++++++---------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/source/tests/dynlink_test/CMakeLists.txt b/source/tests/dynlink_test/CMakeLists.txt index 1010f0fb9..7e39df193 100644 --- a/source/tests/dynlink_test/CMakeLists.txt +++ b/source/tests/dynlink_test/CMakeLists.txt @@ -137,6 +137,14 @@ add_test(NAME ${target} COMMAND $ ) +# +# Define dependencies +# + +add_dependencies(${target} + ${META_PROJECT_NAME}::metacall +) + # # Define test labels # @@ -149,5 +157,5 @@ include(TestEnvironmentVariables) test_environment_variables(${target} "" - "DYNLINK_TEST_LIBRARY_PATH=@OUTPUT_DIRECTORY_DIR@" + "METACALL_TEST_LIBRARY_PATH=@OUTPUT_DIRECTORY_DIR@" ) diff --git a/source/tests/dynlink_test/source/dynlink_test.cpp b/source/tests/dynlink_test/source/dynlink_test.cpp index dea1c0c8e..a419c406c 100644 --- a/source/tests/dynlink_test/source/dynlink_test.cpp +++ b/source/tests/dynlink_test/source/dynlink_test.cpp @@ -26,9 +26,9 @@ #include -#define DYNLINK_TEST_LIBRARY_PATH "DYNLINK_TEST_LIBRARY_PATH" +#define METACALL_TEST_LIBRARY_PATH "METACALL_TEST_LIBRARY_PATH" -typedef void (*dynlink_print_func)(void); +typedef const char *(*metacall_print_func)(void); class dynlink_test : public testing::Test { @@ -61,12 +61,12 @@ TEST_F(dynlink_test, DefaultConstructor) log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object extension: %s", dynlink_extension()); #if (!defined(NDEBUG) || defined(DEBUG) || defined(_DEBUG) || defined(__DEBUG) || defined(__DEBUG__)) - const char library_name[] = "dynlinkd"; + const char library_name[] = "metacalld"; #else - const char library_name[] = "dynlink"; + const char library_name[] = "metacall"; #endif - char *path = environment_variable_path_create(DYNLINK_TEST_LIBRARY_PATH, NULL, 0, NULL); + char *path = environment_variable_path_create(METACALL_TEST_LIBRARY_PATH, NULL, 0, NULL); ASSERT_NE((char *)path, (char *)NULL); @@ -82,24 +82,24 @@ TEST_F(dynlink_test, DefaultConstructor) if (handle != NULL) { - dynlink_symbol_addr dynlink_print_info_addr; + dynlink_symbol_addr metacall_print_info_addr; - EXPECT_EQ((int)0, dynlink_symbol(handle, "dynlink_print_info", &dynlink_print_info_addr)); + EXPECT_EQ((int)0, dynlink_symbol(handle, "metacall_print_info", &metacall_print_info_addr)); - if (dynlink_print_info_addr != NULL) + if (metacall_print_info_addr != NULL) { - dynlink_print_func print = dynlink_print_info_addr; + metacall_print_func print = (metacall_print_func)metacall_print_info_addr; log_write("metacall", LOG_LEVEL_DEBUG, "Print function: %p", (void *)print); - log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)dynlink_print_info_addr); + log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)metacall_print_info_addr); - if (dynlink_print_info_addr != NULL) + if (metacall_print_info_addr != NULL) { log_write("metacall", LOG_LEVEL_DEBUG, "Pointer is valid"); } - print(); + log_write("metacall", LOG_LEVEL_DEBUG, "Print: %s", print()); } dynlink_unload(handle); @@ -149,24 +149,24 @@ TEST_F(dynlink_test, DefaultConstructor) if (handle != NULL) { - dynlink_symbol_addr dynlink_print_info_addr; + dynlink_symbol_addr metacall_print_info_addr; - EXPECT_EQ((int)0, dynlink_symbol(handle, "dynlink_print_info", &dynlink_print_info_addr)); + EXPECT_EQ((int)0, dynlink_symbol(handle, "metacall_print_info", &metacall_print_info_addr)); - if (dynlink_print_info_addr != NULL) + if (metacall_print_info_addr != NULL) { - dynlink_print_func print = dynlink_print_info_addr; + metacall_print_func print = (metacall_print_func)metacall_print_info_addr; log_write("metacall", LOG_LEVEL_DEBUG, "Print function: %p", (void *)print); - log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)dynlink_print_info_addr); + log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)metacall_print_info_addr); - if (dynlink_print_info_addr != NULL) + if (metacall_print_info_addr != NULL) { log_write("metacall", LOG_LEVEL_DEBUG, "Pointer is valid"); } - print(); + log_write("metacall", LOG_LEVEL_DEBUG, "Print: %s", print()); } dynlink_unload(handle); From dd45fb384246be4ecda8c7bba5e3a3a5df9f480c Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 16 Apr 2025 00:37:28 +0200 Subject: [PATCH 27/68] Solve issues from docker hub. --- .github/workflows/docker-hub.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 007080e8b..94b732adb 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -84,7 +84,7 @@ jobs: set -exuo pipefail platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-') cat < Dockerfile.test - FROM metacall/${IMAGE_NAME}:${tag}-${platform_tag} + FROM metacall/${IMAGE_NAME}:cli-${platform_tag} RUN echo "console.log('0123456789abcdef')" > script.js RUN metacallcli script.js EOF From e032b9c1b16a6745264906506f24e966cba1ca3f Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 16 Apr 2025 17:03:59 +0200 Subject: [PATCH 28/68] Solve issues in tests. --- source/tests/dynlink_test/CMakeLists.txt | 10 +----- .../dynlink_test/source/dynlink_test.cpp | 34 +++++++++---------- .../CMakeLists.txt | 2 +- .../CMakeLists.txt | 2 +- .../CMakeLists.txt | 2 +- .../CMakeLists.txt | 2 +- .../metacall_typescript_test/CMakeLists.txt | 2 +- 7 files changed, 23 insertions(+), 31 deletions(-) diff --git a/source/tests/dynlink_test/CMakeLists.txt b/source/tests/dynlink_test/CMakeLists.txt index 7e39df193..1010f0fb9 100644 --- a/source/tests/dynlink_test/CMakeLists.txt +++ b/source/tests/dynlink_test/CMakeLists.txt @@ -137,14 +137,6 @@ add_test(NAME ${target} COMMAND $ ) -# -# Define dependencies -# - -add_dependencies(${target} - ${META_PROJECT_NAME}::metacall -) - # # Define test labels # @@ -157,5 +149,5 @@ include(TestEnvironmentVariables) test_environment_variables(${target} "" - "METACALL_TEST_LIBRARY_PATH=@OUTPUT_DIRECTORY_DIR@" + "DYNLINK_TEST_LIBRARY_PATH=@OUTPUT_DIRECTORY_DIR@" ) diff --git a/source/tests/dynlink_test/source/dynlink_test.cpp b/source/tests/dynlink_test/source/dynlink_test.cpp index a419c406c..e506c69fa 100644 --- a/source/tests/dynlink_test/source/dynlink_test.cpp +++ b/source/tests/dynlink_test/source/dynlink_test.cpp @@ -26,9 +26,9 @@ #include -#define METACALL_TEST_LIBRARY_PATH "METACALL_TEST_LIBRARY_PATH" +#define DYNLINK_TEST_LIBRARY_PATH "DYNLINK_TEST_LIBRARY_PATH" -typedef const char *(*metacall_print_func)(void); +typedef const char *(*dynlink_print_func)(void); class dynlink_test : public testing::Test { @@ -61,12 +61,12 @@ TEST_F(dynlink_test, DefaultConstructor) log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object extension: %s", dynlink_extension()); #if (!defined(NDEBUG) || defined(DEBUG) || defined(_DEBUG) || defined(__DEBUG) || defined(__DEBUG__)) - const char library_name[] = "metacalld"; + const char library_name[] = "dynlinkd"; #else - const char library_name[] = "metacall"; + const char library_name[] = "dynlink"; #endif - char *path = environment_variable_path_create(METACALL_TEST_LIBRARY_PATH, NULL, 0, NULL); + char *path = environment_variable_path_create(DYNLINK_TEST_LIBRARY_PATH, NULL, 0, NULL); ASSERT_NE((char *)path, (char *)NULL); @@ -82,19 +82,19 @@ TEST_F(dynlink_test, DefaultConstructor) if (handle != NULL) { - dynlink_symbol_addr metacall_print_info_addr; + dynlink_symbol_addr dynlink_print_info_addr; - EXPECT_EQ((int)0, dynlink_symbol(handle, "metacall_print_info", &metacall_print_info_addr)); + EXPECT_EQ((int)0, dynlink_symbol(handle, "dynlink_print_info", &dynlink_print_info_addr)); - if (metacall_print_info_addr != NULL) + if (dynlink_print_info_addr != NULL) { - metacall_print_func print = (metacall_print_func)metacall_print_info_addr; + dynlink_print_func print = (dynlink_print_func)dynlink_print_info_addr; log_write("metacall", LOG_LEVEL_DEBUG, "Print function: %p", (void *)print); - log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)metacall_print_info_addr); + log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)dynlink_print_info_addr); - if (metacall_print_info_addr != NULL) + if (dynlink_print_info_addr != NULL) { log_write("metacall", LOG_LEVEL_DEBUG, "Pointer is valid"); } @@ -149,19 +149,19 @@ TEST_F(dynlink_test, DefaultConstructor) if (handle != NULL) { - dynlink_symbol_addr metacall_print_info_addr; + dynlink_symbol_addr dynlink_print_info_addr; - EXPECT_EQ((int)0, dynlink_symbol(handle, "metacall_print_info", &metacall_print_info_addr)); + EXPECT_EQ((int)0, dynlink_symbol(handle, "dynlink_print_info", &dynlink_print_info_addr)); - if (metacall_print_info_addr != NULL) + if (dynlink_print_info_addr != NULL) { - metacall_print_func print = (metacall_print_func)metacall_print_info_addr; + dynlink_print_func print = (dynlink_print_func)dynlink_print_info_addr; log_write("metacall", LOG_LEVEL_DEBUG, "Print function: %p", (void *)print); - log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)metacall_print_info_addr); + log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)dynlink_print_info_addr); - if (metacall_print_info_addr != NULL) + if (dynlink_print_info_addr != NULL) { log_write("metacall", LOG_LEVEL_DEBUG, "Pointer is valid"); } diff --git a/source/tests/metacall_node_typescript_test/CMakeLists.txt b/source/tests/metacall_node_typescript_test/CMakeLists.txt index a7959a04b..499baca66 100644 --- a/source/tests/metacall_node_typescript_test/CMakeLists.txt +++ b/source/tests/metacall_node_typescript_test/CMakeLists.txt @@ -131,6 +131,7 @@ target_link_options(${target} add_test(NAME ${target} COMMAND $ + WORKING_DIRECTORY ${LOADER_SCRIPT_PATH}/typedfunc ) # @@ -148,7 +149,6 @@ add_dependencies(${target} set_property(TEST ${target} PROPERTY LABELS ${target} - WORKING_DIRECTORY ${LOADER_SCRIPT_PATH}/typedfunc ) include(TestEnvironmentVariables) diff --git a/source/tests/metacall_typescript_call_map_test/CMakeLists.txt b/source/tests/metacall_typescript_call_map_test/CMakeLists.txt index 9badf8752..4005debcf 100644 --- a/source/tests/metacall_typescript_call_map_test/CMakeLists.txt +++ b/source/tests/metacall_typescript_call_map_test/CMakeLists.txt @@ -131,6 +131,7 @@ target_link_options(${target} add_test(NAME ${target} COMMAND $ + WORKING_DIRECTORY ${LOADER_SCRIPT_PATH}/typedfunc ) # @@ -148,7 +149,6 @@ add_dependencies(${target} set_property(TEST ${target} PROPERTY LABELS ${target} - WORKING_DIRECTORY ${LOADER_SCRIPT_PATH}/typedfunc ) include(TestEnvironmentVariables) diff --git a/source/tests/metacall_typescript_node_test/CMakeLists.txt b/source/tests/metacall_typescript_node_test/CMakeLists.txt index e91cc1717..9dbd14de9 100644 --- a/source/tests/metacall_typescript_node_test/CMakeLists.txt +++ b/source/tests/metacall_typescript_node_test/CMakeLists.txt @@ -131,6 +131,7 @@ target_link_options(${target} add_test(NAME ${target} COMMAND $ + WORKING_DIRECTORY ${LOADER_SCRIPT_PATH}/typedfunc ) # @@ -148,7 +149,6 @@ add_dependencies(${target} set_property(TEST ${target} PROPERTY LABELS ${target} - WORKING_DIRECTORY ${LOADER_SCRIPT_PATH}/typedfunc ) include(TestEnvironmentVariables) diff --git a/source/tests/metacall_typescript_require_test/CMakeLists.txt b/source/tests/metacall_typescript_require_test/CMakeLists.txt index 7ab3292c5..d4d51e466 100644 --- a/source/tests/metacall_typescript_require_test/CMakeLists.txt +++ b/source/tests/metacall_typescript_require_test/CMakeLists.txt @@ -131,6 +131,7 @@ target_link_options(${target} add_test(NAME ${target} COMMAND $ + WORKING_DIRECTORY ${LOADER_SCRIPT_PATH}/typedfunc ) # @@ -148,7 +149,6 @@ add_dependencies(${target} set_property(TEST ${target} PROPERTY LABELS ${target} - WORKING_DIRECTORY ${LOADER_SCRIPT_PATH}/typedfunc ) include(TestEnvironmentVariables) diff --git a/source/tests/metacall_typescript_test/CMakeLists.txt b/source/tests/metacall_typescript_test/CMakeLists.txt index 6827e0804..9af3378eb 100644 --- a/source/tests/metacall_typescript_test/CMakeLists.txt +++ b/source/tests/metacall_typescript_test/CMakeLists.txt @@ -131,6 +131,7 @@ target_link_options(${target} add_test(NAME ${target} COMMAND $ + WORKING_DIRECTORY ${LOADER_SCRIPT_PATH}/typedfunc ) # @@ -148,7 +149,6 @@ add_dependencies(${target} set_property(TEST ${target} PROPERTY LABELS ${target} - WORKING_DIRECTORY ${LOADER_SCRIPT_PATH}/typedfunc ) include(TestEnvironmentVariables) From 4ec09506aa874a848f8f45e18e4dbe7649164c6e Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 16 Apr 2025 17:04:24 +0200 Subject: [PATCH 29/68] Add base for detour improvements. --- source/detour/source/detour.c | 49 ++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/source/detour/source/detour.c b/source/detour/source/detour.c index d894a8d5b..c1e4646e0 100644 --- a/source/detour/source/detour.c +++ b/source/detour/source/detour.c @@ -39,6 +39,8 @@ struct detour_handle_type * and store all the symbols in the hash table then iterate and replace at the * same time, so the functions are accessed in O(1) instead of O(n) */ + set symbol_map; + set replaced_symbols; detour_impl_handle impl; }; @@ -69,6 +71,41 @@ const char *detour_name(detour d) return plugin_name(d); } +static detour_handle detour_handle_allocate(void) +{ + detour_handle handle = malloc(sizeof(struct detour_handle_type)); + + if (handle == NULL) + { + goto alloc_handle_error; + } + + handle->symbol_map = set_create(&hash_callback_ptr, &comparable_callback_ptr); + + if (handle->symbol_map == NULL) + { + goto alloc_symbol_map_error; + } + + handle->replaced_symbols = set_create(&hash_callback_ptr, &comparable_callback_ptr); + + if (handle->replaced_symbols == NULL) + { + goto alloc_replaced_symbols_error; + } + + handle->impl = NULL; + + return handle; + +alloc_replaced_symbols_error: + set_destroy(handle->symbol_map); +alloc_symbol_map_error: + free(handle); +alloc_handle_error: + return NULL; +} + detour_handle detour_load_file(detour d, const char *path) { detour_handle handle; @@ -80,7 +117,7 @@ detour_handle detour_load_file(detour d, const char *path) return NULL; } - handle = malloc(sizeof(struct detour_handle_type)); + handle = detour_handle_allocate(); if (handle == NULL) { @@ -112,7 +149,7 @@ detour_handle detour_load_handle(detour d, dynlink library) return NULL; } - handle = malloc(sizeof(struct detour_handle_type)); + handle = detour_handle_allocate(); if (handle == NULL) { @@ -144,7 +181,7 @@ detour_handle detour_load_address(detour d, void (*address)(void)) return NULL; } - handle = malloc(sizeof(struct detour_handle_type)); + handle = detour_handle_allocate(); if (handle == NULL) { @@ -197,7 +234,13 @@ void detour_unload(detour d, detour_handle handle) return; } + /* TODO: Should we restore all the replaced symbols? */ + detour_iface(d)->destroy(handle->impl); + + set_destroy(handle->symbol_map); + + set_destroy(handle->replaced_symbols); } int detour_clear(detour d) From e1690300fc212bbfa7e0f71e435a9795445d0fd4 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 16 Apr 2025 17:04:40 +0200 Subject: [PATCH 30/68] Minor bug in metacall link. --- source/metacall/source/metacall_link.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/metacall/source/metacall_link.c b/source/metacall/source/metacall_link.c index df4b05cce..f9be11696 100644 --- a/source/metacall/source/metacall_link.c +++ b/source/metacall/source/metacall_link.c @@ -213,6 +213,11 @@ int metacall_link_unregister(const char *tag, const char *library, const char *s return 1; } + if (set_get(metacall_link_table, (set_key)symbol) == NULL) + { + return 0; + } + /* TODO: Restore the hook? We need support for this on the detour API */ (void)tag; (void)library; From 97cfe6ff98603e42aa63b646f33714e0f7d50b13 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 16 Apr 2025 17:04:56 +0200 Subject: [PATCH 31/68] Trying to solve issues with dockerhub. --- .github/workflows/docker-hub.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 94b732adb..93a95125b 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -89,8 +89,8 @@ jobs: RUN metacallcli script.js EOF - docker build --platform ${{ matrix.platform }} -f Dockerfile.test -t test-image . &> output.txt - cat output.txt + export DOCKER_BUILDKIT=1 + docker build --progress=plain --platform ${{ matrix.platform }} -f Dockerfile.test -t test-image . | tee output.txt grep "0123456789abcdef" output.txt - name: Push Platform Images From 25caa343d4ee3d1b4a0f26e282e09c8792d0afd3 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 23 Apr 2025 22:43:10 +0200 Subject: [PATCH 32/68] Trying path in docker. --- tools/cli/Dockerfile | 3 ++- tools/dev/Dockerfile | 3 ++- tools/metacall-build.sh | 6 +++--- tools/metacall-configure.sh | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/tools/cli/Dockerfile b/tools/cli/Dockerfile index fed409c5e..5b387470d 100644 --- a/tools/cli/Dockerfile +++ b/tools/cli/Dockerfile @@ -40,7 +40,8 @@ ENV LOADER_LIBRARY_PATH=/usr/local/lib \ PORT_LIBRARY_PATH=/usr/local/lib \ DEBIAN_FRONTEND=noninteractive \ NODE_PATH=/usr/local/lib/node_modules \ - DOTNET_CLI_TELEMETRY_OPTOUT=true + DOTNET_CLI_TELEMETRY_OPTOUT=true \ + PATH="/usr/local/bin:$PATH" # Define working directory WORKDIR $LOADER_SCRIPT_PATH diff --git a/tools/dev/Dockerfile b/tools/dev/Dockerfile index 9f5805944..8d239a0b8 100644 --- a/tools/dev/Dockerfile +++ b/tools/dev/Dockerfile @@ -40,7 +40,8 @@ ENV LOADER_LIBRARY_PATH=$METACALL_PATH/build \ PORT_LIBRARY_PATH=$METACALL_PATH/build \ DEBIAN_FRONTEND=noninteractive \ NODE_PATH=/usr/lib/node_modules \ - DOTNET_CLI_TELEMETRY_OPTOUT=true + DOTNET_CLI_TELEMETRY_OPTOUT=true \ + PATH="/usr/local/bin:$PATH" # Define working directory WORKDIR $METACALL_PATH diff --git a/tools/metacall-build.sh b/tools/metacall-build.sh index 74826e22f..1cfcc7f69 100755 --- a/tools/metacall-build.sh +++ b/tools/metacall-build.sh @@ -74,9 +74,9 @@ sub_build() { make -j$(getconf _NPROCESSORS_ONLN) # Tests (coverage needs to run the tests) - if [ $BUILD_TESTS = 1 ] || [ $BUILD_BENCHMARKS=1 ] || [ $BUILD_COVERAGE = 1 ]; then - ctest -j$(getconf _NPROCESSORS_ONLN) --timeout 5400 --output-on-failure --test-output-size-failed 3221000000 -C $BUILD_TYPE - fi + # if [ $BUILD_TESTS = 1 ] || [ $BUILD_BENCHMARKS=1 ] || [ $BUILD_COVERAGE = 1 ]; then + # ctest -j$(getconf _NPROCESSORS_ONLN) --timeout 5400 --output-on-failure --test-output-size-failed 3221000000 -C $BUILD_TYPE + # fi # Coverage if [ $BUILD_COVERAGE = 1 ]; then diff --git a/tools/metacall-configure.sh b/tools/metacall-configure.sh index 0360f472f..61a802757 100755 --- a/tools/metacall-configure.sh +++ b/tools/metacall-configure.sh @@ -529,7 +529,7 @@ sub_configure() { fi # Build type - BUILD_STRING="$BUILD_STRING -DCMAKE_BUILD_TYPE=$BUILD_TYPE" + BUILD_STRING="$BUILD_STRING -DOPTION_BUILD_ADDRESS_SANITIZER=On -DCMAKE_BUILD_TYPE=Debug" #$BUILD_TYPE" # Execute CMake cmake -Wno-dev -DOPTION_GIT_HOOKS=Off $BUILD_STRING .. From e316bbfe28b43d153565641927518922120eca15 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 23 Apr 2025 22:46:44 +0200 Subject: [PATCH 33/68] Revert "Trying path in docker." This reverts commit 25caa343d4ee3d1b4a0f26e282e09c8792d0afd3. --- tools/cli/Dockerfile | 3 +-- tools/dev/Dockerfile | 3 +-- tools/metacall-build.sh | 6 +++--- tools/metacall-configure.sh | 2 +- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/tools/cli/Dockerfile b/tools/cli/Dockerfile index 5b387470d..fed409c5e 100644 --- a/tools/cli/Dockerfile +++ b/tools/cli/Dockerfile @@ -40,8 +40,7 @@ ENV LOADER_LIBRARY_PATH=/usr/local/lib \ PORT_LIBRARY_PATH=/usr/local/lib \ DEBIAN_FRONTEND=noninteractive \ NODE_PATH=/usr/local/lib/node_modules \ - DOTNET_CLI_TELEMETRY_OPTOUT=true \ - PATH="/usr/local/bin:$PATH" + DOTNET_CLI_TELEMETRY_OPTOUT=true # Define working directory WORKDIR $LOADER_SCRIPT_PATH diff --git a/tools/dev/Dockerfile b/tools/dev/Dockerfile index 8d239a0b8..9f5805944 100644 --- a/tools/dev/Dockerfile +++ b/tools/dev/Dockerfile @@ -40,8 +40,7 @@ ENV LOADER_LIBRARY_PATH=$METACALL_PATH/build \ PORT_LIBRARY_PATH=$METACALL_PATH/build \ DEBIAN_FRONTEND=noninteractive \ NODE_PATH=/usr/lib/node_modules \ - DOTNET_CLI_TELEMETRY_OPTOUT=true \ - PATH="/usr/local/bin:$PATH" + DOTNET_CLI_TELEMETRY_OPTOUT=true # Define working directory WORKDIR $METACALL_PATH diff --git a/tools/metacall-build.sh b/tools/metacall-build.sh index 1cfcc7f69..74826e22f 100755 --- a/tools/metacall-build.sh +++ b/tools/metacall-build.sh @@ -74,9 +74,9 @@ sub_build() { make -j$(getconf _NPROCESSORS_ONLN) # Tests (coverage needs to run the tests) - # if [ $BUILD_TESTS = 1 ] || [ $BUILD_BENCHMARKS=1 ] || [ $BUILD_COVERAGE = 1 ]; then - # ctest -j$(getconf _NPROCESSORS_ONLN) --timeout 5400 --output-on-failure --test-output-size-failed 3221000000 -C $BUILD_TYPE - # fi + if [ $BUILD_TESTS = 1 ] || [ $BUILD_BENCHMARKS=1 ] || [ $BUILD_COVERAGE = 1 ]; then + ctest -j$(getconf _NPROCESSORS_ONLN) --timeout 5400 --output-on-failure --test-output-size-failed 3221000000 -C $BUILD_TYPE + fi # Coverage if [ $BUILD_COVERAGE = 1 ]; then diff --git a/tools/metacall-configure.sh b/tools/metacall-configure.sh index 61a802757..0360f472f 100755 --- a/tools/metacall-configure.sh +++ b/tools/metacall-configure.sh @@ -529,7 +529,7 @@ sub_configure() { fi # Build type - BUILD_STRING="$BUILD_STRING -DOPTION_BUILD_ADDRESS_SANITIZER=On -DCMAKE_BUILD_TYPE=Debug" #$BUILD_TYPE" + BUILD_STRING="$BUILD_STRING -DCMAKE_BUILD_TYPE=$BUILD_TYPE" # Execute CMake cmake -Wno-dev -DOPTION_GIT_HOOKS=Off $BUILD_STRING .. From 7ba08234fed06956e430087b09e1c83fdbe35735 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 23 Apr 2025 22:49:00 +0200 Subject: [PATCH 34/68] Docker path. --- tools/cli/Dockerfile | 3 ++- tools/dev/Dockerfile | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/cli/Dockerfile b/tools/cli/Dockerfile index fed409c5e..5b387470d 100644 --- a/tools/cli/Dockerfile +++ b/tools/cli/Dockerfile @@ -40,7 +40,8 @@ ENV LOADER_LIBRARY_PATH=/usr/local/lib \ PORT_LIBRARY_PATH=/usr/local/lib \ DEBIAN_FRONTEND=noninteractive \ NODE_PATH=/usr/local/lib/node_modules \ - DOTNET_CLI_TELEMETRY_OPTOUT=true + DOTNET_CLI_TELEMETRY_OPTOUT=true \ + PATH="/usr/local/bin:$PATH" # Define working directory WORKDIR $LOADER_SCRIPT_PATH diff --git a/tools/dev/Dockerfile b/tools/dev/Dockerfile index 9f5805944..8d239a0b8 100644 --- a/tools/dev/Dockerfile +++ b/tools/dev/Dockerfile @@ -40,7 +40,8 @@ ENV LOADER_LIBRARY_PATH=$METACALL_PATH/build \ PORT_LIBRARY_PATH=$METACALL_PATH/build \ DEBIAN_FRONTEND=noninteractive \ NODE_PATH=/usr/lib/node_modules \ - DOTNET_CLI_TELEMETRY_OPTOUT=true + DOTNET_CLI_TELEMETRY_OPTOUT=true \ + PATH="/usr/local/bin:$PATH" # Define working directory WORKDIR $METACALL_PATH From 9c2b3e3fade1d06339217240ebade0e77fc035f5 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 23 Apr 2025 23:22:27 +0200 Subject: [PATCH 35/68] Trying to solve issues with docker hub. --- .github/workflows/docker-hub.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 93a95125b..55c7b68b3 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -86,12 +86,12 @@ jobs: cat < Dockerfile.test FROM metacall/${IMAGE_NAME}:cli-${platform_tag} RUN echo "console.log('0123456789abcdef')" > script.js - RUN metacallcli script.js + RUN metacallcli script.js | tee output.txt + RUN grep 0123456789abcdef output.txt EOF export DOCKER_BUILDKIT=1 - docker build --progress=plain --platform ${{ matrix.platform }} -f Dockerfile.test -t test-image . | tee output.txt - grep "0123456789abcdef" output.txt + docker build --progress=plain --platform ${{ matrix.platform }} -f Dockerfile.test -t test-image . - name: Push Platform Images # Only run when master or when tagging a version From b9d0940400caab8e0137ff2ac4491ea5c980cf3d Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 00:04:53 +0200 Subject: [PATCH 36/68] Add deubg. --- .github/workflows/docker-hub.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 55c7b68b3..151fcf788 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -86,6 +86,7 @@ jobs: cat < Dockerfile.test FROM metacall/${IMAGE_NAME}:cli-${platform_tag} RUN echo "console.log('0123456789abcdef')" > script.js + RUN ls -la /usr/local/bin RUN metacallcli script.js | tee output.txt RUN grep 0123456789abcdef output.txt EOF From 0faf2e825ab75763efcf1f735fec6e4d8dc1d921 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 00:30:50 +0200 Subject: [PATCH 37/68] Use the binary on docker hub. --- .github/workflows/docker-hub.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 151fcf788..3c1842dbe 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -87,7 +87,7 @@ jobs: FROM metacall/${IMAGE_NAME}:cli-${platform_tag} RUN echo "console.log('0123456789abcdef')" > script.js RUN ls -la /usr/local/bin - RUN metacallcli script.js | tee output.txt + RUN /usr/local/bin/metacallcli script.js | tee output.txt RUN grep 0123456789abcdef output.txt EOF From 9a35d0f5f1c7941c362d02fdb83322855a5126ed Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 01:03:49 +0200 Subject: [PATCH 38/68] Testing things with dockerhub. --- .github/workflows/docker-hub.yml | 7 ++++++- tools/cli/Dockerfile | 3 +-- tools/dev/Dockerfile | 3 +-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 3c1842dbe..eab4e4d0d 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -86,13 +86,18 @@ jobs: cat < Dockerfile.test FROM metacall/${IMAGE_NAME}:cli-${platform_tag} RUN echo "console.log('0123456789abcdef')" > script.js + RUN pwd + RUN ls -la RUN ls -la /usr/local/bin + RUN whoami + RUN /usr/local/bin/metacallcli `pwd`/script.js + RUN /usr/local/bin/metacallcli script.js RUN /usr/local/bin/metacallcli script.js | tee output.txt RUN grep 0123456789abcdef output.txt EOF export DOCKER_BUILDKIT=1 - docker build --progress=plain --platform ${{ matrix.platform }} -f Dockerfile.test -t test-image . + docker build --progress=plain --platform=${{ matrix.platform }} -f Dockerfile.test -t test-image . - name: Push Platform Images # Only run when master or when tagging a version diff --git a/tools/cli/Dockerfile b/tools/cli/Dockerfile index 5b387470d..fed409c5e 100644 --- a/tools/cli/Dockerfile +++ b/tools/cli/Dockerfile @@ -40,8 +40,7 @@ ENV LOADER_LIBRARY_PATH=/usr/local/lib \ PORT_LIBRARY_PATH=/usr/local/lib \ DEBIAN_FRONTEND=noninteractive \ NODE_PATH=/usr/local/lib/node_modules \ - DOTNET_CLI_TELEMETRY_OPTOUT=true \ - PATH="/usr/local/bin:$PATH" + DOTNET_CLI_TELEMETRY_OPTOUT=true # Define working directory WORKDIR $LOADER_SCRIPT_PATH diff --git a/tools/dev/Dockerfile b/tools/dev/Dockerfile index 8d239a0b8..9f5805944 100644 --- a/tools/dev/Dockerfile +++ b/tools/dev/Dockerfile @@ -40,8 +40,7 @@ ENV LOADER_LIBRARY_PATH=$METACALL_PATH/build \ PORT_LIBRARY_PATH=$METACALL_PATH/build \ DEBIAN_FRONTEND=noninteractive \ NODE_PATH=/usr/lib/node_modules \ - DOTNET_CLI_TELEMETRY_OPTOUT=true \ - PATH="/usr/local/bin:$PATH" + DOTNET_CLI_TELEMETRY_OPTOUT=true # Define working directory WORKDIR $METACALL_PATH From 0785ea1ea84fcd593002f549d48fc076156400f5 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 01:31:54 +0200 Subject: [PATCH 39/68] More debug of dockerhub. --- .github/workflows/docker-hub.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index eab4e4d0d..c2d7451a8 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -83,15 +83,12 @@ jobs: run: | set -exuo pipefail platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-') + docker image inspect metacall/${IMAGE_NAME}:cli-${platform_tag} --format='{{.Os}}/{{.Architecture}}' cat < Dockerfile.test FROM metacall/${IMAGE_NAME}:cli-${platform_tag} RUN echo "console.log('0123456789abcdef')" > script.js - RUN pwd - RUN ls -la - RUN ls -la /usr/local/bin - RUN whoami - RUN /usr/local/bin/metacallcli `pwd`/script.js - RUN /usr/local/bin/metacallcli script.js + RUN file /usr/local/bin/metacallcli + RUN /usr/local/bin/metacallcli /usr/local/scripts/script.js RUN /usr/local/bin/metacallcli script.js | tee output.txt RUN grep 0123456789abcdef output.txt EOF From 64bd9080071ebd14ebf676291400fbf49ac3037c Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 01:52:24 +0200 Subject: [PATCH 40/68] Add file dependency for debug dockerhub. --- .github/workflows/docker-hub.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index c2d7451a8..cf4a81848 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -87,6 +87,7 @@ jobs: cat < Dockerfile.test FROM metacall/${IMAGE_NAME}:cli-${platform_tag} RUN echo "console.log('0123456789abcdef')" > script.js + RUN apt-get update && apt-get install file RUN file /usr/local/bin/metacallcli RUN /usr/local/bin/metacallcli /usr/local/scripts/script.js RUN /usr/local/bin/metacallcli script.js | tee output.txt From 44379ca690c5a1c67b2a8ca3c74f2e94e6874ed8 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 02:29:08 +0200 Subject: [PATCH 41/68] Trying to solve issues with atomic abi. --- source/reflect/source/reflect_class.c | 2 +- source/reflect/source/reflect_exception.c | 2 +- source/reflect/source/reflect_function.c | 2 +- source/reflect/source/reflect_object.c | 2 +- .../threading/threading_atomic_ref_count.h | 22 +++++++++---------- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/source/reflect/source/reflect_class.c b/source/reflect/source/reflect_class.c index 77ea42baa..4a8c54058 100644 --- a/source/reflect/source/reflect_class.c +++ b/source/reflect/source/reflect_class.c @@ -42,7 +42,7 @@ struct class_type enum accessor_type_id accessor; class_impl impl; class_interface interface; - struct threading_atomic_ref_count_type ref; + threading_atomic_ref_count_type ref; vector constructors; map methods; map static_methods; diff --git a/source/reflect/source/reflect_exception.c b/source/reflect/source/reflect_exception.c index 179aa237a..25752bdd9 100644 --- a/source/reflect/source/reflect_exception.c +++ b/source/reflect/source/reflect_exception.c @@ -37,7 +37,7 @@ struct exception_type int64_t code; /* Numeric code of error */ char *stacktrace; /* Stack trace of the error */ uint64_t id; /* Thread id where the error was raised */ - struct threading_atomic_ref_count_type ref; + threading_atomic_ref_count_type ref; /* TODO: value attributes; // This should implement a map for representing the extra attributes of an exception */ }; diff --git a/source/reflect/source/reflect_function.c b/source/reflect/source/reflect_function.c index d64ab1c90..27da107fd 100644 --- a/source/reflect/source/reflect_function.c +++ b/source/reflect/source/reflect_function.c @@ -36,7 +36,7 @@ struct function_type signature s; function_impl impl; function_interface interface; - struct threading_atomic_ref_count_type ref; + threading_atomic_ref_count_type ref; enum async_id async; void *data; }; diff --git a/source/reflect/source/reflect_object.c b/source/reflect/source/reflect_object.c index 1938d55ec..c4b068f67 100644 --- a/source/reflect/source/reflect_object.c +++ b/source/reflect/source/reflect_object.c @@ -40,7 +40,7 @@ struct object_type enum accessor_type_id accessor; object_impl impl; object_interface interface; - struct threading_atomic_ref_count_type ref; + threading_atomic_ref_count_type ref; klass cls; }; diff --git a/source/threading/include/threading/threading_atomic_ref_count.h b/source/threading/include/threading/threading_atomic_ref_count.h index 165ef565c..8dd8531fc 100644 --- a/source/threading/include/threading/threading_atomic_ref_count.h +++ b/source/threading/include/threading/threading_atomic_ref_count.h @@ -46,19 +46,19 @@ extern "C" { /* -- Member Data -- */ -struct threading_atomic_ref_count_type -{ #if defined(__THREAD_SANITIZER__) +typedef struct +{ uintmax_t count; threading_mutex_type m; +} threading_atomic_ref_count_type; #else - atomic_uintmax_t count; +typedef atomic_uintmax_t threading_atomic_ref_count_type; #endif -}; /* -- Type Definitions -- */ -typedef struct threading_atomic_ref_count_type *threading_atomic_ref_count; +typedef threading_atomic_ref_count_type *threading_atomic_ref_count; /* -- Methods -- */ @@ -67,7 +67,7 @@ static inline void threading_atomic_ref_count_store(threading_atomic_ref_count r #if defined(__THREAD_SANITIZER__) threading_mutex_store(&ref->m, &ref->count, &v, sizeof(uintmax_t)); #else - atomic_store(&ref->count, v); + atomic_store(ref, v); #endif } @@ -93,7 +93,7 @@ static inline uintmax_t threading_atomic_ref_count_load(threading_atomic_ref_cou return result; #else - return atomic_load_explicit(&ref->count, memory_order_relaxed); + return atomic_load_explicit(ref, memory_order_relaxed); #endif } @@ -106,12 +106,12 @@ static inline int threading_atomic_ref_count_increment(threading_atomic_ref_coun } threading_mutex_unlock(&ref->m); #else - if (atomic_load_explicit(&ref->count, memory_order_relaxed) == THREADING_ATOMIC_REF_COUNT_MAX) + if (atomic_load_explicit(ref, memory_order_relaxed) == THREADING_ATOMIC_REF_COUNT_MAX) { return 1; } - atomic_fetch_add_explicit(&ref->count, 1, memory_order_relaxed); + atomic_fetch_add_explicit(ref, 1, memory_order_relaxed); #endif return 0; @@ -126,12 +126,12 @@ static inline int threading_atomic_ref_count_decrement(threading_atomic_ref_coun } threading_mutex_unlock(&ref->m); #else - if (atomic_load_explicit(&ref->count, memory_order_relaxed) == THREADING_ATOMIC_REF_COUNT_MIN) + if (atomic_load_explicit(ref, memory_order_relaxed) == THREADING_ATOMIC_REF_COUNT_MIN) { return 1; } - uintmax_t old_ref_count = atomic_fetch_sub_explicit(&ref->count, 1, memory_order_release); + uintmax_t old_ref_count = atomic_fetch_sub_explicit(ref, 1, memory_order_release); if (old_ref_count == THREADING_ATOMIC_REF_COUNT_MIN + 1) { From bcf26cb2b0b94c6dae60c95a66b077f9974f4378 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 17:07:03 +0200 Subject: [PATCH 42/68] Solve issues on docker, improbe build warnings. --- .github/workflows/docker-hub.yml | 30 +++----- docker-compose.test.yml | 4 +- .../include/node_loader/node_loader_impl.h | 2 +- .../node_loader/source/node_loader_impl.cpp | 73 ++++++++++++------- .../source/node_loader_trampoline.cpp | 9 ++- .../loaders/py_loader/source/py_loader_dict.c | 22 ++++++ .../loaders/py_loader/source/py_loader_impl.c | 2 - .../py_loader/source/py_loader_threading.cpp | 2 - .../loaders/rb_loader/source/rb_loader_impl.c | 1 + source/ports/py_port/helper.py | 2 +- source/reflect/source/reflect_class.c | 1 + source/reflect/source/reflect_exception.c | 10 ++- source/reflect/source/reflect_function.c | 18 +++-- source/reflect/source/reflect_object.c | 24 +++--- .../threading/threading_atomic_ref_count.h | 18 ++--- tools/metacall-configure.sh | 21 ++++++ tools/metacall-environment.sh | 23 ++++++ tools/metacall-runtime.sh | 9 +++ tools/metacall-sanitizer.sh | 2 +- 19 files changed, 186 insertions(+), 87 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index cf4a81848..718bae74c 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -67,42 +67,32 @@ jobs: run: | ./docker-compose.sh platform - - name: Tag Platform Images - run: | - set -exuo pipefail - platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-') - echo "Platform Tag: ${platform_tag}" - for tag in "deps" "dev" "runtime" "cli"; do - docker tag metacall/${IMAGE_NAME}:${tag} \ - metacall/${IMAGE_NAME}:${tag}-${platform_tag} - docker tag metacall/${IMAGE_NAME}:${tag} \ - ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform_tag} - done - - name: Run Tests run: | set -exuo pipefail - platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-') - docker image inspect metacall/${IMAGE_NAME}:cli-${platform_tag} --format='{{.Os}}/{{.Architecture}}' + docker image inspect ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:cli --format='{{.Os}}/{{.Architecture}}' cat < Dockerfile.test - FROM metacall/${IMAGE_NAME}:cli-${platform_tag} - RUN echo "console.log('0123456789abcdef')" > script.js - RUN apt-get update && apt-get install file + FROM ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:cli + RUN apt-get update && apt-get install -y file RUN file /usr/local/bin/metacallcli - RUN /usr/local/bin/metacallcli /usr/local/scripts/script.js - RUN /usr/local/bin/metacallcli script.js | tee output.txt + RUN echo "console.log('0123456789abcdef')" > script.js + RUN metacallcli script.js | tee output.txt RUN grep 0123456789abcdef output.txt EOF export DOCKER_BUILDKIT=1 docker build --progress=plain --platform=${{ matrix.platform }} -f Dockerfile.test -t test-image . - - name: Push Platform Images + - name: Tag & Push Platform Images # Only run when master or when tagging a version if: (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')) && github.event_name != 'pull_request' run: | platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-') for tag in "deps" "dev" "runtime" "cli"; do + docker tag \ + ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag} \ + ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform_tag} + echo "Pushing image for tag: ${tag} with platform: ${platform_tag}" docker push ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform_tag} done diff --git a/docker-compose.test.yml b/docker-compose.test.yml index 0834f67a0..a6946f3a5 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -25,10 +25,10 @@ services: build: args: METACALL_BUILD_TYPE: ${METACALL_BUILD_TYPE} - METACALL_INSTALL_OPTIONS: base python ruby netcore7 nodejs typescript file rpc wasm java c cobol go rust rapidjson swig pack backtrace sandbox ${METACALL_BUILD_COVERAGE} # clangformat v8rep51 + METACALL_INSTALL_OPTIONS: base python ruby netcore8 nodejs typescript file rpc wasm java c cobol go rust rapidjson swig pack backtrace sandbox ${METACALL_BUILD_COVERAGE} # clangformat v8rep51 dev: image: metacall/core:dev build: args: METACALL_BUILD_TYPE: ${METACALL_BUILD_TYPE} - METACALL_BUILD_OPTIONS: ${METACALL_BUILD_SANITIZER} python ruby netcore7 nodejs typescript file rpc wasm java c cobol go rust examples tests scripts ports install pack sandbox benchmarks ${METACALL_BUILD_COVERAGE} # v8 + METACALL_BUILD_OPTIONS: ${METACALL_BUILD_SANITIZER} python ruby netcore8 nodejs typescript file rpc wasm java c cobol go rust examples tests scripts ports install pack sandbox benchmarks ${METACALL_BUILD_COVERAGE} # v8 diff --git a/source/loaders/node_loader/include/node_loader/node_loader_impl.h b/source/loaders/node_loader/include/node_loader/node_loader_impl.h index 094f3b24e..ee424c9b3 100644 --- a/source/loaders/node_loader/include/node_loader/node_loader_impl.h +++ b/source/loaders/node_loader/include/node_loader/node_loader_impl.h @@ -67,7 +67,7 @@ NODE_LOADER_NO_EXPORT void node_loader_impl_destroy_safe_impl(loader_impl_node n NODE_LOADER_NO_EXPORT void node_loader_impl_print_handles(loader_impl_node node_impl); -NODE_LOADER_NO_EXPORT int64_t node_loader_impl_user_async_handles_count(loader_impl_node node_impl); +NODE_LOADER_NO_EXPORT uint64_t node_loader_impl_user_async_handles_count(loader_impl_node node_impl); NODE_LOADER_NO_EXPORT napi_value node_loader_impl_register_bootstrap_startup(loader_impl_node node_impl, napi_env env); diff --git a/source/loaders/node_loader/source/node_loader_impl.cpp b/source/loaders/node_loader/source/node_loader_impl.cpp index 9a318719d..adda1440f 100644 --- a/source/loaders/node_loader/source/node_loader_impl.cpp +++ b/source/loaders/node_loader/source/node_loader_impl.cpp @@ -704,8 +704,8 @@ struct loader_impl_node_type /* TODO: This implementation won't work for multi-isolate environments. We should test it. */ std::thread::id js_thread_id; - int64_t base_active_handles; - std::atomic_int64_t extra_active_handles; + uint64_t base_active_handles; + std::atomic_uint64_t extra_active_handles; uv_prepare_t destroy_prepare; uv_check_t destroy_check; std::atomic_bool event_loop_empty; @@ -874,7 +874,7 @@ static void node_loader_impl_thread_log(void *data); static void node_loader_impl_walk_async_handles_count(uv_handle_t *handle, void *arg); #endif -static int64_t node_loader_impl_async_handles_count(loader_impl_node node_impl); +static uint64_t node_loader_impl_async_handles_count(loader_impl_node node_impl); static void node_loader_impl_try_destroy(loader_impl_node node_impl); @@ -4346,7 +4346,7 @@ static void node_loader_impl_destroy_cb(loader_impl_node node_impl) node_loader_impl_print_handles(node_impl); #endif - if (node_impl->event_loop_empty.load() == false && node_loader_impl_user_async_handles_count(node_impl) <= 0) + if (node_impl->event_loop_empty.load() == false && node_loader_impl_user_async_handles_count(node_impl) == 0) { loader_impl_handle_safe_cast destroy_prepare_cast = { NULL }; loader_impl_handle_safe_cast destroy_check_cast = { NULL }; @@ -4399,7 +4399,7 @@ void node_loader_impl_destroy_safe(napi_env env, loader_impl_async_destroy_safe_ node_loader_impl_exception(env, status); /* Check if there are async handles, destroy if the queue is empty, otherwise request the destroy */ - if (node_loader_impl_user_async_handles_count(node_impl) <= 0 || node_impl->event_loop_empty.load() == true) + if (node_loader_impl_user_async_handles_count(node_impl) == 0 || node_impl->event_loop_empty.load() == true) { node_loader_impl_destroy_safe_impl(node_impl, env); destroy_safe->has_finished = true; @@ -4431,7 +4431,7 @@ static inline int uv__queue_empty(const struct node_loader_impl_uv__queue *q) #if (defined(__APPLE__) && defined(__MACH__)) || defined(__MACOSX__) void node_loader_impl_walk_async_handles_count(uv_handle_t *handle, void *arg) { - int64_t *async_count = static_cast(arg); + uint64_t *async_count = static_cast(arg); if (uv_is_active(handle) && !uv_is_closing(handle)) { @@ -4447,11 +4447,11 @@ void node_loader_impl_walk_async_handles_count(uv_handle_t *handle, void *arg) } #endif -int64_t node_loader_impl_async_closing_handles_count(loader_impl_node node_impl) +uint64_t node_loader_impl_async_closing_handles_count(loader_impl_node node_impl) { #if defined(WIN32) || defined(_WIN32) - return (int64_t)(node_impl->thread_loop->pending_reqs_tail != NULL) + - (int64_t)(node_impl->thread_loop->endgame_handles != NULL); + return (uint64_t)(node_impl->thread_loop->pending_reqs_tail != NULL) + + (uint64_t)(node_impl->thread_loop->endgame_handles != NULL); #else union { @@ -4461,49 +4461,66 @@ int64_t node_loader_impl_async_closing_handles_count(loader_impl_node node_impl) uv__queue_cast.data = (void *)&node_impl->thread_loop->pending_queue; - return (int64_t)(!uv__queue_empty(uv__queue_cast.ptr)) + - (int64_t)(node_impl->thread_loop->closing_handles != NULL); + return (uint64_t)(!uv__queue_empty(uv__queue_cast.ptr)) + + (uint64_t)(node_impl->thread_loop->closing_handles != NULL); #endif } -int64_t node_loader_impl_async_handles_count(loader_impl_node node_impl) +uint64_t node_loader_impl_async_handles_count(loader_impl_node node_impl) { #if (defined(__APPLE__) && defined(__MACH__)) || defined(__MACOSX__) - int64_t active_handles = 0; + uint64_t active_handles = 0; uv_walk(node_impl->thread_loop, node_loader_impl_walk_async_handles_count, (void *)&active_handles); return active_handles + - (int64_t)(node_impl->thread_loop->active_reqs.count > 0) + + (uint64_t)(node_impl->thread_loop->active_reqs.count > 0) + node_loader_impl_async_closing_handles_count(node_impl); #else - int64_t active_handles = (int64_t)node_impl->thread_loop->active_handles + - (int64_t)(node_impl->thread_loop->active_reqs.count > 0) + - node_loader_impl_async_closing_handles_count(node_impl); + uint64_t active_handles = (uint64_t)node_impl->thread_loop->active_handles + + (uint64_t)(node_impl->thread_loop->active_reqs.count > 0) + + node_loader_impl_async_closing_handles_count(node_impl); return active_handles; #endif } -int64_t node_loader_impl_user_async_handles_count(loader_impl_node node_impl) +uint64_t node_loader_impl_user_async_handles_count(loader_impl_node node_impl) { - int64_t active_handles = node_loader_impl_async_handles_count(node_impl); - int64_t extra_active_handles = node_impl->extra_active_handles.load(); + uint64_t active_handles = node_loader_impl_async_handles_count(node_impl); + uint64_t extra_active_handles = node_impl->extra_active_handles.load(); + uint64_t base_active_handles = node_impl->base_active_handles; /* TODO: Uncomment for debugging handles */ /* #if (!defined(NDEBUG) || defined(DEBUG) || defined(_DEBUG) || defined(__DEBUG) || defined(__DEBUG__)) - int64_t closing = node_loader_impl_async_closing_handles_count(node_impl); + uint64_t closing = node_loader_impl_async_closing_handles_count(node_impl); printf("[active_handles] - [base_active_handles] - [extra_active_handles] + [active_reqs] + [closing]\n"); - printf(" %" PRId64 " - %" PRId64 " - %" PRId64 " + %" PRId64 " [> 0] + %" PRId64 "\n", - (int64_t)node_impl->thread_loop->active_handles, - node_impl->base_active_handles, + printf(" %" PRIu64 " - %" PRIu64 " - %" PRIu64 " + %" PRIu64 " [> 0] + %" PRIu64 "\n", + (uint64_t)node_impl->thread_loop->active_handles, + base_active_handles, extra_active_handles, - (int64_t)node_impl->thread_loop->active_reqs.count, + (uint64_t)node_impl->thread_loop->active_reqs.count, closing); #endif */ - return active_handles - node_impl->base_active_handles - extra_active_handles; + /* Check for overflow */ + uint64_t total_base_handles = base_active_handles + extra_active_handles; + + if (total_base_handles < base_active_handles) + { + /* Overflow occurred */ + return UINT64_MAX; + } + + /* Check for underflow */ + if (active_handles < total_base_handles) + { + /* Underflow occurred */ + return 0; + } + + return active_handles - total_base_handles; } void node_loader_impl_print_handles(loader_impl_node node_impl) @@ -4512,8 +4529,8 @@ void node_loader_impl_print_handles(loader_impl_node node_impl) /* TODO: Uncomment for debugging handles */ /* - printf("Number of active handles: %" PRId64 "\n", node_loader_impl_async_handles_count(node_impl)); - printf("Number of user active handles: %" PRId64 "\n", node_loader_impl_user_async_handles_count(node_impl)); + printf("Number of active handles: %" PRIu64 "\n", node_loader_impl_async_handles_count(node_impl)); + printf("Number of user active handles: %" PRIu64 "\n", node_loader_impl_user_async_handles_count(node_impl)); uv_print_active_handles(node_impl->thread_loop, stdout); fflush(stdout); */ diff --git a/source/loaders/node_loader/source/node_loader_trampoline.cpp b/source/loaders/node_loader/source/node_loader_trampoline.cpp index 3dbb35293..5d5aebbc8 100644 --- a/source/loaders/node_loader/source/node_loader_trampoline.cpp +++ b/source/loaders/node_loader/source/node_loader_trampoline.cpp @@ -397,12 +397,17 @@ napi_value node_loader_trampoline_active_handles(napi_env env, napi_callback_inf return nullptr; } - int64_t active_handles = node_loader_impl_user_async_handles_count(node_impl_cast.data); + uint64_t active_handles = node_loader_impl_user_async_handles_count(node_impl_cast.data); /* Create the integer return value */ napi_value result; - status = napi_create_int64(env, active_handles, &result); + if (active_handles > (uint64_t)INT64_MAX) + { + active_handles = (uint64_t)INT64_MAX; + } + + status = napi_create_int64(env, (int64_t)active_handles, &result); node_loader_impl_exception(env, status); diff --git a/source/loaders/py_loader/source/py_loader_dict.c b/source/loaders/py_loader/source/py_loader_dict.c index 2982a4367..48c1bdee6 100644 --- a/source/loaders/py_loader/source/py_loader_dict.c +++ b/source/loaders/py_loader/source/py_loader_dict.c @@ -26,10 +26,32 @@ #include #if PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 13 + /* Disable warnings from Python */ + #if defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wredundant-decls" + #pragma clang diagnostic ignored "-Wstrict-aliasing" + #pragma clang diagnostic ignored "-Wunused-parameter" + #pragma clang diagnostic ignored "-Wdeprecated-declarations" + #elif defined(__GNUC__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wredundant-decls" + #pragma GCC diagnostic ignored "-Wstrict-aliasing" + #pragma GCC diagnostic ignored "-Wunused-parameter" + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" + #endif + #ifndef Py_BUILD_CORE #define Py_BUILD_CORE #endif #include + + /* Disable warnings from Python */ + #if defined(__clang__) + #pragma clang diagnostic pop + #elif defined(__GNUC__) + #pragma GCC diagnostic pop + #endif #endif struct py_loader_impl_dict_obj diff --git a/source/loaders/py_loader/source/py_loader_impl.c b/source/loaders/py_loader/source/py_loader_impl.c index 79d655d01..32fedc692 100644 --- a/source/loaders/py_loader/source/py_loader_impl.c +++ b/source/loaders/py_loader/source/py_loader_impl.c @@ -44,8 +44,6 @@ #include #include -#include - #define PY_LOADER_IMPL_FUNCTION_TYPE_INVOKE_FUNC "__py_loader_impl_function_type_invoke__" #define PY_LOADER_IMPL_FINALIZER_FUNC "__py_loader_impl_finalizer__" diff --git a/source/loaders/py_loader/source/py_loader_threading.cpp b/source/loaders/py_loader/source/py_loader_threading.cpp index c49add1c3..5aa5173a9 100644 --- a/source/loaders/py_loader/source/py_loader_threading.cpp +++ b/source/loaders/py_loader/source/py_loader_threading.cpp @@ -24,8 +24,6 @@ #include -#include - struct py_thread_state { uint64_t ref_count; diff --git a/source/loaders/rb_loader/source/rb_loader_impl.c b/source/loaders/rb_loader/source/rb_loader_impl.c index ea3f817ae..3451dec8f 100644 --- a/source/loaders/rb_loader/source/rb_loader_impl.c +++ b/source/loaders/rb_loader/source/rb_loader_impl.c @@ -42,6 +42,7 @@ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wredundant-decls" #pragma GCC diagnostic ignored "-Wpedantic" + #pragma GCC diagnostic ignored "-Wunused-parameter" #endif #include diff --git a/source/ports/py_port/helper.py b/source/ports/py_port/helper.py index 86f851381..1a0a77df8 100644 --- a/source/ports/py_port/helper.py +++ b/source/ports/py_port/helper.py @@ -112,7 +112,7 @@ def pre_install(components): def pre_install_prompt(): answers = {'yes': True, 'y': True, 'no': False, 'n': False} - components = ['python', 'ruby', 'netcore7', 'v8', 'nodejs', 'ports'] + components = ['python', 'ruby', 'netcore8', 'v8', 'nodejs', 'ports'] args = [] try: diff --git a/source/reflect/source/reflect_class.c b/source/reflect/source/reflect_class.c index 4a8c54058..63643a24f 100644 --- a/source/reflect/source/reflect_class.c +++ b/source/reflect/source/reflect_class.c @@ -123,6 +123,7 @@ klass class_create(const char *name, enum accessor_type_id accessor, class_impl log_write("metacall", LOG_LEVEL_ERROR, "Invalid class (%s) create callback <%p>", cls->name, cls->interface->create); free(cls->name); + threading_atomic_ref_count_destroy(&cls->ref); vector_destroy(cls->constructors); map_destroy(cls->methods); map_destroy(cls->static_methods); diff --git a/source/reflect/source/reflect_exception.c b/source/reflect/source/reflect_exception.c index 25752bdd9..34b3dc2d3 100644 --- a/source/reflect/source/reflect_exception.c +++ b/source/reflect/source/reflect_exception.c @@ -138,9 +138,15 @@ exception exception_create_const(const char *message, const char *label, int64_t return ex; stacktrace_bad_alloc: - free(ex->label); + if (ex->label != NULL) + { + free(ex->label); + } label_bad_alloc: - free(ex->message); + if (ex->message != NULL) + { + free(ex->message); + } message_bad_alloc: free(ex); exception_bad_alloc: diff --git a/source/reflect/source/reflect_function.c b/source/reflect/source/reflect_function.c index 27da107fd..b9a03512f 100644 --- a/source/reflect/source/reflect_function.c +++ b/source/reflect/source/reflect_function.c @@ -66,9 +66,7 @@ function function_create(const char *name, size_t args_count, function_impl impl { log_write("metacall", LOG_LEVEL_ERROR, "Invalid function name allocation <%s>", name); - free(func); - - return NULL; + goto name_error; } memcpy(func->name, name, func_name_size); @@ -88,7 +86,7 @@ function function_create(const char *name, size_t args_count, function_impl impl { log_write("metacall", LOG_LEVEL_ERROR, "Invalid function signature allocation"); - goto function_create_error; + goto signature_error; } threading_atomic_ref_count_initialize(&func->ref); @@ -101,7 +99,7 @@ function function_create(const char *name, size_t args_count, function_impl impl { log_write("metacall", LOG_LEVEL_ERROR, "Invalid function (%s) create callback <%p>", func->name, func->interface->create); - goto function_create_error; + goto interface_create_error; } } @@ -109,8 +107,14 @@ function function_create(const char *name, size_t args_count, function_impl impl return func; -function_create_error: - free(func->name); +interface_create_error: + signature_destroy(func->s); +signature_error: + if (func->name != NULL) + { + free(func->name); + } +name_error: free(func); return NULL; diff --git a/source/reflect/source/reflect_object.c b/source/reflect/source/reflect_object.c index c4b068f67..a568b24d7 100644 --- a/source/reflect/source/reflect_object.c +++ b/source/reflect/source/reflect_object.c @@ -67,9 +67,7 @@ object object_create(const char *name, enum accessor_type_id accessor, object_im { log_write("metacall", LOG_LEVEL_ERROR, "Invalid object name allocation <%s>", name); - free(obj); - - return NULL; + goto name_error; } memcpy(obj->name, name, obj_name_size); @@ -79,12 +77,11 @@ object object_create(const char *name, enum accessor_type_id accessor, object_im obj->name = NULL; } - obj->impl = impl; - obj->accessor = accessor; threading_atomic_ref_count_initialize(&obj->ref); + obj->impl = impl; + obj->accessor = accessor; obj->interface = singleton ? singleton() : NULL; - obj->cls = cls; if (obj->interface != NULL && obj->interface->create != NULL) @@ -93,16 +90,23 @@ object object_create(const char *name, enum accessor_type_id accessor, object_im { log_write("metacall", LOG_LEVEL_ERROR, "Invalid object (%s) create callback <%p>", obj->name, obj->interface->create); - free(obj->name); - free(obj); - - return NULL; + goto interface_create_error; } } reflect_memory_tracker_allocation(object_stats); return obj; + +interface_create_error: + if (obj->name != NULL) + { + free(obj->name); + } +name_error: + free(obj); + + return NULL; } int object_increment_reference(object obj) diff --git a/source/threading/include/threading/threading_atomic_ref_count.h b/source/threading/include/threading/threading_atomic_ref_count.h index 8dd8531fc..8a1dc1cc4 100644 --- a/source/threading/include/threading/threading_atomic_ref_count.h +++ b/source/threading/include/threading/threading_atomic_ref_count.h @@ -46,15 +46,15 @@ extern "C" { /* -- Member Data -- */ -#if defined(__THREAD_SANITIZER__) typedef struct { +#if defined(__THREAD_SANITIZER__) uintmax_t count; threading_mutex_type m; -} threading_atomic_ref_count_type; #else -typedef atomic_uintmax_t threading_atomic_ref_count_type; + atomic_uintmax_t count; #endif +} threading_atomic_ref_count_type; /* -- Type Definitions -- */ @@ -67,7 +67,7 @@ static inline void threading_atomic_ref_count_store(threading_atomic_ref_count r #if defined(__THREAD_SANITIZER__) threading_mutex_store(&ref->m, &ref->count, &v, sizeof(uintmax_t)); #else - atomic_store(ref, v); + atomic_store(&ref->count, v); #endif } @@ -93,7 +93,7 @@ static inline uintmax_t threading_atomic_ref_count_load(threading_atomic_ref_cou return result; #else - return atomic_load_explicit(ref, memory_order_relaxed); + return atomic_load_explicit(&ref->count, memory_order_relaxed); #endif } @@ -106,12 +106,12 @@ static inline int threading_atomic_ref_count_increment(threading_atomic_ref_coun } threading_mutex_unlock(&ref->m); #else - if (atomic_load_explicit(ref, memory_order_relaxed) == THREADING_ATOMIC_REF_COUNT_MAX) + if (atomic_load_explicit(&ref->count, memory_order_relaxed) == THREADING_ATOMIC_REF_COUNT_MAX) { return 1; } - atomic_fetch_add_explicit(ref, 1, memory_order_relaxed); + atomic_fetch_add_explicit(&ref->count, 1, memory_order_relaxed); #endif return 0; @@ -126,12 +126,12 @@ static inline int threading_atomic_ref_count_decrement(threading_atomic_ref_coun } threading_mutex_unlock(&ref->m); #else - if (atomic_load_explicit(ref, memory_order_relaxed) == THREADING_ATOMIC_REF_COUNT_MIN) + if (atomic_load_explicit(&ref->count, memory_order_relaxed) == THREADING_ATOMIC_REF_COUNT_MIN) { return 1; } - uintmax_t old_ref_count = atomic_fetch_sub_explicit(ref, 1, memory_order_release); + uintmax_t old_ref_count = atomic_fetch_sub_explicit(&ref->count, 1, memory_order_release); if (old_ref_count == THREADING_ATOMIC_REF_COUNT_MIN + 1) { diff --git a/tools/metacall-configure.sh b/tools/metacall-configure.sh index 0360f472f..7847a0d34 100755 --- a/tools/metacall-configure.sh +++ b/tools/metacall-configure.sh @@ -29,6 +29,7 @@ BUILD_NETCORE=0 BUILD_NETCORE2=0 BUILD_NETCORE5=0 BUILD_NETCORE7=0 +BUILD_NETCORE8=0 BUILD_V8=0 BUILD_NODEJS=0 BUILD_TYPESCRIPT=0 @@ -112,6 +113,10 @@ sub_options() { echo "Build with netcore 7 support" BUILD_NETCORE7=1 fi + if [ "$option" = 'netcore8' ]; then + echo "Build with netcore 8 support" + BUILD_NETCORE8=1 + fi if [ "$option" = 'v8' ]; then echo "Build with v8 support" BUILD_V8=1 @@ -318,6 +323,21 @@ sub_configure() { fi fi + # NetCore 8 + if [ $BUILD_NETCORE8 = 1 ]; then + BUILD_STRING="$BUILD_STRING \ + -DOPTION_BUILD_LOADERS_CS=On \ + -DDOTNET_CORE_PATH=`sub_find_dotnet_runtime 8`" + + if [ $BUILD_SCRIPTS = 1 ]; then + BUILD_STRING="$BUILD_STRING -DOPTION_BUILD_SCRIPTS_CS=On" + fi + + if [ $BUILD_PORTS = 1 ]; then + BUILD_STRING="$BUILD_STRING -DOPTION_BUILD_PORTS_CS=On" + fi + fi + # V8 if [ $BUILD_V8 = 1 ]; then BUILD_STRING="$BUILD_STRING -DOPTION_BUILD_LOADERS_JS=On" @@ -545,6 +565,7 @@ sub_help() { echo " netcore2: build with netcore 2 support" echo " netcore5: build with netcore 5 support" echo " netcore7: build with netcore 7 support" + echo " netcore8: build with netcore 8 support" echo " v8: build with v8 support" echo " nodejs: build with nodejs support" echo " typescript: build with typescript support" diff --git a/tools/metacall-environment.sh b/tools/metacall-environment.sh index 593ac4b93..fb5ca4761 100755 --- a/tools/metacall-environment.sh +++ b/tools/metacall-environment.sh @@ -34,6 +34,7 @@ INSTALL_NETCORE=0 INSTALL_NETCORE2=0 INSTALL_NETCORE5=0 INSTALL_NETCORE7=0 +INSTALL_NETCORE8=0 INSTALL_V8=0 INSTALL_V8REPO=0 INSTALL_V8REPO58=0 @@ -387,6 +388,20 @@ sub_netcore7(){ fi } +# NetCore 8 +sub_netcore8(){ + echo "configure netcore 8" + cd $ROOT_DIR + + if [ "${OPERATIVE_SYSTEM}" = "Linux" ]; then + if [ "${LINUX_DISTRO}" = "debian" ] || [ "${LINUX_DISTRO}" = "ubuntu" ]; then + wget -O - https://dot.net/v1/dotnet-install.sh | $SUDO_CMD bash -s -- --version 8.0.408 --install-dir /usr/local/bin + elif [ "${LINUX_DISTRO}" = "alpine" ]; then + $SUDO_CMD apk add --no-cache dotnet8-sdk + fi + fi +} + # V8 Repository sub_v8repo(){ echo "configure v8 from repository" @@ -922,6 +937,9 @@ sub_install(){ if [ $INSTALL_NETCORE7 = 1 ]; then sub_netcore7 fi + if [ $INSTALL_NETCORE8 = 1 ]; then + sub_netcore8 + fi if [ $INSTALL_V8 = 1 ]; then sub_v8 fi @@ -1025,6 +1043,10 @@ sub_options(){ echo "netcore 7 selected" INSTALL_NETCORE7=1 fi + if [ "$option" = 'netcore8' ]; then + echo "netcore 8 selected" + INSTALL_NETCORE8=1 + fi if [ "$option" = 'rapidjson' ]; then echo "rapidjson selected" INSTALL_RAPIDJSON=1 @@ -1134,6 +1156,7 @@ sub_help() { echo " netcore2" echo " netcore5" echo " netcore7" + echo " netcore8" echo " rapidjson" echo " v8" echo " v8rep51" diff --git a/tools/metacall-runtime.sh b/tools/metacall-runtime.sh index aea5bab16..9ef4afba2 100755 --- a/tools/metacall-runtime.sh +++ b/tools/metacall-runtime.sh @@ -170,6 +170,15 @@ sub_netcore7(){ sub_apt_install_hold dotnet-runtime-7.0=7.0.5-1 } +# NetCore 8 +sub_netcore8(){ + echo "configure netcore 8" + cd $ROOT_DIR + + # Install NET Core Runtime 8.x + wget -O - https://dot.net/v1/dotnet-install.sh | $SUDO_CMD bash -s -- --version 8.0.408 --install-dir /usr/local/bin --runtime dotnet +} + # V8 sub_v8(){ echo "configure v8" diff --git a/tools/metacall-sanitizer.sh b/tools/metacall-sanitizer.sh index d5f9ac529..9e0856a50 100755 --- a/tools/metacall-sanitizer.sh +++ b/tools/metacall-sanitizer.sh @@ -23,7 +23,7 @@ set -euxo pipefail BUILD_SANITIZER=${1:-address-sanitizer} BUILD_LANGUAGES=( - python ruby netcore7 nodejs typescript file rpc wasm java c cobol rust + python ruby netcore8 nodejs typescript file rpc wasm java c cobol rust ) SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) ROOT_DIR=$(dirname "$SCRIPT_DIR") From 8a1e352601b7153fd5ee9e2b7d1bdce1907a18f2 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 18:20:41 +0200 Subject: [PATCH 43/68] Trying to solve dockerhub. --- .github/workflows/docker-hub.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 718bae74c..91caf530c 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -64,23 +64,24 @@ jobs: - name: Build MetaCall Docker Images env: METACALL_PLATFORM: ${{ matrix.platform }} + DOCKER_BUILDKIT: 1 run: | ./docker-compose.sh platform - - name: Run Tests - run: | + echo + echo "-------------------- Run Tests --------------------" + echo set -exuo pipefail docker image inspect ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:cli --format='{{.Os}}/{{.Architecture}}' cat < Dockerfile.test FROM ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:cli RUN apt-get update && apt-get install -y file - RUN file /usr/local/bin/metacallcli + RUN file /usr/local/bin/metacallcli && ldd /usr/local/bin/metacallcli RUN echo "console.log('0123456789abcdef')" > script.js RUN metacallcli script.js | tee output.txt RUN grep 0123456789abcdef output.txt EOF - export DOCKER_BUILDKIT=1 docker build --progress=plain --platform=${{ matrix.platform }} -f Dockerfile.test -t test-image . - name: Tag & Push Platform Images From 309414fdaf3687b4a0ff40bb97397042a10ffff5 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 18:45:29 +0200 Subject: [PATCH 44/68] Trying buildx in dockerhub. --- .github/workflows/docker-hub.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 91caf530c..5e3aeb71b 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -82,7 +82,7 @@ jobs: RUN grep 0123456789abcdef output.txt EOF - docker build --progress=plain --platform=${{ matrix.platform }} -f Dockerfile.test -t test-image . + docker buildx build --progress=plain --platform ${{ matrix.platform }} -f Dockerfile.test -t test-image . - name: Tag & Push Platform Images # Only run when master or when tagging a version From ef5efab583a3c2f0afe7c3087448569f68ee840f Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 20:32:31 +0200 Subject: [PATCH 45/68] Improve minor issues rapidjson. --- cmake/InstallRapidJSON.cmake | 2 +- .../source/rapid_json_serial_impl.cpp | 35 ++++++++++++++----- tools/metacall-environment.sh | 4 +-- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/cmake/InstallRapidJSON.cmake b/cmake/InstallRapidJSON.cmake index 41c302027..f90dfc4a4 100644 --- a/cmake/InstallRapidJSON.cmake +++ b/cmake/InstallRapidJSON.cmake @@ -24,7 +24,7 @@ if(NOT RAPIDJSON_FOUND OR USE_BUNDLED_RAPIDJSON) if(NOT RAPIDJSON_VERSION OR USE_BUNDLED_RAPIDJSON) - set(RAPIDJSON_VERSION ab1842a2dae061284c0a62dca1cc6d5e7e37e346) + set(RAPIDJSON_VERSION 24b5e7a8b27f42fa16b96fc70aade9106cf7102f) endif() ExternalProject_Add(rapid-json-depends diff --git a/source/serials/rapid_json_serial/source/rapid_json_serial_impl.cpp b/source/serials/rapid_json_serial/source/rapid_json_serial_impl.cpp index 973c06da3..e2e981d7f 100644 --- a/source/serials/rapid_json_serial/source/rapid_json_serial_impl.cpp +++ b/source/serials/rapid_json_serial/source/rapid_json_serial_impl.cpp @@ -12,14 +12,27 @@ #include -// TODO: RapidJSON seems to be outdated, but we use it meanwhile there's a better solution. -// Here's a patch for some of the bugs in the library: https://github.com/Tencent/rapidjson/issues/1928 +/* Disable warnings from RapidJSON */ +#if defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wstrict-overflow" +#elif defined(__GNUC__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wstrict-overflow" +#endif #include #include #include #include +/* Disable warnings from RapidJSON */ +#if defined(__clang__) + #pragma clang diagnostic pop +#elif defined(__GNUC__) + #pragma GCC diagnostic pop +#endif + #include /* -- Type Definitions -- */ @@ -41,7 +54,6 @@ static value rapid_json_serial_impl_deserialize_value(const rapidjson::Value *v) /* -- Classes -- */ -// https://techoverflow.net/2020/01/13/how-to-fix-rapidjson-segmentation-faults-when-building-nested-documents/ rapidjson::MemoryPoolAllocator<> rapid_json_allocator; /* -- Methods -- */ @@ -91,9 +103,7 @@ void rapid_json_serial_impl_serialize_value(value v, rapidjson::Value *json_v) { short s = value_to_short(v); - int i = (int)s; - - json_v->SetInt(i); + json_v->SetInt((int)s); } else if (id == TYPE_INT) { @@ -105,9 +115,7 @@ void rapid_json_serial_impl_serialize_value(value v, rapidjson::Value *json_v) { long l = value_to_long(v); - log_write("metacall", LOG_LEVEL_WARNING, "Casting long to int64_t (posible incompatible types) in RapidJSON implementation"); - - json_v->SetInt64(l); + json_v->SetInt64((int64_t)l); } else if (id == TYPE_FLOAT) { @@ -394,6 +402,7 @@ value rapid_json_serial_impl_deserialize_value(const rapidjson::Value *v) { unsigned int ui = v->GetUint(); + /* TODO: Review this, in case of underflow/overflow store it in a bigger type? */ log_write("metacall", LOG_LEVEL_WARNING, "Casting unsigned integer to integer (posible overflow) in RapidJSON implementation"); return value_create_int((int)ui); @@ -402,13 +411,21 @@ value rapid_json_serial_impl_deserialize_value(const rapidjson::Value *v) { int64_t i = v->GetInt64(); + /* TODO: Review this, in case of underflow/overflow store it in a bigger type? */ +#if LONG_MAX < INT64_MAX + log_write("metacall", LOG_LEVEL_WARNING, "Casting long to int (posible overflow) in RapidJSON implementation"); +#endif + return value_create_long((long)i); } else if (v->IsUint64() == true) { uint64_t ui = v->GetUint64(); + /* TODO: Review this, in case of underflow/overflow store it in a bigger type? */ +#if LONG_MAX < UINT64_MAX log_write("metacall", LOG_LEVEL_WARNING, "Casting unsigned long to int (posible overflow) in RapidJSON implementation"); +#endif return value_create_long((long)ui); } diff --git a/tools/metacall-environment.sh b/tools/metacall-environment.sh index fb5ca4761..b24476443 100755 --- a/tools/metacall-environment.sh +++ b/tools/metacall-environment.sh @@ -250,9 +250,9 @@ sub_rapidjson(){ cd $ROOT_DIR if [ "${OPERATIVE_SYSTEM}" = "Linux" ]; then - git clone https://github.com/miloyip/rapidjson.git + git clone https://github.com/Tencent/rapidjson.git cd rapidjson - git checkout ab1842a2dae061284c0a62dca1cc6d5e7e37e346 + git checkout 24b5e7a8b27f42fa16b96fc70aade9106cf7102f mkdir build cd build cmake -DRAPIDJSON_BUILD_DOC=Off -DRAPIDJSON_BUILD_EXAMPLES=Off -DRAPIDJSON_BUILD_TESTS=Off .. From 8b42427b42fdd8bfc551b1a574b17bfb0255ef71 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 20:58:13 +0200 Subject: [PATCH 46/68] Improved the architecture build. --- .github/workflows/docker-hub.yml | 40 ++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 5e3aeb71b..c50d9d3a4 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -19,6 +19,25 @@ env: IMAGE_NAME: core BUILDKIT_VERSION: 0.13.0 + # TODO: Tests failing + # - linux/s390x + # TODO: Not tested or no hooking support + # - linux/mips64le + # - linux/mips64 + # - linux/loong64 + PLATFORM_LIST: > + [ + "linux/amd64", + "linux/amd64/v2" + "linux/amd64/v3" + "linux/386", + "linux/arm64", + "linux/riscv64", + "linux/ppc64le", + "linux/arm/v7", + "linux/arm/v6" + ] + jobs: build: name: Build @@ -26,21 +45,8 @@ jobs: strategy: fail-fast: false matrix: - platform: - - linux/amd64 - - linux/386 - - linux/arm64 - - linux/riscv64 - - linux/ppc64le - - linux/s390x - - linux/arm/v7 - - linux/arm/v6 - # TODO: - # - linux/amd64/v2 - # - linux/amd64/v3 - # - linux/mips64le - # - linux/mips64 - # - linux/loong64 + platform: ${{ fromJSON(env.PLATFORM_LIST) }} + steps: - name: Checkout Repository uses: actions/checkout@v4 @@ -114,7 +120,7 @@ jobs: - name: Create and Push Manifest Lists run: | tags=("deps" "dev" "runtime" "cli") - platforms=("linux/amd64" "linux/386" "linux/arm64" "linux/riscv64" "linux/ppc64le" "linux/s390x" "linux/arm/v7" "linux/arm/v6") + platforms=("${{ join(fromJSON(env.PLATFORM_LIST), '" "') }}") echo "Create all the tags by platform" @@ -165,7 +171,7 @@ jobs: - name: Remove Platform-Specific Tags run: | tags=("deps" "dev" "runtime" "cli") - platforms=("linux/amd64" "linux/386" "linux/arm64" "linux/riscv64" "linux/ppc64le" "linux/s390x" "linux/arm/v7" "linux/arm/v6") + platforms=("${{ join(fromJSON(env.PLATFORM_LIST), '" "') }}") for tag in "${tags[@]}"; do for platform in "${platforms[@]}"; do From 787220cf122656a9cd72643b217c90d40ca93668 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 21:03:43 +0200 Subject: [PATCH 47/68] Extend timeout of rpc test. --- source/tests/metacall_rpc_test/source/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/tests/metacall_rpc_test/source/test.js b/source/tests/metacall_rpc_test/source/test.js index 42c12bd33..15d5a9dac 100644 --- a/source/tests/metacall_rpc_test/source/test.js +++ b/source/tests/metacall_rpc_test/source/test.js @@ -62,7 +62,7 @@ process.on('uncaughtException', killTest); if (ready === false) { killTest('Timeout reached, server is not ready'); } - }, 10000); + }, 60000); while (ready !== true) { try { From 27b8fdeca5233bcda567f3d840f2e33e41b3dfec Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 21:14:05 +0200 Subject: [PATCH 48/68] Keep trying solving issues with dockerhub. --- .github/workflows/docker-hub.yml | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index c50d9d3a4..7770d93d1 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -39,13 +39,26 @@ env: ] jobs: + generate_matrix: + name: Generate Platform List + runs-on: ubuntu-latest + outputs: + platform_list: ${{ steps.generate_platform_list.outputs.platform_list }} + steps: + - name: Generate platform list + id: generate_platform_list + run: | + echo "PLATFORM_LIST=${{ env.PLATFORM_LIST }}" >> $GITHUB_ENV + echo "::set-output name=platform_list::$PLATFORM_LIST" + build: name: Build runs-on: ubuntu-latest + needs: generate_matrix strategy: fail-fast: false matrix: - platform: ${{ fromJSON(env.PLATFORM_LIST) }} + platform: ${{ fromJSON(needs.generate_matrix.outputs.platform_list) }} steps: - name: Checkout Repository @@ -120,7 +133,7 @@ jobs: - name: Create and Push Manifest Lists run: | tags=("deps" "dev" "runtime" "cli") - platforms=("${{ join(fromJSON(env.PLATFORM_LIST), '" "') }}") + platforms=("${{ join(fromJSON(needs.generate_matrix.outputs.platform_list), '" "') }}") echo "Create all the tags by platform" @@ -171,7 +184,7 @@ jobs: - name: Remove Platform-Specific Tags run: | tags=("deps" "dev" "runtime" "cli") - platforms=("${{ join(fromJSON(env.PLATFORM_LIST), '" "') }}") + platforms=("${{ join(fromJSON(needs.generate_matrix.outputs.platform_list), '" "') }}") for tag in "${tags[@]}"; do for platform in "${platforms[@]}"; do From 549c965b7fc36d86c9f4c2dbdae59c4d7478c914 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 21:18:50 +0200 Subject: [PATCH 49/68] Solve issues dockerhub. --- .github/workflows/docker-hub.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 7770d93d1..ea3b72317 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -48,7 +48,8 @@ jobs: - name: Generate platform list id: generate_platform_list run: | - echo "PLATFORM_LIST=${{ env.PLATFORM_LIST }}" >> $GITHUB_ENV + PLATFORM_LIST=("${{ join(fromJSON(needs.generate_matrix.outputs.platform_list), '" "') }}") + echo "PLATFORM_LIST=$PLATFORM_LIST" >> $GITHUB_ENV echo "::set-output name=platform_list::$PLATFORM_LIST" build: From 71da141aa51a5d70501d0cd3d45abb30c9bb4cfc Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 21:29:41 +0200 Subject: [PATCH 50/68] Try to improve dockerhub. --- .github/workflows/docker-hub.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index ea3b72317..75ba2e654 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -48,7 +48,10 @@ jobs: - name: Generate platform list id: generate_platform_list run: | - PLATFORM_LIST=("${{ join(fromJSON(needs.generate_matrix.outputs.platform_list), '" "') }}") + PLATFORM_STRING=$(cat <> $GITHUB_ENV echo "::set-output name=platform_list::$PLATFORM_LIST" From 4952f19bfd64859d4d8ec37a4c925d10282362a5 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 21:32:55 +0200 Subject: [PATCH 51/68] Solve issues dockerhub. --- .github/workflows/docker-hub.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 75ba2e654..c9aa15861 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -48,8 +48,10 @@ jobs: - name: Generate platform list id: generate_platform_list run: | + set -exuo pipefail PLATFORM_STRING=$(cat <> $GITHUB_ENV From 895a214f359c5a6f5ba6e8febfc9f5bb98018d80 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 21:34:08 +0200 Subject: [PATCH 52/68] Solve more issues dockerhub. --- .github/workflows/docker-hub.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index c9aa15861..68efe6710 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -28,8 +28,8 @@ env: PLATFORM_LIST: > [ "linux/amd64", - "linux/amd64/v2" - "linux/amd64/v3" + "linux/amd64/v2", + "linux/amd64/v3", "linux/386", "linux/arm64", "linux/riscv64", From 95c73c1e058470794ad483dcb34ce5ec073ab8b0 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 21:37:57 +0200 Subject: [PATCH 53/68] Solve issues dockerhub. --- .github/workflows/docker-hub.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 68efe6710..a23d7792e 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -53,7 +53,8 @@ jobs: ${{ env.PLATFORM_LIST }} EOF ) - PLATFORM_LIST=$(echo "$PLATFORM_STRING" | jq .) + # Convert array to comma-separated string with each element quoted + PLATFORM_LIST=$(echo $PLATFORM_STRING | jq -r '[.[] | "\""+tostring+"\""] | join(",")') echo "PLATFORM_LIST=$PLATFORM_LIST" >> $GITHUB_ENV echo "::set-output name=platform_list::$PLATFORM_LIST" From 75af00500e9a7a5ffdc7abfaded874b00106b3cc Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Thu, 24 Apr 2025 21:41:35 +0200 Subject: [PATCH 54/68] Dockerhub. --- .github/workflows/docker-hub.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index a23d7792e..dc7f68d9d 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -53,8 +53,7 @@ jobs: ${{ env.PLATFORM_LIST }} EOF ) - # Convert array to comma-separated string with each element quoted - PLATFORM_LIST=$(echo $PLATFORM_STRING | jq -r '[.[] | "\""+tostring+"\""] | join(",")') + PLATFORM_LIST=$(echo $PLATFORM_STRING | jq -c .) echo "PLATFORM_LIST=$PLATFORM_LIST" >> $GITHUB_ENV echo "::set-output name=platform_list::$PLATFORM_LIST" From 4bee75e2570ca116a9888447833cf340c89a25bd Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Fri, 25 Apr 2025 00:08:15 +0200 Subject: [PATCH 55/68] Test platform. --- .github/workflows/docker-hub.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index dc7f68d9d..885cbe062 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -57,10 +57,23 @@ jobs: echo "PLATFORM_LIST=$PLATFORM_LIST" >> $GITHUB_ENV echo "::set-output name=platform_list::$PLATFORM_LIST" + test_matrix: + name: Test Platform List + runs-on: ubuntu-latest + needs: generate_matrix + steps: + - name: Test platform list + run: | + set -exuo pipefail + platforms=($(echo "${{ needs.generate_matrix.outputs.platform_list }}" | jq -r '.[]')) + for platform in "${platforms[@]}"; do + echo "$platform" + done + build: name: Build runs-on: ubuntu-latest - needs: generate_matrix + needs: test_matrix strategy: fail-fast: false matrix: From 4cc921c5873367a4fba144493ce625ca171557fd Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Fri, 25 Apr 2025 00:15:21 +0200 Subject: [PATCH 56/68] Test platform. --- .github/workflows/docker-hub.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 885cbe062..8fa86e969 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -65,7 +65,7 @@ jobs: - name: Test platform list run: | set -exuo pipefail - platforms=($(echo "${{ needs.generate_matrix.outputs.platform_list }}" | jq -r '.[]')) + platforms=($(echo '${{ needs.generate_matrix.outputs.platform_list }}' | jq -r '.[]')) for platform in "${platforms[@]}"; do echo "$platform" done From 277e5e464bf1cdfe97ac85e25b484f0446514bc9 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Fri, 25 Apr 2025 00:20:06 +0200 Subject: [PATCH 57/68] Final version of dockerhub. --- .github/workflows/docker-hub.yml | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index 8fa86e969..f5ed9218b 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -57,23 +57,10 @@ jobs: echo "PLATFORM_LIST=$PLATFORM_LIST" >> $GITHUB_ENV echo "::set-output name=platform_list::$PLATFORM_LIST" - test_matrix: - name: Test Platform List - runs-on: ubuntu-latest - needs: generate_matrix - steps: - - name: Test platform list - run: | - set -exuo pipefail - platforms=($(echo '${{ needs.generate_matrix.outputs.platform_list }}' | jq -r '.[]')) - for platform in "${platforms[@]}"; do - echo "$platform" - done - build: name: Build runs-on: ubuntu-latest - needs: test_matrix + needs: generate_matrix strategy: fail-fast: false matrix: @@ -106,9 +93,10 @@ jobs: run: | ./docker-compose.sh platform - echo - echo "-------------------- Run Tests --------------------" - echo + - name: Run Tests + env: + DOCKER_BUILDKIT: 1 + run: | set -exuo pipefail docker image inspect ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:cli --format='{{.Os}}/{{.Architecture}}' cat < Dockerfile.test @@ -152,7 +140,7 @@ jobs: - name: Create and Push Manifest Lists run: | tags=("deps" "dev" "runtime" "cli") - platforms=("${{ join(fromJSON(needs.generate_matrix.outputs.platform_list), '" "') }}") + platforms=($(echo '${{ needs.generate_matrix.outputs.platform_list }}' | jq -r '.[]')) echo "Create all the tags by platform" @@ -203,7 +191,7 @@ jobs: - name: Remove Platform-Specific Tags run: | tags=("deps" "dev" "runtime" "cli") - platforms=("${{ join(fromJSON(needs.generate_matrix.outputs.platform_list), '" "') }}") + platforms=($(echo '${{ needs.generate_matrix.outputs.platform_list }}' | jq -r '.[]')) for tag in "${tags[@]}"; do for platform in "${platforms[@]}"; do From 469c4e481c1ee30e7148fee505a8d4e11802e76f Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Fri, 25 Apr 2025 00:20:42 +0200 Subject: [PATCH 58/68] Simplify list. --- .github/workflows/docker-hub.yml | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index f5ed9218b..aa40e7ab8 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -27,17 +27,22 @@ env: # - linux/loong64 PLATFORM_LIST: > [ - "linux/amd64", - "linux/amd64/v2", - "linux/amd64/v3", - "linux/386", - "linux/arm64", - "linux/riscv64", - "linux/ppc64le", - "linux/arm/v7", - "linux/arm/v6" + "linux/amd64" ] + + # [ + # "linux/amd64", + # "linux/amd64/v2", + # "linux/amd64/v3", + # "linux/386", + # "linux/arm64", + # "linux/riscv64", + # "linux/ppc64le", + # "linux/arm/v7", + # "linux/arm/v6" + # ] + jobs: generate_matrix: name: Generate Platform List From 5c01e5b2289e9b3f4ac5e4f661d696c312ceebf8 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Fri, 25 Apr 2025 00:36:57 +0200 Subject: [PATCH 59/68] Testing dockerhub. --- .github/workflows/docker-hub.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index aa40e7ab8..c52e9053b 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -44,7 +44,7 @@ env: # ] jobs: - generate_matrix: + matrix: name: Generate Platform List runs-on: ubuntu-latest outputs: @@ -65,11 +65,11 @@ jobs: build: name: Build runs-on: ubuntu-latest - needs: generate_matrix + needs: matrix strategy: fail-fast: false matrix: - platform: ${{ fromJSON(needs.generate_matrix.outputs.platform_list) }} + platform: ${{ fromJSON(needs.matrix.outputs.platform_list) }} steps: - name: Checkout Repository @@ -131,7 +131,7 @@ jobs: manifest: name: Create and Push Manifest Lists - needs: build + needs: [matrix, build] # Only run when master or when tagging a version if: (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')) && github.event_name != 'pull_request' runs-on: ubuntu-latest @@ -144,8 +144,10 @@ jobs: - name: Create and Push Manifest Lists run: | + set -exuo pipefail + tags=("deps" "dev" "runtime" "cli") - platforms=($(echo '${{ needs.generate_matrix.outputs.platform_list }}' | jq -r '.[]')) + platforms=($(echo '${{ needs.matrix.outputs.platform_list }}' | jq -r '.[]')) echo "Create all the tags by platform" @@ -189,14 +191,16 @@ jobs: cleanup: name: Cleanup Platform Specific Tags - needs: [build, manifest] + needs: [matrix, build, manifest] runs-on: ubuntu-latest if: always() steps: - name: Remove Platform-Specific Tags run: | + set -exuo pipefail + tags=("deps" "dev" "runtime" "cli") - platforms=($(echo '${{ needs.generate_matrix.outputs.platform_list }}' | jq -r '.[]')) + platforms=($(echo '${{ needs.matrix.outputs.platform_list }}' | jq -r '.[]')) for tag in "${tags[@]}"; do for platform in "${platforms[@]}"; do From 3b370c6ffb42a2be20f41b2ab6f738028d69c623 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Fri, 25 Apr 2025 00:58:15 +0200 Subject: [PATCH 60/68] Finished docker hub CI, remove warning from node loader. --- .github/workflows/docker-hub.yml | 23 ++++++++----------- .../node_loader/source/node_loader_impl.cpp | 23 +++++++++++++++++++ 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml index c52e9053b..2cbe1634d 100644 --- a/.github/workflows/docker-hub.yml +++ b/.github/workflows/docker-hub.yml @@ -27,22 +27,17 @@ env: # - linux/loong64 PLATFORM_LIST: > [ - "linux/amd64" + "linux/amd64", + "linux/amd64/v2", + "linux/amd64/v3", + "linux/386", + "linux/arm64", + "linux/riscv64", + "linux/ppc64le", + "linux/arm/v7", + "linux/arm/v6" ] - - # [ - # "linux/amd64", - # "linux/amd64/v2", - # "linux/amd64/v3", - # "linux/386", - # "linux/arm64", - # "linux/riscv64", - # "linux/ppc64le", - # "linux/arm/v7", - # "linux/arm/v6" - # ] - jobs: matrix: name: Generate Platform List diff --git a/source/loaders/node_loader/source/node_loader_impl.cpp b/source/loaders/node_loader/source/node_loader_impl.cpp index adda1440f..8b3b45ad1 100644 --- a/source/loaders/node_loader/source/node_loader_impl.cpp +++ b/source/loaders/node_loader/source/node_loader_impl.cpp @@ -919,11 +919,34 @@ static detour_handle node_module_handle_a_handle = NULL; void node_loader_impl_register_linked_bindings() { + /* + * For now napi_module_register won't be deprecated: https://github.com/nodejs/node/issues/56153 + * If this changes, we can investigate the alternative approach. + */ +#if defined(_MSC_VER) + #pragma warning(push) + #pragma warning(disable : 4996) +#elif defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdeprecated-declarations" +#elif defined(__GNUC__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + /* Initialize Node Loader Trampoline */ node_loader_impl_register_module("node_loader_trampoline_module", node_loader_trampoline_initialize); /* Initialize Node Loader Port */ node_loader_impl_register_module("node_loader_port_module", node_loader_port_initialize); + +#if defined(_MSC_VER) + #pragma warning(pop) +#elif defined(__clang__) + #pragma clang diagnostic pop +#elif defined(__GNUC__) + #pragma GCC diagnostic pop +#endif } void node_loader_impl_exception(napi_env env, napi_status status) From e804bef14c6f9398e3d2b4fb7fc04888514211f5 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Fri, 25 Apr 2025 01:15:42 +0200 Subject: [PATCH 61/68] Solve issues with macos. --- source/tests/dynlink_test/CMakeLists.txt | 12 ++ .../dynlink_test/source/dynlink_test.cpp | 152 +++++++++--------- 2 files changed, 90 insertions(+), 74 deletions(-) diff --git a/source/tests/dynlink_test/CMakeLists.txt b/source/tests/dynlink_test/CMakeLists.txt index 1010f0fb9..ae0eabeee 100644 --- a/source/tests/dynlink_test/CMakeLists.txt +++ b/source/tests/dynlink_test/CMakeLists.txt @@ -97,6 +97,8 @@ target_link_libraries(${target} target_compile_definitions(${target} PRIVATE ${DEFAULT_COMPILE_DEFINITIONS} + + $<$,$>:DYNLINK_TEST_MOCK_LOADER> ) # @@ -137,6 +139,16 @@ add_test(NAME ${target} COMMAND $ ) +# +# Define dependencies +# + +if(OPTION_BUILD_LOADERS AND OPTION_BUILD_LOADERS_MOCK) + add_dependencies(${target} + mock_loader + ) +endif() + # # Define test labels # diff --git a/source/tests/dynlink_test/source/dynlink_test.cpp b/source/tests/dynlink_test/source/dynlink_test.cpp index e506c69fa..1ebd63613 100644 --- a/source/tests/dynlink_test/source/dynlink_test.cpp +++ b/source/tests/dynlink_test/source/dynlink_test.cpp @@ -28,7 +28,7 @@ #define DYNLINK_TEST_LIBRARY_PATH "DYNLINK_TEST_LIBRARY_PATH" -typedef const char *(*dynlink_print_func)(void); +typedef const char *(*mock_loader_print_func)(void); class dynlink_test : public testing::Test { @@ -60,52 +60,6 @@ TEST_F(dynlink_test, DefaultConstructor) log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object extension: %s", dynlink_extension()); -#if (!defined(NDEBUG) || defined(DEBUG) || defined(_DEBUG) || defined(__DEBUG) || defined(__DEBUG__)) - const char library_name[] = "dynlinkd"; -#else - const char library_name[] = "dynlink"; -#endif - - char *path = environment_variable_path_create(DYNLINK_TEST_LIBRARY_PATH, NULL, 0, NULL); - - ASSERT_NE((char *)path, (char *)NULL); - - /* Test library loading */ - { - dynlink handle = dynlink_load(path, library_name, DYNLINK_FLAGS_BIND_NOW | DYNLINK_FLAGS_BIND_GLOBAL); - - ASSERT_NE(handle, (dynlink)NULL); - - log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file: %s", dynlink_get_path(handle)); - - EXPECT_EQ((int)0, (int)strcmp(library_name, dynlink_get_name(handle))); - - if (handle != NULL) - { - dynlink_symbol_addr dynlink_print_info_addr; - - EXPECT_EQ((int)0, dynlink_symbol(handle, "dynlink_print_info", &dynlink_print_info_addr)); - - if (dynlink_print_info_addr != NULL) - { - dynlink_print_func print = (dynlink_print_func)dynlink_print_info_addr; - - log_write("metacall", LOG_LEVEL_DEBUG, "Print function: %p", (void *)print); - - log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)dynlink_print_info_addr); - - if (dynlink_print_info_addr != NULL) - { - log_write("metacall", LOG_LEVEL_DEBUG, "Pointer is valid"); - } - - log_write("metacall", LOG_LEVEL_DEBUG, "Print: %s", print()); - } - - dynlink_unload(handle); - } - } - /* Test loading symbols from current process */ { dynlink proc = dynlink_load_self(DYNLINK_FLAGS_BIND_GLOBAL | DYNLINK_FLAGS_BIND_LAZY); @@ -127,51 +81,101 @@ TEST_F(dynlink_test, DefaultConstructor) dynlink_unload(proc); /* Should do nothing except by freeing the handle */ } - /* Test loading symbols from absolute path */ +#ifdef DYNLINK_TEST_MOCK_LOADER { - char library_name_platform[PORTABILITY_PATH_SIZE]; - char absolute_path[PORTABILITY_PATH_SIZE]; + #if (!defined(NDEBUG) || defined(DEBUG) || defined(_DEBUG) || defined(__DEBUG) || defined(__DEBUG__)) + const char library_name[] = "mock_loaderd"; + #else + const char library_name[] = "mock_loader"; + #endif - dynlink_platform_name(library_name, library_name_platform); + char *path = environment_variable_path_create(DYNLINK_TEST_LIBRARY_PATH, NULL, 0, NULL); - portability_path_join(path, strlen(path) + 1, library_name_platform, strlen(library_name_platform) + 1, absolute_path, PORTABILITY_PATH_SIZE); + ASSERT_NE((char *)path, (char *)NULL); - dynlink handle = dynlink_load_absolute(absolute_path, DYNLINK_FLAGS_BIND_NOW | DYNLINK_FLAGS_BIND_GLOBAL); + /* Test library loading */ + { + dynlink handle = dynlink_load(path, library_name, DYNLINK_FLAGS_BIND_NOW | DYNLINK_FLAGS_BIND_GLOBAL); - ASSERT_NE(handle, (dynlink)NULL); + ASSERT_NE(handle, (dynlink)NULL); - log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object absolute path: %s", absolute_path); - log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file name: %s", dynlink_get_path(handle)); - log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file: %s", dynlink_get_name(handle)); + log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file: %s", dynlink_get_path(handle)); - EXPECT_EQ((int)0, (int)strcmp(absolute_path, dynlink_get_path(handle))); - EXPECT_EQ((int)0, (int)strcmp(library_name, dynlink_get_name(handle))); + EXPECT_EQ((int)0, (int)strcmp(library_name, dynlink_get_name(handle))); - if (handle != NULL) + if (handle != NULL) + { + dynlink_symbol_addr mock_loader_print_info_addr; + + EXPECT_EQ((int)0, dynlink_symbol(handle, "mock_loader_print_info", &mock_loader_print_info_addr)); + + if (mock_loader_print_info_addr != NULL) + { + mock_loader_print_func print = (mock_loader_print_func)mock_loader_print_info_addr; + + log_write("metacall", LOG_LEVEL_DEBUG, "Print function: %p", (void *)print); + + log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)mock_loader_print_info_addr); + + if (mock_loader_print_info_addr != NULL) + { + log_write("metacall", LOG_LEVEL_DEBUG, "Pointer is valid"); + } + + log_write("metacall", LOG_LEVEL_DEBUG, "Print: %s", print()); + } + + dynlink_unload(handle); + } + } + + /* Test loading symbols from absolute path */ { - dynlink_symbol_addr dynlink_print_info_addr; + char library_name_platform[PORTABILITY_PATH_SIZE]; + char absolute_path[PORTABILITY_PATH_SIZE]; - EXPECT_EQ((int)0, dynlink_symbol(handle, "dynlink_print_info", &dynlink_print_info_addr)); + dynlink_platform_name(library_name, library_name_platform); - if (dynlink_print_info_addr != NULL) - { - dynlink_print_func print = (dynlink_print_func)dynlink_print_info_addr; + portability_path_join(path, strlen(path) + 1, library_name_platform, strlen(library_name_platform) + 1, absolute_path, PORTABILITY_PATH_SIZE); - log_write("metacall", LOG_LEVEL_DEBUG, "Print function: %p", (void *)print); + dynlink handle = dynlink_load_absolute(absolute_path, DYNLINK_FLAGS_BIND_NOW | DYNLINK_FLAGS_BIND_GLOBAL); - log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)dynlink_print_info_addr); + ASSERT_NE(handle, (dynlink)NULL); - if (dynlink_print_info_addr != NULL) + log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object absolute path: %s", absolute_path); + log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file name: %s", dynlink_get_path(handle)); + log_write("metacall", LOG_LEVEL_DEBUG, "Dynamic linked shared object file: %s", dynlink_get_name(handle)); + + EXPECT_EQ((int)0, (int)strcmp(absolute_path, dynlink_get_path(handle))); + EXPECT_EQ((int)0, (int)strcmp(library_name, dynlink_get_name(handle))); + + if (handle != NULL) + { + dynlink_symbol_addr mock_loader_print_info_addr; + + EXPECT_EQ((int)0, dynlink_symbol(handle, "mock_loader_print_info", &mock_loader_print_info_addr)); + + if (mock_loader_print_info_addr != NULL) { - log_write("metacall", LOG_LEVEL_DEBUG, "Pointer is valid"); + mock_loader_print_func print = (mock_loader_print_func)mock_loader_print_info_addr; + + log_write("metacall", LOG_LEVEL_DEBUG, "Print function: %p", (void *)print); + + log_write("metacall", LOG_LEVEL_DEBUG, "Symbol pointer: %p", (void *)mock_loader_print_info_addr); + + if (mock_loader_print_info_addr != NULL) + { + log_write("metacall", LOG_LEVEL_DEBUG, "Pointer is valid"); + } + + log_write("metacall", LOG_LEVEL_DEBUG, "Print: %s", print()); } - log_write("metacall", LOG_LEVEL_DEBUG, "Print: %s", print()); + dynlink_unload(handle); } - - dynlink_unload(handle); } - } - environment_variable_path_destroy(path); + environment_variable_path_destroy(path); + } +#endif } From cb8429fc559e4a028441f7865bee0ed5e7e899ab Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Fri, 25 Apr 2025 17:21:31 +0200 Subject: [PATCH 62/68] Solved warnings, trying to mto make windows work. --- cmake/Warnings.cmake | 5 +- source/adt/source/adt_map.c | 8 +- source/adt/source/adt_set.c | 8 +- source/dynlink/source/dynlink.c | 2 +- source/loader/source/loader_host.c | 6 +- source/loader/source/loader_impl.c | 4 +- source/loaders/node_loader/CMakeLists.txt | 6 +- .../node_loader/source/node_loader_impl.cpp | 4 +- source/plugin/source/plugin_manager.c | 6 +- source/portability/CMakeLists.txt | 2 - .../portability/portability_dependency.h | 44 ---- .../portability/portability_library_path.h | 25 ++- .../source/portability_dependency.c | 135 ------------ .../source/portability_library_path.c | 194 +++++++++++++----- source/reflect/source/reflect_scope.c | 8 +- 15 files changed, 192 insertions(+), 265 deletions(-) delete mode 100644 source/portability/include/portability/portability_dependency.h delete mode 100644 source/portability/source/portability_dependency.c diff --git a/cmake/Warnings.cmake b/cmake/Warnings.cmake index 685d3b6a8..23f057afd 100644 --- a/cmake/Warnings.cmake +++ b/cmake/Warnings.cmake @@ -46,6 +46,7 @@ if(WARNINGS_ENABLED) # Define C compiler warning flags if("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang") + # TODO: Uncomment the rest of the warnings, enable Weverything for clang add_compile_options(-Wall) add_compile_options(-Wextra) add_compile_options(-Wunused) @@ -85,7 +86,7 @@ if(WARNINGS_ENABLED) string(REPLACE "/W1" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REPLACE "/W2" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REPLACE "/W3" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4 /Wall") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4") # /Wall set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CTR_NONSTDC_NO_WARNINGS=1") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CTR_SECURE_NO_WARNINGS=1") set(WARNINGS_C_AVAILABLE 1) @@ -105,7 +106,7 @@ if(WARNINGS_ENABLED) string(REPLACE "/W1" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") string(REPLACE "/W2" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") string(REPLACE "/W3" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /Wall") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") # /Wall set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D _CTR_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D _CTR_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D _CTR_NONSTDC_NO_WARNINGS=1") diff --git a/source/adt/source/adt_map.c b/source/adt/source/adt_map.c index 9f54b623f..4f28a10cb 100644 --- a/source/adt/source/adt_map.c +++ b/source/adt/source/adt_map.c @@ -239,9 +239,9 @@ vector map_get(map m, map_key key) { if (m != NULL && key != NULL) { - map_hash hash = m->hash_cb(key); + map_hash h = m->hash_cb(key); - size_t index = hash % m->capacity; + size_t index = h % m->capacity; bucket b = &m->buckets[index]; @@ -255,9 +255,9 @@ int map_contains(map m, map_key key) { if (m != NULL && key != NULL) { - map_hash hash = m->hash_cb(key); + map_hash h = m->hash_cb(key); - size_t index = hash % m->capacity; + size_t index = h % m->capacity; bucket b = &m->buckets[index]; diff --git a/source/adt/source/adt_set.c b/source/adt/source/adt_set.c index d7f38ea95..e54b8faee 100644 --- a/source/adt/source/adt_set.c +++ b/source/adt/source/adt_set.c @@ -256,9 +256,9 @@ set_value set_get(set s, set_key key) { if (s != NULL && key != NULL) { - set_hash hash = s->hash_cb(key); + set_hash h = s->hash_cb(key); - size_t index = hash % s->capacity; + size_t index = h % s->capacity; bucket b = &s->buckets[index]; @@ -277,9 +277,9 @@ int set_contains(set s, set_key key) { if (s != NULL && key != NULL) { - set_hash hash = s->hash_cb(key); + set_hash h = s->hash_cb(key); - size_t index = hash % s->capacity; + size_t index = h % s->capacity; bucket b = &s->buckets[index]; diff --git a/source/dynlink/source/dynlink.c b/source/dynlink/source/dynlink.c index 580cef521..216c18d37 100644 --- a/source/dynlink/source/dynlink.c +++ b/source/dynlink/source/dynlink.c @@ -240,7 +240,7 @@ int dynlink_library_path(const char *name, dynlink_path path, size_t *length) dynlink_impl_get_name(name, name_impl, PORTABILITY_PATH_SIZE); - if (portability_library_path(name_impl, path, length) != 0) + if (portability_library_path_find(name_impl, path, length) != 0) { return 1; } diff --git a/source/loader/source/loader_host.c b/source/loader/source/loader_host.c index 440e3d36a..7ddfb65a4 100644 --- a/source/loader/source/loader_host.c +++ b/source/loader/source/loader_host.c @@ -44,7 +44,7 @@ union loader_host_invoke_cast static value function_host_interface_invoke(function func, function_impl func_impl, function_args args, size_t size); -static function_return function_host_interface_await(function func, function_impl impl, function_args args, size_t size, function_resolve_callback resolve_callback, function_reject_callback reject_callback, void *context); +static function_return function_host_interface_await(function func, function_impl impl, function_args args, size_t size, function_resolve_callback resolve_callback, function_reject_callback reject_callback, void *ctx); static function_interface function_host_singleton(void); @@ -64,7 +64,7 @@ function_return function_host_interface_invoke(function func, function_impl func return invoke_cast.fn(size, args, data); } -function_return function_host_interface_await(function func, function_impl impl, function_args args, size_t size, function_resolve_callback resolve_callback, function_reject_callback reject_callback, void *context) +function_return function_host_interface_await(function func, function_impl impl, function_args args, size_t size, function_resolve_callback resolve_callback, function_reject_callback reject_callback, void *ctx) { /* TODO */ @@ -74,7 +74,7 @@ function_return function_host_interface_await(function func, function_impl impl, (void)size; (void)resolve_callback; (void)reject_callback; - (void)context; + (void)ctx; return NULL; } diff --git a/source/loader/source/loader_impl.c b/source/loader/source/loader_impl.c index 0221b4a5e..b08444d2c 100644 --- a/source/loader/source/loader_impl.c +++ b/source/loader/source/loader_impl.c @@ -36,7 +36,7 @@ #include -#include +#include #include #include @@ -457,7 +457,7 @@ int loader_impl_dependencies(loader_impl impl, detour d) return 1; } - if (portability_dependendency_iterate(&loader_impl_dependencies_self_list, (void *)dependencies_self) != 0) + if (portability_library_path_list(&loader_impl_dependencies_self_list, (void *)dependencies_self) != 0) { vector_destroy(dependencies_self); return 1; diff --git a/source/loaders/node_loader/CMakeLists.txt b/source/loaders/node_loader/CMakeLists.txt index 746b684ad..e76ed66f5 100644 --- a/source/loaders/node_loader/CMakeLists.txt +++ b/source/loaders/node_loader/CMakeLists.txt @@ -178,9 +178,9 @@ target_link_libraries(${target} PRIVATE ${META_PROJECT_NAME}::metacall # MetaCall library - # Delay load for MSVC - $<$:libnode2> - $<$:delayimp> + # Delay load for MSVC + $<$:${NodeJS_LIBRARY}> # NodeJS library + $<$:delayimp> PUBLIC ${DEFAULT_LIBRARIES} diff --git a/source/loaders/node_loader/source/node_loader_impl.cpp b/source/loaders/node_loader/source/node_loader_impl.cpp index 8b3b45ad1..3cdae12ad 100644 --- a/source/loaders/node_loader/source/node_loader_impl.cpp +++ b/source/loaders/node_loader/source/node_loader_impl.cpp @@ -49,7 +49,7 @@ extern char **environ; #include #if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER >= 1200) - #include + #include /* Required for the DelayLoad hook interposition, solves bug of NodeJS extensions requiring node.exe instead of node.dll*/ #include @@ -3701,7 +3701,7 @@ void *node_loader_impl_register(void *node_impl_ptr, void *env_ptr, void *functi /* As the library handle is correctly resolved here, either to executable, library of the executable, or the loader dependency we can directly obtain the handle of this dependency from a function pointer, use any function that is contained in node runtime, in this case we are using napi_create_array */ - if (!GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT | GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, &napi_create_array, &node_loader_node_dll_handle)) + if (!GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT | GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCSTR)&napi_create_array, &node_loader_node_dll_handle)) { napi_throw_type_error(env, nullptr, "Failed to initialize the hooking against node extensions load mechanism"); } diff --git a/source/plugin/source/plugin_manager.c b/source/plugin/source/plugin_manager.c index d0f92a36a..8f7f615a0 100644 --- a/source/plugin/source/plugin_manager.c +++ b/source/plugin/source/plugin_manager.c @@ -105,9 +105,9 @@ int plugin_manager_initialize(plugin_manager manager, const char *name, const ch /* Initialize the library path */ if (manager->library_path == NULL) { - const char name[] = "metacall" + const char library_name[] = "metacall" #if (!defined(NDEBUG) || defined(DEBUG) || defined(_DEBUG) || defined(__DEBUG) || defined(__DEBUG__)) - "d" + "d" #endif ; @@ -119,7 +119,7 @@ int plugin_manager_initialize(plugin_manager manager, const char *name, const ch * 2) Dynamic link library path of the host library * 3) Default compile time path */ - if (dynlink_library_path(name, path, &length) == 0) + if (dynlink_library_path(library_name, path, &length) == 0) { default_library_path = path; } diff --git a/source/portability/CMakeLists.txt b/source/portability/CMakeLists.txt index b6baba4a8..1855258d2 100644 --- a/source/portability/CMakeLists.txt +++ b/source/portability/CMakeLists.txt @@ -41,7 +41,6 @@ set(headers ${include_path}/portability_working_path.h ${include_path}/portability_path.h ${include_path}/portability_atexit.h - ${include_path}/portability_dependency.h ) set(sources @@ -51,7 +50,6 @@ set(sources ${source_path}/portability_working_path.c ${source_path}/portability_path.c ${source_path}/portability_atexit.c - ${source_path}/portability_dependency.c ) # Group source files diff --git a/source/portability/include/portability/portability_dependency.h b/source/portability/include/portability/portability_dependency.h deleted file mode 100644 index 2fbf4cce2..000000000 --- a/source/portability/include/portability/portability_dependency.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Portability Library by Parra Studios - * A generic cross-platform portability utility. - * - * Copyright (C) 2016 - 2025 Vicente Eduardo Ferrer Garcia - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef PORTABILITY_DEPENDENCY_H -#define PORTABILITY_DEPENDENCY_H 1 - -/* -- Headers -- */ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* -- Type Definitions -- */ - -typedef int (*portability_dependendency_iterate_cb)(const char *library, void *data); - -/* -- Methods -- */ - -int portability_dependendency_iterate(portability_dependendency_iterate_cb callback, void *data); - -#ifdef __cplusplus -} -#endif - -#endif /* PORTABILITY_DEPENDENCY_H */ diff --git a/source/portability/include/portability/portability_library_path.h b/source/portability/include/portability/portability_library_path.h index 5e266a5a3..5daee5b8d 100644 --- a/source/portability/include/portability/portability_library_path.h +++ b/source/portability/include/portability/portability_library_path.h @@ -27,13 +27,15 @@ #include +#ifdef __cplusplus +extern "C" { +#endif + /* -- Type Definitions -- */ typedef char portability_library_path_str[PORTABILITY_PATH_SIZE]; -#ifdef __cplusplus -extern "C" { -#endif +typedef int (*portability_library_path_list_cb)(const char *library, void *data); /* -- Methods -- */ @@ -53,7 +55,22 @@ extern "C" { * @return * Returns zero if it could find the path, different from zero if not found */ -PORTABILITY_API int portability_library_path(const char name[], portability_library_path_str path, size_t *length); +PORTABILITY_API int portability_library_path_find(const char name[], portability_library_path_str path, size_t *length); + +/** +* @brief +* List all the libraries loaded in the current process +* +* @param[in] callback +* Function pointer that will be called for each library loaded in the process +* +* @param[inout] data +* User defined data to pass to the callback +* +* @return +* Returns zero if it there is no error, different from zero on error +*/ +PORTABILITY_API int portability_library_path_list(portability_library_path_list_cb callback, void *data); #ifdef __cplusplus } diff --git a/source/portability/source/portability_dependency.c b/source/portability/source/portability_dependency.c deleted file mode 100644 index 55e633de4..000000000 --- a/source/portability/source/portability_dependency.c +++ /dev/null @@ -1,135 +0,0 @@ -/* - * MetaCall Library by Parra Studios - * A library for providing a foreign function interface calls. - * - * Copyright (C) 2016 - 2025 Vicente Eduardo Ferrer Garcia - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -/* -- Headers -- */ - -#include - -#include - -#if defined(linux) || defined(__linux__) || defined(__linux) || defined(__gnu_linux) || \ - defined(__FreeBSD__) - - #ifndef _GNU_SOURCE - #define _GNU_SOURCE - #endif - #include - -#elif (defined(__APPLE__) && defined(__MACH__)) || defined(__MACOSX__) - - #include - -#elif defined(WIN32) || defined(_WIN32) - - #include - #include - -#else - #error "Unsupported platform for portability_dependendency_iterate" -#endif - -#if defined(linux) || defined(__linux__) || defined(__linux) || defined(__gnu_linux) || \ - defined(__FreeBSD__) - -/* -- Type Definitions -- */ - -typedef struct portability_dependendency_iterate_phdr_type *portability_dependendency_iterate_phdr; - -/* -- Member Data -- */ - -struct portability_dependendency_iterate_phdr_type -{ - portability_dependendency_iterate_cb callback; - void *data; -}; - -/* -- Private Methods -- */ - -static int portability_dependendency_iterate_phdr_callback(struct dl_phdr_info *info, size_t size, void *data) -{ - portability_dependendency_iterate_phdr phdr = (portability_dependendency_iterate_phdr)data; - - (void)size; - - return phdr->callback(info->dlpi_name, phdr->data); -} - -#endif - -int portability_dependendency_iterate(portability_dependendency_iterate_cb callback, void *data) -{ - if (callback == NULL) - { - return 1; - } - -#if defined(linux) || defined(__linux__) || defined(__linux) || defined(__gnu_linux) || \ - defined(__FreeBSD__) - { - struct portability_dependendency_iterate_phdr_type phdr = { - callback, - data - }; - - return dl_iterate_phdr(&portability_dependendency_iterate_phdr_callback, (void *)&phdr); - } -#elif (defined(__APPLE__) && defined(__MACH__)) || defined(__MACOSX__) - { - uint32_t iterator, size = _dyld_image_count(); - - for (iterator = 0; iterator < size; ++iterator) - { - const char *image_name = _dyld_get_image_name(iterator); - - if (callback(image_name, data) != 0) - { - return 1; - } - } - - return 0; - } -#elif defined(WIN32) || defined(_WIN32) - { - HANDLE process = GetCurrentProcess(); - HMODULE modules[1024]; - DWORD modules_size; - - if (EnumProcessModules(process, modules, sizeof(modules), &modules_size)) - { - size_t iterator, size = modules_size / sizeof(HMODULE); - char module_name[MAX_PATH]; - - for (iterator = 0; i < size; ++iterator) - { - if (GetModuleFileNameExA(process, modules[iterator], module_name, sizeof(module_name) / sizeof(char))) - { - if (callback(module_name, data) != 0) - { - return 1; - } - } - } - } - - return 0; - } -#endif -} diff --git a/source/portability/source/portability_library_path.c b/source/portability/source/portability_library_path.c index 8bf167036..10e3ad64b 100644 --- a/source/portability/source/portability_library_path.c +++ b/source/portability/source/portability_library_path.c @@ -20,14 +20,14 @@ #include +#include #include -#define PORTABILITY_LIBRARY_PATH_SIZE (sizeof(portability_library_path_str) / sizeof(char)) - static int portability_library_path_ends_with(const char path[], const char name[]); #if defined(unix) || defined(__unix__) || defined(__unix) || \ - defined(linux) || defined(__linux__) || defined(__linux) || defined(__gnu_linux) + defined(linux) || defined(__linux__) || defined(__linux) || defined(__gnu_linux) || \ + defined(__FreeBSD__) #ifndef _GNU_SOURCE #define _GNU_SOURCE @@ -38,48 +38,20 @@ static int portability_library_path_ends_with(const char path[], const char name #include -struct phdr_callback_type -{ - const char *name; - char *path; - size_t length; -}; - -static int portability_library_path_phdr_callback(struct dl_phdr_info *info, size_t size, void *data) -{ - struct phdr_callback_type *cb = (struct phdr_callback_type *)data; - - (void)size; - - if (portability_library_path_ends_with(info->dlpi_name, cb->name) == 0) - { - cb->length = strnlen(info->dlpi_name, PORTABILITY_LIBRARY_PATH_SIZE); - - if (cb->length >= PORTABILITY_LIBRARY_PATH_SIZE) - { - return 2; - } - - memcpy(cb->path, info->dlpi_name, sizeof(char) * (cb->length + 1)); - - return 1; - } +#elif (defined(__APPLE__) && defined(__MACH__)) || defined(__MACOSX__) - return 0; -} + #include #elif defined(WIN32) || defined(_WIN32) || \ defined(__CYGWIN__) || defined(__CYGWIN32__) || \ defined(__MINGW32__) || defined(__MINGW64__) #define WIN32_LEAN_AND_MEAN - #include #include + #include -#elif (defined(__APPLE__) && defined(__MACH__)) || defined(__MACOSX__) - - #include - +#else + #error "Unsupported platform for portability_library_path" #endif int portability_library_path_ends_with(const char path[], const char name[]) @@ -95,18 +67,74 @@ int portability_library_path_ends_with(const char path[], const char name[]) return !(name_length <= path_length && strncmp(path + path_length - name_length, name, name_length) == 0); } -int portability_library_path(const char name[], portability_library_path_str path, size_t *length) +#if defined(unix) || defined(__unix__) || defined(__unix) || \ + defined(linux) || defined(__linux__) || defined(__linux) || defined(__gnu_linux) || \ + defined(__FreeBSD__) + +/* -- Type Definitions -- */ + +typedef struct portability_library_path_find_phdr_type *portability_library_path_find_phdr; +typedef struct portability_library_path_list_phdr_type *portability_library_path_list_phdr; + +/* -- Member Data -- */ + +struct portability_library_path_find_phdr_type +{ + const char *name; + char *path; + size_t length; +}; + +struct portability_library_path_list_phdr_type +{ + portability_library_path_list_cb callback; + void *data; +}; + +/* -- Private Methods -- */ + +static int portability_library_path_find_phdr_callback(struct dl_phdr_info *info, size_t size, void *data) +{ + portability_library_path_find_phdr find_phdr = (portability_library_path_find_phdr)data; + + (void)size; + + if (portability_library_path_ends_with(info->dlpi_name, find_phdr->name) == 0) + { + find_phdr->length = strnlen(info->dlpi_name, PORTABILITY_PATH_SIZE); + + memcpy(find_phdr->path, info->dlpi_name, sizeof(char) * (find_phdr->length + 1)); + + return 1; + } + + return 0; +} + +static int portability_library_path_list_phdr_callback(struct dl_phdr_info *info, size_t size, void *data) +{ + portability_library_path_list_phdr list_phdr = (portability_library_path_list_phdr)data; + + (void)size; + + return list_phdr->callback(info->dlpi_name, list_phdr->data); +} + +#endif + +int portability_library_path_find(const char name[], portability_library_path_str path, size_t *length) { #if defined(unix) || defined(__unix__) || defined(__unix) || \ - defined(linux) || defined(__linux__) || defined(__linux) || defined(__gnu_linux) + defined(linux) || defined(__linux__) || defined(__linux) || defined(__gnu_linux) || \ + defined(__FreeBSD__) - struct phdr_callback_type data = { + struct portability_library_path_find_phdr_type data = { name, path, 0 }; - if (dl_iterate_phdr(&portability_library_path_phdr_callback, (void *)&data) != 1) + if (dl_iterate_phdr(&portability_library_path_find_phdr_callback, (void *)&data) != 1) { return 1; } @@ -124,21 +152,21 @@ int portability_library_path(const char name[], portability_library_path_str pat HMODULE handle_modules[1024]; HANDLE handle_process = GetCurrentProcess(); - DWORD cb_needed; + DWORD modules_size; - if (EnumProcessModules(handle_process, handle_modules, sizeof(handle_modules), &cb_needed)) + if (EnumProcessModules(handle_process, handle_modules, sizeof(handle_modules), &modules_size)) { - size_t iterator; + size_t iterator, size = modules_size / sizeof(HMODULE); - for (iterator = 0; iterator < (cb_needed / sizeof(HMODULE)); ++iterator) + for (iterator = 0; iterator < size; ++iterator) { - if (GetModuleFileNameEx(handle_process, handle_modules[iterator], path, PORTABILITY_LIBRARY_PATH_SIZE)) + if (GetModuleFileNameEx(handle_process, handle_modules[iterator], path, PORTABILITY_PATH_SIZE)) { if (portability_library_path_ends_with(path, name) == 0) { if (length != NULL) { - *length = strnlen(path, PORTABILITY_LIBRARY_PATH_SIZE); + *length = strnlen(path, PORTABILITY_PATH_SIZE); } return 0; @@ -153,10 +181,10 @@ int portability_library_path(const char name[], portability_library_path_str pat static const char dylib_suffix[] = "dylib"; uint32_t image_index, size = _dyld_image_count(); - size_t name_length = strnlen(name, PORTABILITY_LIBRARY_PATH_SIZE); + size_t name_length = strnlen(name, PORTABILITY_PATH_SIZE); size_t name_dylib_length = name_length + 3; - if (portability_library_path_ends_with(name, "so") == 0 && name_dylib_length < PORTABILITY_LIBRARY_PATH_SIZE) + if (portability_library_path_ends_with(name, "so") == 0 && name_dylib_length < PORTABILITY_PATH_SIZE) { memcpy(path, name, sizeof(char) * (name_length - 2)); memcpy(path, dylib_suffix, sizeof(dylib_suffix)); @@ -168,9 +196,9 @@ int portability_library_path(const char name[], portability_library_path_str pat if (portability_library_path_ends_with(image_name, path) == 0) { - size_t image_length = strnlen(image_name, PORTABILITY_LIBRARY_PATH_SIZE); + size_t image_length = strnlen(image_name, PORTABILITY_PATH_SIZE); - if (image_length >= PORTABILITY_LIBRARY_PATH_SIZE) + if (image_length >= PORTABILITY_PATH_SIZE) { return 1; } @@ -189,7 +217,69 @@ int portability_library_path(const char name[], portability_library_path_str pat return 1; #else - /* Not supported */ - return 1; + #error "Unsupported platform for portability_library_path" +#endif +} + +int portability_library_path_list(portability_library_path_list_cb callback, void *data) +{ + if (callback == NULL) + { + return 1; + } + +#if defined(linux) || defined(__linux__) || defined(__linux) || defined(__gnu_linux) || \ + defined(__FreeBSD__) + { + struct portability_library_path_list_phdr_type list_phdr = { + callback, + data + }; + + return dl_iterate_phdr(&portability_library_path_list_phdr_callback, (void *)&list_phdr); + } +#elif (defined(__APPLE__) && defined(__MACH__)) || defined(__MACOSX__) + { + uint32_t iterator, size = _dyld_image_count(); + + for (iterator = 0; iterator < size; ++iterator) + { + const char *image_name = _dyld_get_image_name(iterator); + + if (callback(image_name, data) != 0) + { + return 1; + } + } + + return 0; + } +#elif defined(WIN32) || defined(_WIN32) + { + HANDLE process = GetCurrentProcess(); + HMODULE modules[1024]; + DWORD modules_size; + + if (EnumProcessModules(process, modules, sizeof(modules), &modules_size)) + { + size_t iterator, size = modules_size / sizeof(HMODULE); + char module_name[MAX_PATH]; + + for (iterator = 0; iterator < size; ++iterator) + { + if (GetModuleFileNameExA(process, modules[iterator], module_name, sizeof(module_name) / sizeof(char))) + { + if (callback(module_name, data) != 0) + { + return 1; + } + } + } + } + + return 0; + } +#else + #error "Unsupported platform for portability_library_path" #endif } diff --git a/source/reflect/source/reflect_scope.c b/source/reflect/source/reflect_scope.c index a8fbe4944..3942bb8ee 100644 --- a/source/reflect/source/reflect_scope.c +++ b/source/reflect/source/reflect_scope.c @@ -200,17 +200,17 @@ int scope_metadata_array_cb_iterate(set s, set_key key, set_value val, set_cb_it (void)s; (void)key; - int type_id = value_type_id(val); + type_id id = value_type_id(val); - if (type_id == TYPE_FUNCTION) + if (id == TYPE_FUNCTION) { metadata_iterator->functions[metadata_iterator->functions_size++] = function_metadata(value_to_function(val)); } - else if (type_id == TYPE_CLASS) + else if (id == TYPE_CLASS) { metadata_iterator->classes[metadata_iterator->classes_size++] = class_metadata(value_to_class(val)); } - else if (type_id == TYPE_OBJECT) + else if (id == TYPE_OBJECT) { metadata_iterator->objects[metadata_iterator->objects_size++] = object_metadata(value_to_object(val)); } From 94d33827a623f699191466a942873e1174bf0c80 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Mon, 5 May 2025 22:35:24 +0200 Subject: [PATCH 63/68] Solve issues in detours and node loader for windows. --- source/detour/include/detour/detour.h | 4 ++-- source/loaders/node_loader/source/node_loader_impl.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/detour/include/detour/detour.h b/source/detour/include/detour/detour.h index fd0cc20a1..9eb8d50fc 100644 --- a/source/detour/include/detour/detour.h +++ b/source/detour/include/detour/detour.h @@ -158,7 +158,7 @@ DETOUR_API int detour_enumerate(detour d, detour_handle handle, unsigned int *po * Return zero if success, different from zero otherwise * */ -int detour_replace(detour d, detour_handle handle, const char *function_name, void (*function_addr)(void), void (**function_trampoline)(void)); +DETOUR_API int detour_replace(detour d, detour_handle handle, const char *function_name, void (*function_addr)(void), void (**function_trampoline)(void)); /** * @brief @@ -171,7 +171,7 @@ int detour_replace(detour d, detour_handle handle, const char *function_name, vo * Reference to the detour handle * */ -void detour_unload(detour d, detour_handle handle); +DETOUR_API void detour_unload(detour d, detour_handle handle); /** * @brief diff --git a/source/loaders/node_loader/source/node_loader_impl.cpp b/source/loaders/node_loader/source/node_loader_impl.cpp index 3cdae12ad..1192a4b65 100644 --- a/source/loaders/node_loader/source/node_loader_impl.cpp +++ b/source/loaders/node_loader/source/node_loader_impl.cpp @@ -4069,7 +4069,7 @@ napi_value node_loader_impl_register_bootstrap_startup(loader_impl_node node_imp argv[3] = node_loader_trampoline_initialize_object(env); /* Set the values */ - for (size_t iterator = 0; iterator < 4; ++iterator) + for (uint32_t iterator = 0; iterator < 4; ++iterator) { status = napi_set_element(env, v, iterator, argv[iterator]); node_loader_impl_exception(env, status); From 1a6066586454b090f07bd41cb282cc5c0265fe6c Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Mon, 5 May 2025 23:16:50 +0200 Subject: [PATCH 64/68] Solve issues of gtest in windows. --- cmake/InstallGTest.cmake | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/cmake/InstallGTest.cmake b/cmake/InstallGTest.cmake index 6f03ef2fc..fa555b16b 100644 --- a/cmake/InstallGTest.cmake +++ b/cmake/InstallGTest.cmake @@ -65,17 +65,11 @@ if(NOT GTEST_FOUND OR USE_BUNDLED_GTEST) set(GTEST_LIB_SUFFIX "lib") set(GTEST_LIBS_DIR "${binary_dir}/lib/${CMAKE_BUILD_TYPE}") set(GMOCK_LIBS_DIR "${binary_dir}/lib/${CMAKE_BUILD_TYPE}") - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(GTEST_LIB_DEBUG "d") - else() - set(GTEST_LIB_DEBUG "") - endif() else() set(GTEST_LIB_PREFIX "lib") set(GTEST_LIB_SUFFIX "a") set(GTEST_LIBS_DIR "${binary_dir}/lib") set(GMOCK_LIBS_DIR "${binary_dir}/lib") - set(GTEST_LIB_DEBUG "") endif() # Define Paths @@ -85,11 +79,11 @@ if(NOT GTEST_FOUND OR USE_BUNDLED_GTEST) ) set(GTEST_LIBRARY - "${GTEST_LIBS_DIR}/${GTEST_LIB_PREFIX}gtest${GTEST_LIB_DEBUG}.${GTEST_LIB_SUFFIX}" + "${GTEST_LIBS_DIR}/${GTEST_LIB_PREFIX}gtest.${GTEST_LIB_SUFFIX}" ) set(GMOCK_LIBRARY - "${GMOCK_LIBS_DIR}/${GTEST_LIB_PREFIX}gmock${GTEST_LIB_DEBUG}.${GTEST_LIB_SUFFIX}" + "${GMOCK_LIBS_DIR}/${GTEST_LIB_PREFIX}gmock.${GTEST_LIB_SUFFIX}" ) set(GTEST_LIBRARIES From 9c894ecbb9f6750b00e0c3c9c81b6b9776000c23 Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Tue, 6 May 2025 00:23:55 +0200 Subject: [PATCH 65/68] Trying to solve issue of windows dlls. --- source/loader/include/loader/loader_impl.h | 2 ++ source/loader/source/loader_impl.c | 7 +++++++ .../node_loader/source/node_loader_impl.cpp | 14 +++++++++----- source/metacall/include/metacall/metacall_link.h | 2 +- source/metacall/source/metacall_link.c | 2 +- .../node_extension_test_win32_delay_load.cpp | 4 +++- 6 files changed, 23 insertions(+), 8 deletions(-) diff --git a/source/loader/include/loader/loader_impl.h b/source/loader/include/loader/loader_impl.h index 44b242928..e116a001e 100644 --- a/source/loader/include/loader/loader_impl.h +++ b/source/loader/include/loader/loader_impl.h @@ -49,6 +49,8 @@ LOADER_API int loader_impl_dependencies(loader_impl impl, detour d); LOADER_API int loader_impl_link(plugin p, loader_impl impl); +LOADER_API dynlink loader_impl_dependency(loader_impl impl, const char *library); + LOADER_API detour_handle loader_impl_detour(loader_impl impl, const char *library, int (*load_cb)(detour, detour_handle)); LOADER_API void loader_impl_attach(loader_impl impl, plugin p); diff --git a/source/loader/source/loader_impl.c b/source/loader/source/loader_impl.c index b08444d2c..dc1cabe9b 100644 --- a/source/loader/source/loader_impl.c +++ b/source/loader/source/loader_impl.c @@ -559,6 +559,13 @@ int loader_impl_link(plugin p, loader_impl impl) return 0; } +dynlink loader_impl_dependency(loader_impl impl, const char *library) +{ + dynlink library_handle = set_get(impl->library_map, (const set_key)library); + + return library_handle; +} + detour_handle loader_impl_detour(loader_impl impl, const char *library, int (*load_cb)(detour, detour_handle)) { detour_handle handle = set_get(impl->detour_map, (const set_key)library); diff --git a/source/loaders/node_loader/source/node_loader_impl.cpp b/source/loaders/node_loader/source/node_loader_impl.cpp index 1192a4b65..42593db02 100644 --- a/source/loaders/node_loader/source/node_loader_impl.cpp +++ b/source/loaders/node_loader/source/node_loader_impl.cpp @@ -3699,11 +3699,15 @@ void *node_loader_impl_register(void *node_impl_ptr, void *env_ptr, void *functi #if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER >= 1200) { /* As the library handle is correctly resolved here, either to executable, library of the executable, - or the loader dependency we can directly obtain the handle of this dependency from a function pointer, - use any function that is contained in node runtime, in this case we are using napi_create_array */ - if (!GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT | GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCSTR)&napi_create_array, &node_loader_node_dll_handle)) + or the loader dependency we can directly get the handle of this dependency */ + dynlink node_library = loader_impl_dependency(node_impl->impl, "node"); + + node_loader_node_dll_handle = dynlink_get_impl(node_library); + + if (node_loader_node_dll_handle == NULL) { - napi_throw_type_error(env, nullptr, "Failed to initialize the hooking against node extensions load mechanism"); + napi_throw_error(env, nullptr, "Failed to initialize the hooking against node extensions load mechanism"); + return NULL; } detour d = detour_create(metacall_detour()); @@ -4032,7 +4036,7 @@ loader_impl_data node_loader_impl_initialize(loader_impl impl, configuration con /* Result will never be defined properly */ node_impl->result = 0; - if (metacall_link_register_impl(impl, "node", "napi_register_module_v1", (void (*)(void))(&node_loader_port_initialize)) != 0) + if (metacall_link_register_loader(impl, "node", "napi_register_module_v1", (void (*)(void))(&node_loader_port_initialize)) != 0) { log_write("metacall", LOG_LEVEL_ERROR, "Node Loader failed to hook napi_register_module_v1"); } diff --git a/source/metacall/include/metacall/metacall_link.h b/source/metacall/include/metacall/metacall_link.h index 5012810fe..4e023d090 100644 --- a/source/metacall/include/metacall/metacall_link.h +++ b/source/metacall/include/metacall/metacall_link.h @@ -92,7 +92,7 @@ METACALL_API int metacall_link_register(const char *tag, const char *library, co * @return * Zero if success, different from zero otherwise */ -METACALL_API int metacall_link_register_impl(void *loader, const char *library, const char *symbol, void (*fn)(void)); +METACALL_API int metacall_link_register_loader(void *loader, const char *library, const char *symbol, void (*fn)(void)); /** * @brief diff --git a/source/metacall/source/metacall_link.c b/source/metacall/source/metacall_link.c index f9be11696..cc261644e 100644 --- a/source/metacall/source/metacall_link.c +++ b/source/metacall/source/metacall_link.c @@ -187,7 +187,7 @@ int metacall_link_register(const char *tag, const char *library, const char *sym return set_insert(metacall_link_table, (set_key)symbol, ptr); } -int metacall_link_register_impl(void *loader, const char *library, const char *symbol, void (*fn)(void)) +int metacall_link_register_loader(void *loader, const char *library, const char *symbol, void (*fn)(void)) { void *ptr; diff --git a/source/tests/metacall_node_extension_test/node_extension_test/source/node_extension_test_win32_delay_load.cpp b/source/tests/metacall_node_extension_test/node_extension_test/source/node_extension_test_win32_delay_load.cpp index a19afc563..fc968f846 100644 --- a/source/tests/metacall_node_extension_test/node_extension_test/source/node_extension_test_win32_delay_load.cpp +++ b/source/tests/metacall_node_extension_test/node_extension_test/source/node_extension_test_win32_delay_load.cpp @@ -29,6 +29,8 @@ #include #include +static const char node_library_name[] = NODEJS_LIBRARY_NAME; + static FARPROC WINAPI load_exe_hook(unsigned int event, DelayLoadInfo *info) { HMODULE m; @@ -38,7 +40,7 @@ static FARPROC WINAPI load_exe_hook(unsigned int event, DelayLoadInfo *info) return NULL; } - if (_stricmp(info->szDll, NODEJS_LIBRARY_NAME) != 0) + if (_stricmp(info->szDll, node_library_name) != 0) { return NULL; } From aed631e9cedd676b1c410a1d0764a515fbaf11ee Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Tue, 6 May 2025 00:46:31 +0200 Subject: [PATCH 66/68] Solve issue in windows. --- source/loaders/node_loader/source/node_loader_impl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/loaders/node_loader/source/node_loader_impl.cpp b/source/loaders/node_loader/source/node_loader_impl.cpp index 42593db02..77e66b08a 100644 --- a/source/loaders/node_loader/source/node_loader_impl.cpp +++ b/source/loaders/node_loader/source/node_loader_impl.cpp @@ -3702,7 +3702,7 @@ void *node_loader_impl_register(void *node_impl_ptr, void *env_ptr, void *functi or the loader dependency we can directly get the handle of this dependency */ dynlink node_library = loader_impl_dependency(node_impl->impl, "node"); - node_loader_node_dll_handle = dynlink_get_impl(node_library); + node_loader_node_dll_handle = static_cast(dynlink_get_impl(node_library)); if (node_loader_node_dll_handle == NULL) { From 28bae5b8d4a2ce21252057cae445f0b03b505bfe Mon Sep 17 00:00:00 2001 From: Vicente Eduardo Ferrer Garcia Date: Wed, 7 May 2025 17:35:18 +0200 Subject: [PATCH 67/68] Solved bugs. --- source/loader/include/loader/loader.h | 6 +- source/loader/include/loader/loader_impl.h | 2 +- source/loader/source/loader.c | 65 +++++----- source/loader/source/loader_impl.c | 19 +-- source/metacall/source/metacall.c | 18 +-- source/portability/source/portability_path.c | 6 +- .../source/portability_path_test.cpp | 114 +++++++++++------- 7 files changed, 119 insertions(+), 111 deletions(-) diff --git a/source/loader/include/loader/loader.h b/source/loader/include/loader/loader.h index 8fe36fd1e..441cc938e 100644 --- a/source/loader/include/loader/loader.h +++ b/source/loader/include/loader/loader.h @@ -51,8 +51,6 @@ LOADER_API void loader_initialization_register(loader_impl impl); LOADER_API int loader_initialize(void); -LOADER_NO_EXPORT int loader_initialize_host(const loader_tag tag); - LOADER_API int loader_is_initialized(const loader_tag tag); LOADER_API int loader_register(const char *name, loader_register_invoke invoke, function *func, type_id return_type, size_t arg_size, type_id args_type_id[]); @@ -83,14 +81,12 @@ LOADER_API loader_data loader_get(const char *name); LOADER_API void *loader_get_handle(const loader_tag tag, const char *name); -LOADER_API void loader_set_options(const loader_tag tag, void *options); +LOADER_API int loader_set_options(const loader_tag tag, value options); LOADER_API value loader_get_options(const loader_tag tag); LOADER_API value loader_get_option(const loader_tag tag, const char *field); -LOADER_API int loader_get_option_host(const loader_tag tag); - LOADER_API int loader_handle_initialize(loader_impl impl, const loader_path name, void **handle_ptr); LOADER_API const char *loader_handle_id(void *handle); diff --git a/source/loader/include/loader/loader_impl.h b/source/loader/include/loader/loader_impl.h index e116a001e..6f3691d8f 100644 --- a/source/loader/include/loader/loader_impl.h +++ b/source/loader/include/loader/loader_impl.h @@ -77,7 +77,7 @@ LOADER_API int loader_impl_load_from_package(plugin_manager manager, plugin p, l LOADER_API void *loader_impl_get_handle(loader_impl impl, const char *name); -LOADER_API void loader_impl_set_options(loader_impl impl, void *options); +LOADER_API void loader_impl_set_options(loader_impl impl, value options); LOADER_API value loader_impl_get_options(loader_impl impl); diff --git a/source/loader/source/loader.c b/source/loader/source/loader.c index b4b13e5df..0c055b01c 100644 --- a/source/loader/source/loader.c +++ b/source/loader/source/loader.c @@ -74,6 +74,8 @@ static void loader_initialization_register_plugin(plugin p); static plugin loader_get_impl_plugin(const loader_tag tag); +static plugin loader_get_impl_plugin_options(const loader_tag tag, value options); + static int loader_get_cb_iterate(plugin_manager manager, plugin p, void *data); static int loader_metadata_cb_iterate(plugin_manager manager, plugin p, void *data); @@ -202,29 +204,6 @@ void loader_initialization_register_plugin(plugin p) } } -int loader_initialize_host(const loader_tag tag) -{ - plugin p = plugin_manager_get(&loader_manager, tag); - - if (p == NULL) - { - return 1; - } - - if (loader_impl_initialize(&loader_manager, p, plugin_impl_type(p, loader_impl)) != 0) - { - return 1; - } - else - { - loader_manager_impl manager_impl = plugin_manager_impl_type(&loader_manager, loader_manager_impl); - - manager_impl->host = p; - - return 0; - } -} - int loader_is_initialized(const loader_tag tag) { plugin p = plugin_manager_get(&loader_manager, tag); @@ -267,21 +246,31 @@ detour_handle loader_hook_impl(void *impl, const char *library, int (*load_cb)(d } plugin loader_get_impl_plugin(const loader_tag tag) +{ + return loader_get_impl_plugin_options(tag, NULL); +} + +plugin loader_get_impl_plugin_options(const loader_tag tag, value options) { plugin p = plugin_manager_get(&loader_manager, tag); + loader_impl impl; + if (p != NULL) { return p; } - loader_impl impl = loader_impl_create(tag); + impl = loader_impl_create(tag); if (impl == NULL) { goto loader_create_error; } + /* Define the options */ + loader_impl_set_options(impl, options); + /* Dynamic link loader dependencies if it is not host */ if (loader_impl_dependencies(impl, plugin_manager_impl_type(&loader_manager, loader_manager_impl)->d) != 0) { @@ -305,6 +294,21 @@ plugin loader_get_impl_plugin(const loader_tag tag) /* Store in the loader implementation the reference to the plugin which belongs to */ loader_impl_attach(impl, p); + /* Check if it is host, initialize it and set it as host */ + if (options != NULL && loader_impl_get_option_host(impl) == 1) + { + loader_manager_impl manager_impl; + + if (loader_impl_initialize(&loader_manager, p, plugin_impl_type(p, loader_impl)) != 0) + { + goto plugin_manager_create_error; + } + + manager_impl = plugin_manager_impl_type(&loader_manager, loader_manager_impl); + + manager_impl->host = p; + } + /* TODO: Disable logs here until log is completely thread safe and async signal safe */ /* log_write("metacall", LOG_LEVEL_DEBUG, "Created loader (%s) implementation <%p>", tag, (void *)impl); */ @@ -594,11 +598,11 @@ void *loader_get_handle(const loader_tag tag, const char *name) return loader_impl_get_handle(plugin_impl_type(p, loader_impl), name); } -void loader_set_options(const loader_tag tag, void *options) +int loader_set_options(const loader_tag tag, value options) { - plugin p = loader_get_impl_plugin(tag); + plugin p = loader_get_impl_plugin_options(tag, options); - loader_impl_set_options(plugin_impl_type(p, loader_impl), options); + return (p == NULL); } value loader_get_options(const loader_tag tag) @@ -615,13 +619,6 @@ value loader_get_option(const loader_tag tag, const char *field) return loader_impl_get_option(plugin_impl_type(p, loader_impl), field); } -int loader_get_option_host(const loader_tag tag) -{ - plugin p = loader_get_impl_plugin(tag); - - return loader_impl_get_option_host(plugin_impl_type(p, loader_impl)); -} - int loader_handle_initialize(loader_impl impl, const loader_path name, void **handle_ptr) { if (loader_initialize() == 1) diff --git a/source/loader/source/loader_impl.c b/source/loader/source/loader_impl.c index dc1cabe9b..5eef78140 100644 --- a/source/loader/source/loader_impl.c +++ b/source/loader/source/loader_impl.c @@ -326,7 +326,7 @@ int loader_impl_dependencies_self_list(const char *library, void *data) vector_push_back_empty(dependencies_self); - strncpy(vector_back(dependencies_self), library, strnlen(library, PORTABILITY_PATH_SIZE)); + strncpy(vector_back(dependencies_self), library, strnlen(library, PORTABILITY_PATH_SIZE) + 1); return 0; } @@ -1457,7 +1457,7 @@ void *loader_impl_get_handle(loader_impl impl, const char *name) return NULL; } -void loader_impl_set_options(loader_impl impl, void *options) +void loader_impl_set_options(loader_impl impl, value options) { if (impl != NULL && options != NULL) { @@ -1923,14 +1923,15 @@ void loader_impl_destroy_deallocate(loader_impl impl) set_destroy(impl->detour_map); - /* TODO: I am not sure this will work. - This must be done when the plugin handle (aka the loader) gets unloaded, - at this point it is not unloaded yet, because the plugin destructor is called before doing: - dynlink_unload(p->descriptor->handle); - In theory it should work because normally those handles are reference counted but "I don't trust like that". + /* Unload all the dependencies. + This must be done when the plugin dynlink handle (aka the loader) gets unloaded, + at this point it is not unloaded yet, because the plugin destructor is called before doing: + dynlink_unload(p->descriptor->handle); + As the destroy mechanism requires the loaders to be unloaded at the end after all the destroy methods of all + loaders have been called, this generates an ourobros that cannot be solved easily. In any case, + this method still should work because normally those handles are reference counted and we increment + the reference counter at the beginning, so they will be properly unloaded when the dynlink handle gets unloaded. */ - - /* Unload all the dependencies when everything has been destroyed and the loader is unloaded */ set_iterate(impl->library_map, &loader_impl_destroy_dependencies_map_cb_iterate, NULL); set_destroy(impl->library_map); diff --git a/source/metacall/source/metacall.c b/source/metacall/source/metacall.c index c865e1ccd..fcba2931a 100644 --- a/source/metacall/source/metacall.c +++ b/source/metacall/source/metacall.c @@ -346,26 +346,12 @@ int metacall_initialize_ex(struct metacall_initialize_configuration_type initial while (!(initialize_config[index].tag == NULL && initialize_config[index].options == NULL)) { - loader_impl impl = loader_get_impl(initialize_config[index].tag); - - if (impl == NULL) + if (loader_set_options(initialize_config[index].tag, initialize_config[index].options) != 0) { - log_write("metacall", LOG_LEVEL_ERROR, "MetaCall failed to find '%s_loader'", initialize_config[index].tag); + log_write("metacall", LOG_LEVEL_ERROR, "MetaCall failed to set options of '%s_loader'", initialize_config[index].tag); return 1; } - loader_set_options(initialize_config[index].tag, initialize_config[index].options); - - /* If we are initializing a loader as a host, we must initialize it */ - if (loader_get_option_host(initialize_config[index].tag)) - { - if (loader_initialize_host(initialize_config[index].tag) != 0) - { - log_write("metacall", LOG_LEVEL_ERROR, "MetaCall failed to initialize '%s_loader' as host", initialize_config[index].tag); - return 1; - } - } - ++index; } diff --git a/source/portability/source/portability_path.c b/source/portability/source/portability_path.c index ea96ca764..9606a7d69 100644 --- a/source/portability/source/portability_path.c +++ b/source/portability/source/portability_path.c @@ -27,13 +27,13 @@ size_t portability_path_get_name(const char *path, size_t path_size, char *name, size_t name_size) { + size_t i, count, last; + if (path == NULL || name == NULL) { return 0; } - size_t i, count, last; - for (i = 0, count = 0, last = 0; path[i] != '\0' && i < path_size && count < name_size; ++i) { name[count++] = path[i]; @@ -63,7 +63,7 @@ size_t portability_path_get_name(const char *path, size_t path_size, char *name, } } - if (last == 0 && count > 1) + if ((last == 0 && count > 1) || last > count) { last = count; } diff --git a/source/tests/portability_path_test/source/portability_path_test.cpp b/source/tests/portability_path_test/source/portability_path_test.cpp index c8b4dccc5..15534b235 100644 --- a/source/tests/portability_path_test/source/portability_path_test.cpp +++ b/source/tests/portability_path_test/source/portability_path_test.cpp @@ -33,7 +33,7 @@ TEST_F(portability_path_test, portability_path_test_path_get_module_name) size_t size = portability_path_get_module_name(base, sizeof(base), extension, sizeof(extension), name, NAME_SIZE); - EXPECT_EQ((int)0, (int)strcmp(name, result)); + EXPECT_STREQ(name, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -48,7 +48,7 @@ TEST_F(portability_path_test, portability_path_test_path_get_module_name_without size_t size = portability_path_get_module_name(base, sizeof(base), extension, sizeof(extension), name, NAME_SIZE); - EXPECT_EQ((int)0, (int)strcmp(name, result)); + EXPECT_STREQ(name, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -63,7 +63,7 @@ TEST_F(portability_path_test, portability_path_test_path_get_module_name_with_ra size_t size = portability_path_get_module_name(base, sizeof(base), extension, sizeof(extension), name, NAME_SIZE); - EXPECT_EQ((int)0, (int)strcmp(name, result)); + EXPECT_STREQ(name, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -77,7 +77,7 @@ TEST_F(portability_path_test, portability_path_test_path_get_name) size_t size = portability_path_get_name(base, sizeof(base), name, NAME_SIZE); - EXPECT_EQ((int)0, (int)strcmp(name, result)); + EXPECT_STREQ(name, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -91,7 +91,7 @@ TEST_F(portability_path_test, portability_path_test_path_get_name_end_dot) size_t size = portability_path_get_name(base, sizeof(base), name, NAME_SIZE); - EXPECT_EQ((int)0, (int)strcmp(name, result)); + EXPECT_STREQ(name, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -105,7 +105,21 @@ TEST_F(portability_path_test, portability_path_test_path_get_name_without_dot) size_t size = portability_path_get_name(base, sizeof(base), name, NAME_SIZE); - EXPECT_EQ((int)0, (int)strcmp(name, result)); + EXPECT_STREQ(name, result); + EXPECT_EQ((size_t)size, (size_t)sizeof(result)); + EXPECT_EQ((char)'\0', (char)result[size - 1]); +} + +TEST_F(portability_path_test, portability_path_test_path_get_name_only_separator_dot) +{ + static const char base[] = "/."; + static const char result[] = ""; + + string_name name; + + size_t size = portability_path_get_name(base, sizeof(base), name, NAME_SIZE); + + EXPECT_STREQ(name, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -119,7 +133,7 @@ TEST_F(portability_path_test, portability_path_test_path_get_name_only_dot) size_t size = portability_path_get_name(base, sizeof(base), name, NAME_SIZE); - EXPECT_EQ((int)0, (int)strcmp(name, result)); + EXPECT_STREQ(name, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -133,7 +147,7 @@ TEST_F(portability_path_test, portability_path_test_path_get_name_two_dots) size_t size = portability_path_get_name(base, sizeof(base), name, NAME_SIZE); - EXPECT_EQ((int)0, (int)strcmp(name, result)); + EXPECT_STREQ(name, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -147,7 +161,7 @@ TEST_F(portability_path_test, portability_path_test_path_get_name_three_dots) size_t size = portability_path_get_name(base, sizeof(base), name, NAME_SIZE); - EXPECT_EQ((int)0, (int)strcmp(name, result)); + EXPECT_STREQ(name, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -161,7 +175,7 @@ TEST_F(portability_path_test, portability_path_test_path_get_name_only_extension size_t size = portability_path_get_name(base, sizeof(base), name, NAME_SIZE); - EXPECT_EQ((int)0, (int)strcmp(name, result)); + EXPECT_STREQ(name, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -175,7 +189,7 @@ TEST_F(portability_path_test, portability_path_test_path_get_name_double_extensi size_t size = portability_path_get_name(base, sizeof(base), name, NAME_SIZE); - EXPECT_EQ((int)0, (int)strcmp(name, result)); + EXPECT_STREQ(name, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -189,7 +203,21 @@ TEST_F(portability_path_test, portability_path_test_path_get_name_triple_extensi size_t size = portability_path_get_name(base, sizeof(base), name, NAME_SIZE); - EXPECT_EQ((int)0, (int)strcmp(name, result)); + EXPECT_STREQ(name, result); + EXPECT_EQ((size_t)size, (size_t)sizeof(result)); + EXPECT_EQ((char)'\0', (char)result[size - 1]); +} + +TEST_F(portability_path_test, portability_path_test_path_get_name_nullchar) +{ + static const char base[] = "/home/yeet/.nvm/versions/node/v18.20.3/bin/node"; + static const char result[] = "node"; + + string_name name; + + size_t size = portability_path_get_name(base, sizeof(base), name, NAME_SIZE); + + EXPECT_STREQ(name, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -203,7 +231,7 @@ TEST_F(portability_path_test, portability_path_test_get_path_of_path) size_t size = portability_path_get_directory(base, sizeof(base), path, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(path, result)); + EXPECT_STREQ(path, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -217,7 +245,7 @@ TEST_F(portability_path_test, portability_path_test_get_path_of_filepath) size_t size = portability_path_get_directory(base, sizeof(base), path, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(path, result)); + EXPECT_STREQ(path, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -232,7 +260,7 @@ TEST_F(portability_path_test, portability_path_test_get_relative) size_t size = portability_path_get_relative(base, sizeof(base), path, sizeof(path), relative, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(relative, result)); + EXPECT_STREQ(relative, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -247,7 +275,7 @@ TEST_F(portability_path_test, portability_path_test_get_relative_fail) size_t size = portability_path_get_relative(base, sizeof(base), path, sizeof(path), relative, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(relative, result)); + EXPECT_STREQ(relative, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -262,7 +290,7 @@ TEST_F(portability_path_test, portability_path_test_join_none_slash) size_t size = portability_path_join(left, sizeof(left), right, sizeof(right), join, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(join, result)); + EXPECT_STREQ(join, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -277,7 +305,7 @@ TEST_F(portability_path_test, portability_path_test_join_left_slash) size_t size = portability_path_join(left, sizeof(left), right, sizeof(right), join, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(join, result)); + EXPECT_STREQ(join, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -292,7 +320,7 @@ TEST_F(portability_path_test, portability_path_test_join_right_slash) size_t size = portability_path_join(left, sizeof(left), right, sizeof(right), join, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(join, result)); + EXPECT_STREQ(join, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -307,7 +335,7 @@ TEST_F(portability_path_test, portability_path_test_join_both_slash) size_t size = portability_path_join(left, sizeof(left), right, sizeof(right), join, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(join, result)); + EXPECT_STREQ(join, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -322,7 +350,7 @@ TEST_F(portability_path_test, portability_path_test_join_left_empty) size_t size = portability_path_join(left, sizeof(left), right, sizeof(right), join, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(join, result)); + EXPECT_STREQ(join, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -337,7 +365,7 @@ TEST_F(portability_path_test, portability_path_test_join_right_empty) size_t size = portability_path_join(left, sizeof(left), right, sizeof(right), join, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(join, result)); + EXPECT_STREQ(join, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -352,7 +380,7 @@ TEST_F(portability_path_test, portability_path_test_join_right_empty_non_slash) size_t size = portability_path_join(left, sizeof(left), right, sizeof(right), join, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(join, result)); + EXPECT_STREQ(join, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -367,7 +395,7 @@ TEST_F(portability_path_test, portability_path_test_join_both_empty) size_t size = portability_path_join(left, sizeof(left), right, sizeof(right), join, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(join, result)); + EXPECT_STREQ(join, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -381,7 +409,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_begin_dot) size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -395,7 +423,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_begin_double_dot) size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -409,7 +437,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_begin_many_dot) size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -423,7 +451,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_begin_many_double_ size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -437,7 +465,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_begin_dot_non_slas size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -451,7 +479,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_begin_many_dot_non size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -465,7 +493,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_begin_invalid) size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -479,7 +507,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_middle_double_dot) size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -493,7 +521,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_middle_double_dot_ size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -507,7 +535,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_middle_double_dot_ size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -521,7 +549,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_middle_dot) size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -535,7 +563,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_middle_mixed_dot) size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -549,7 +577,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_end_dot) size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -563,7 +591,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_end_double_dot) size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -577,7 +605,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_end_mixed_dot) size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -591,7 +619,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_absolute_end_mixed size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -605,7 +633,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_absolute_end_dot) size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -619,7 +647,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_relative_begin_end size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } @@ -633,7 +661,7 @@ TEST_F(portability_path_test, portability_path_test_canonical_absolute_end_many_ size_t size = portability_path_canonical(path, sizeof(path), canonical, PATH_SIZE); - EXPECT_EQ((int)0, (int)strcmp(canonical, result)); + EXPECT_STREQ(canonical, result); EXPECT_EQ((size_t)size, (size_t)sizeof(result)); EXPECT_EQ((char)'\0', (char)result[size - 1]); } From db92d1e9e0af5f9ad2b6e5f83cf728edca9acb69 Mon Sep 17 00:00:00 2001 From: Jose Antonio Dominguez Date: Wed, 7 May 2025 20:08:11 -0300 Subject: [PATCH 68/68] Refactor Windows loader implementation to improve symbol replacement logic and ensure proper unloading of handles. --- source/loader/source/loader_impl.c | 53 +++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/source/loader/source/loader_impl.c b/source/loader/source/loader_impl.c index 5eef78140..33c232af6 100644 --- a/source/loader/source/loader_impl.c +++ b/source/loader/source/loader_impl.c @@ -523,30 +523,53 @@ int loader_impl_link(plugin p, loader_impl impl) #if defined(WIN32) || defined(_WIN32) if (loader_impl_get_option_host(impl) == 1) { - /* TODO: Replace loader symbols by the dependency (aka the already loaded + /* Replace loader symbols by the dependency (aka the already loaded library if the host is linked dynamically, or the executable if it is - linked statically): - - loader_handle = detour_load_handle(d, desc->handle); - - while (detour_enumerate(d, loader_handle, position, name, addr)) + linked statically) */ + detour_handle loader_handle; + void *position = NULL; + char name[DETOUR_SYMBOL_SIZE]; + void *addr = NULL; + + loader_handle = detour_load_handle(impl->d, desc->handle); + + if (loader_handle != NULL) + { + set_iterator it; + size_t iterator; + + while (detour_enumerate(impl->d, loader_handle, &position, name, &addr)) { - foreach(library_handle in impl->library_map) + /* Iterate through all library handles in the library map */ + it = set_iterator_begin(impl->library_map); + + for (iterator = 0; iterator < set_size(impl->library_map); ++iterator) { - symbol = dynlink_symbol(library_handle, name); - - if (symbol != NULL) + dynlink library_handle = set_iterator_value(it); + void *symbol = NULL; + + if (library_handle != NULL) { - if (detour_replace(d, loader_handle, name, symbol, ...) == 0) + if (dynlink_symbol(library_handle, name, &symbol) == 0) { - break; + if (symbol != NULL) + { + if (detour_replace(impl->d, loader_handle, name, symbol, NULL) == 0) + { + /* Symbol successfully replaced */ + + break; + } + } } } + + it = set_iterator_next(it); } } - - detour_unload(d, loader_handle); - */ + + detour_unload(impl->d, loader_handle); + } } #endif