From facc65900b4f5181d3dfb63097a010417d4c5876 Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Wed, 9 Nov 2022 12:51:41 -0500 Subject: [PATCH 01/11] Use -framework Accelerate on OS X. --- CMake/FindArmadillo.cmake | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/CMake/FindArmadillo.cmake b/CMake/FindArmadillo.cmake index 3d696b0abb..8c5e0260ca 100644 --- a/CMake/FindArmadillo.cmake +++ b/CMake/FindArmadillo.cmake @@ -81,23 +81,43 @@ endif() # Link to support libraries in either case on MSVC. if(NOT _ARMA_USE_WRAPPER OR MSVC) if(_ARMA_USE_LAPACK) - if(ARMADILLO_FIND_QUIETLY OR NOT ARMADILLO_FIND_REQUIRED) - find_package(LAPACK QUIET) + if(APPLE) + # Use -framework Accelerate to link against the Accelerate framework on + # MacOS; ignore OpenBLAS or other variants. + set(LAPACK_LIBRARIES "-framework Accelerate") + set(LAPACK_FOUND YES) else() - find_package(LAPACK REQUIRED) + if(ARMADILLO_FIND_QUIETLY OR NOT ARMADILLO_FIND_REQUIRED) + find_package(LAPACK QUIET) + else() + find_package(LAPACK REQUIRED) + endif() endif() + if(LAPACK_FOUND) set(_ARMA_SUPPORT_LIBRARIES "${_ARMA_SUPPORT_LIBRARIES}" "${LAPACK_LIBRARIES}") endif() endif() if(_ARMA_USE_BLAS) - if(ARMADILLO_FIND_QUIETLY OR NOT ARMADILLO_FIND_REQUIRED) - find_package(BLAS QUIET) + if(APPLE) + # Use -framework Accelerate to link against the Accelerate framework on + # MacOS; ignore OpenBLAS or other variants. + set(BLAS_LIBRARIES "-framework Accelerate") + set(BLAS_FOUND YES) else() - find_package(BLAS REQUIRED) + if(ARMADILLO_FIND_QUIETLY OR NOT ARMADILLO_FIND_REQUIRED) + find_package(BLAS QUIET) + else() + find_package(BLAS REQUIRED) + endif() endif() + if(BLAS_FOUND) - set(_ARMA_SUPPORT_LIBRARIES "${_ARMA_SUPPORT_LIBRARIES}" "${BLAS_LIBRARIES}") + # Avoid doubly linking (not that it makes much difference other than a + # nicer command-line). + if (NOT BLAS_LIBRARIES EQUAL LAPACK_LIBRARIES) + set(_ARMA_SUPPORT_LIBRARIES "${_ARMA_SUPPORT_LIBRARIES}" "${BLAS_LIBRARIES}") + endif () endif() endif() if(_ARMA_USE_ARPACK) From 6924efd22ede19d163bb801627915a04b324eac2 Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Fri, 4 Nov 2022 09:41:40 -0400 Subject: [PATCH 02/11] Workaround to make "m" into "-lm" for linking. --- src/mlpack/bindings/python/setup.py.in | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/mlpack/bindings/python/setup.py.in b/src/mlpack/bindings/python/setup.py.in index aabd85a6fb..1622d082c5 100644 --- a/src/mlpack/bindings/python/setup.py.in +++ b/src/mlpack/bindings/python/setup.py.in @@ -35,6 +35,11 @@ else: # Windows and Linux linking behavior. libraries = '${MLPACK_LIBRARIES}'.split(' ') +# Workaround: if we receive "m" as a library, what was actually meant was -lm. +for i in range(len(libraries)): + if libraries[i] == 'm': + libraries[i] = '-lm' + # Potentially faulty assumption: we can always link against libraries directly # by just specifying the full path to them on the command line. extra_link_args += libraries From 1b6e5850c016a63d0cbdc5e30d6858b0c2b8bcc9 Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Thu, 3 Nov 2022 12:20:03 -0400 Subject: [PATCH 03/11] Patch compilation options for Python. --- src/mlpack/bindings/python/setup.py.in | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/mlpack/bindings/python/setup.py.in b/src/mlpack/bindings/python/setup.py.in index aabd85a6fb..8cac63b458 100644 --- a/src/mlpack/bindings/python/setup.py.in +++ b/src/mlpack/bindings/python/setup.py.in @@ -49,16 +49,29 @@ else: extra_cxx_flags = re.sub(' +', ' ', cxx_flags) cxx_flags += ' ' cxx_flags += extra_cxx_flags - extra_args = ['-DBINDING_TYPE=BINDING_TYPE_PYX', '-std=c++14'] + + extra_args = [] + if platform.system() == 'Windows': + # Argument specification is different on MSVC, and also use C++17. + extra_args.extend(['/DBINDING_TYPE=BINDING_TYPE_PYX', '/std:c++17', '/MD', + '/O2', '/Ob2', '/DNDEBUG']) + elif platform.system() == 'Darwin': + extra_args.append('-DBINDING_TYPE=BINDING_TYPE_PYX') + extra_args.append('-std=c++17') + # On OS X and Linux, we try to reduce the size of the generated libraries + # by removing debugging symbols and stripping. + extra_args.append('-g0') + else: + extra_args.append('-DBINDING_TYPE=BINDING_TYPE_PYX') + extra_args.append('-std=c++17') + extra_args.append('-g0') + extra_link_args.append('-Wl,--strip-all') + if '${OpenMP_CXX_FLAGS}' != '': extra_args.append('${OpenMP_CXX_FLAGS}') if cxx_flags: extra_args.extend(cxx_flags.split(' ')) - # Extra options for MSVC compiler. - if platform.system() == 'Windows': - extra_args.extend(['/MD', '/O2', '/Ob2', '/DNDEBUG']) - # This is used for parallel builds; CMake will set PYX_TO_BUILD accordingly. if module is not None: modules=[\ From 73af7bcab3fcd1aa4f581f41a277ae8d3fdf3c05 Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Sat, 5 Nov 2022 10:10:10 -0400 Subject: [PATCH 04/11] Propagate BUILD_SHARED_LIBS setting to binding compilation too. --- src/mlpack/bindings/R/CMakeLists.txt | 8 ++++++-- src/mlpack/bindings/go/CMakeLists.txt | 18 +++++++++++++++--- src/mlpack/bindings/julia/CMakeLists.txt | 18 +++++++++++++++--- src/mlpack/bindings/python/CMakeLists.txt | 13 +++++++++++-- 4 files changed, 47 insertions(+), 10 deletions(-) diff --git a/src/mlpack/bindings/R/CMakeLists.txt b/src/mlpack/bindings/R/CMakeLists.txt index 4aa4033aee..804528c099 100644 --- a/src/mlpack/bindings/R/CMakeLists.txt +++ b/src/mlpack/bindings/R/CMakeLists.txt @@ -374,8 +374,12 @@ if (BUILD_R_BINDINGS) ${CMAKE_SOURCE_DIR}/src/mlpack/bindings/R/print_input_processing.hpp ${CMAKE_SOURCE_DIR}/src/mlpack/bindings/R/print_serialize_util.hpp ${CMAKE_SOURCE_DIR}/src/mlpack/bindings/R/print_output_processing.hpp) - target_link_libraries(generate_r_${name} ${MLPACK_LIBRARIES}) - set_target_properties(generate_r_${name} PROPERTIES + if (BUILD_SHARED_LIBS) + target_link_libraries(generate_r_${name} ${MLPACK_LIBRARIES}) + else () + target_link_libraries(generate_r_${name} -static ${MLPACK_LIBRARIES}) + endif () + set_target_properties(generate_r_${name} PROPERTIES COMPILE_FLAGS "-DBINDING_TYPE=BINDING_TYPE_R" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/src/mlpack/bindings/R/build/bin/") add_custom_command(TARGET generate_r_${name} POST_BUILD diff --git a/src/mlpack/bindings/go/CMakeLists.txt b/src/mlpack/bindings/go/CMakeLists.txt index efc5396a3b..f9b9dbd074 100644 --- a/src/mlpack/bindings/go/CMakeLists.txt +++ b/src/mlpack/bindings/go/CMakeLists.txt @@ -140,7 +140,11 @@ if (BUILD_GO_SHLIB) add_library(mlpack_go_util SHARED ${CMAKE_SOURCE_DIR}/src/mlpack/bindings/go/mlpack/capi/arma_util.cpp ${CMAKE_SOURCE_DIR}/src/mlpack/bindings/go/mlpack/capi/io_util.cpp) - target_link_libraries(mlpack_go_util ${MLPACK_LIBRARIES}) + if (BUILD_SHARED_LIBS) + target_link_libraries(mlpack_go_util ${MLPACK_LIBRARIES}) + else () + target_link_libraries(mlpack_go_util -static ${MLPACK_LIBRARIES}) + endif () target_compile_definitions(mlpack_go_util PUBLIC -DBINDING_TYPE=BINDING_TYPE_GO -DMLPACK_PRINT_INFO @@ -213,7 +217,11 @@ if (BUILD_GO_BINDINGS) ${CMAKE_BINARY_DIR}/src/mlpack/bindings/go/generate_go_${name}.cpp ${CMAKE_SOURCE_DIR}/src/mlpack/bindings/go/print_go.hpp ${CMAKE_SOURCE_DIR}/src/mlpack/bindings/go/print_go.cpp) - target_link_libraries(generate_go_${name} ${MLPACK_LIBRARIES}) + if (BUILD_SHARED_LIBS) + target_link_libraries(generate_go_${name} ${MLPACK_LIBRARIES}) + else () + target_link_libraries(generate_go_${name} -static ${MLPACK_LIBRARIES}) + endif () set_target_properties(generate_go_${name} PROPERTIES COMPILE_FLAGS -DBINDING_TYPE=BINDING_TYPE_GO) add_custom_command(TARGET generate_go_${name} POST_BUILD @@ -242,7 +250,11 @@ if(BUILD_GO_SHLIB) # Build libmlpack_go_${name}.so. add_library(mlpack_go_${name} SHARED ${CMAKE_BINARY_DIR}/src/mlpack/bindings/go/build/${name}.cpp) - target_link_libraries(mlpack_go_${name} mlpack_go_util) + if (BUILD_SHARED_LIBS) + target_link_libraries(mlpack_go_${name} mlpack_go_util) + else () + target_link_libraries(mlpack_go_${name} -static mlpack_go_util) + endif () target_compile_definitions(mlpack_go_${name} PUBLIC -DMLPACK_PRINT_INFO -DMLPACK_PRINT_WARN) set_target_properties(mlpack_go_${name} PROPERTIES diff --git a/src/mlpack/bindings/julia/CMakeLists.txt b/src/mlpack/bindings/julia/CMakeLists.txt index 003b5113ab..cad28cf062 100644 --- a/src/mlpack/bindings/julia/CMakeLists.txt +++ b/src/mlpack/bindings/julia/CMakeLists.txt @@ -53,7 +53,11 @@ if (BUILD_JULIA_BINDINGS) add_library(mlpack_julia_util julia_util.h julia_util.cpp) - target_link_libraries(mlpack_julia_util ${MLPACK_LIBRARIES}) + if (BUILD_SHARED_LIBS) + target_link_libraries(mlpack_julia_util ${MLPACK_LIBRARIES}) + else () + target_link_libraries(mlpack_julia_util -static ${MLPACK_LIBRARIES}) + endif () target_compile_definitions(mlpack_julia_util PUBLIC -DMLPACK_PRINT_INFO -DMLPACK_PRINT_WARN) set_target_properties(mlpack_julia_util PROPERTIES @@ -189,7 +193,11 @@ if (BUILD_JULIA_BINDINGS) add_library(mlpack_julia_${name} ${CMAKE_BINARY_DIR}/src/mlpack/bindings/julia/mlpack/build/julia_${name}.h ${CMAKE_BINARY_DIR}/src/mlpack/bindings/julia/mlpack/build/julia_${name}.cpp) - target_link_libraries(mlpack_julia_${name} mlpack_julia_util) + if (BUILD_SHARED_LIBS) + target_link_libraries(mlpack_julia_${name} mlpack_julia_util) + else () + target_link_libraries(mlpack_julia_${name} -static mlpack_julia_util) + endif () target_compile_definitions(mlpack_julia_${name} PUBLIC -DMLPACK_PRINT_INFO -DMLPACK_PRINT_WARN) set_target_properties(mlpack_julia_${name} PROPERTIES @@ -229,7 +237,11 @@ if (BUILD_JULIA_BINDINGS) ${CMAKE_SOURCE_DIR}/src/mlpack/bindings/julia/print_model_type_import.hpp ${CMAKE_SOURCE_DIR}/src/mlpack/bindings/julia/default_param.hpp ${CMAKE_SOURCE_DIR}/src/mlpack/bindings/julia/default_param_impl.hpp) - target_link_libraries(generate_jl_${name} ${MLPACK_LIBRARIES}) + if (BUILD_SHARED_LIBS) + target_link_libraries(generate_jl_${name} ${MLPACK_LIBRARIES}) + else () + target_link_libraries(generate_jl_${name} -static ${MLPACK_LIBRARIES}) + endif () set_target_properties(generate_jl_${name} PROPERTIES COMPILE_FLAGS "-DBINDING_TYPE=BINDING_TYPE_JL" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/src/mlpack/bindings/julia/mlpack/build/bin/") diff --git a/src/mlpack/bindings/python/CMakeLists.txt b/src/mlpack/bindings/python/CMakeLists.txt index 2d240a88eb..acc5845375 100644 --- a/src/mlpack/bindings/python/CMakeLists.txt +++ b/src/mlpack/bindings/python/CMakeLists.txt @@ -242,7 +242,11 @@ macro (add_python_binding directory name) ${CMAKE_BINARY_DIR}/src/mlpack/bindings/python/generate_pyx_${name}.cpp ${CMAKE_SOURCE_DIR}/src/mlpack/bindings/python/print_pyx.hpp ${CMAKE_SOURCE_DIR}/src/mlpack/bindings/python/print_pyx.cpp) - target_link_libraries(generate_pyx_${name} ${MLPACK_LIBRARIES}) + if (BUILD_SHARED_LIBS) + target_link_libraries(generate_pyx_${name} ${MLPACK_LIBRARIES}) + else () + target_link_libraries(generate_pyx_${name} -static ${MLPACK_LIBRARIES}) + endif () set_target_properties(generate_pyx_${name} PROPERTIES COMPILE_FLAGS -DBINDING_TYPE=BINDING_TYPE_PYX) add_custom_command(TARGET generate_pyx_${name} POST_BUILD @@ -309,7 +313,12 @@ macro (add_python_wrapper directory group_name) ${CMAKE_SOURCE_DIR}/src/mlpack/bindings/python/print_wrapper_py.hpp ${CMAKE_SOURCE_DIR}/src/mlpack/bindings/python/print_wrapper_py.cpp) - target_link_libraries(generate_py_wrapper_${group_name} ${MLPACK_LIBRARIES}) + if (BUILD_SHARED_LIBS) + target_link_libraries(generate_py_wrapper_${group_name} ${MLPACK_LIBRARIES}) + else () + target_link_libraries(generate_py_wrapper_${group_name} -static + ${MLPACK_LIBRARIES}) + endif () add_custom_command(TARGET generate_py_wrapper_${group_name} POST_BUILD COMMAND ${CMAKE_COMMAND} From 65e9c27014bf5f9fa238940dee701ef5637a2981 Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Thu, 27 Oct 2022 16:27:25 -0400 Subject: [PATCH 05/11] Remove dependency of python_copy on mlpack. --- src/mlpack/bindings/python/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mlpack/bindings/python/CMakeLists.txt b/src/mlpack/bindings/python/CMakeLists.txt index 2d240a88eb..fb99f3c8d7 100644 --- a/src/mlpack/bindings/python/CMakeLists.txt +++ b/src/mlpack/bindings/python/CMakeLists.txt @@ -125,8 +125,8 @@ if (DEBUG) set(DISABLE_CFLAGS "NDEBUG;MLPACK_HAS_BFD_DL" PARENT_SCOPE) endif () -add_custom_target(python ALL DEPENDS mlpack) -add_custom_target(python_copy ALL DEPENDS mlpack) +add_custom_target(python ALL DEPENDS python_copy) +add_custom_target(python_copy ALL) # The python_configure target is added later; this is a dummy target. add_custom_target(python_configured ALL) From fa308cc30ab700f21dc7209bb4f978ae5b0a1694 Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Wed, 9 Nov 2022 13:30:39 -0500 Subject: [PATCH 06/11] Use python -m pip install instead of setup.py install. --- src/mlpack/bindings/python/PythonInstall.cmake | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/mlpack/bindings/python/PythonInstall.cmake b/src/mlpack/bindings/python/PythonInstall.cmake index 6e25fb926e..880f57cc21 100644 --- a/src/mlpack/bindings/python/PythonInstall.cmake +++ b/src/mlpack/bindings/python/PythonInstall.cmake @@ -3,15 +3,18 @@ # A utility script to install Python bindings and fail fatally if installation # was not successful. if (DEFINED ENV{DESTDIR}) - execute_process(COMMAND ${PYTHON_EXECUTABLE} - "${CMAKE_BINARY_DIR}/src/mlpack/bindings/python/setup.py" install - --prefix=${PYTHON_INSTALL_PREFIX} --root=$ENV{DESTDIR} + execute_process(COMMAND ${PYTHON_EXECUTABLE} -m pip install + --prefix=${PYTHON_INSTALL_PREFIX} + --root=$ENV{DESTDIR} . + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src/mlpack/bindings/python/" + RESULT_VARIABLE setup_res) +elseif (WIN32) + execute_process(COMMAND ${PYTHON_EXECUTABLE} -m pip install . WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src/mlpack/bindings/python/" RESULT_VARIABLE setup_res) else () - execute_process(COMMAND ${PYTHON_EXECUTABLE} - "${CMAKE_BINARY_DIR}/src/mlpack/bindings/python/setup.py" install - --prefix=${PYTHON_INSTALL_PREFIX} + execute_process(COMMAND ${PYTHON_EXECUTABLE} -m pip install + --prefix=${PYTHON_INSTALL_PREFIX} . WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src/mlpack/bindings/python/" RESULT_VARIABLE setup_res) endif () From 8a092891eccaab2eb91a0a373da7feada44ed46e Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Mon, 14 Nov 2022 16:46:50 -0500 Subject: [PATCH 07/11] Add a patch that will hopefully help MSVC debugging. --- src/mlpack/base.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mlpack/base.hpp b/src/mlpack/base.hpp index 4879167814..151a59b589 100644 --- a/src/mlpack/base.hpp +++ b/src/mlpack/base.hpp @@ -69,12 +69,14 @@ // Backport std::any from C+17 to C++11 to replace boost::any. // Use mnmlstc backport implementation only if compiler does not // support C++17. -#if __cplusplus < 201703L +#if __cplusplus < 201703L && !defined(_MSC_VER) #include #include #define MLPACK_ANY core::v2::any #define MLPACK_ANY_CAST core::v2::any_cast #define MLPACK_STRING_VIEW core::v2::string_view +#elif __cplusplus < 201703L && defined(_MSC_VER) + #error "When using Visual Studio, mlpack should be compiled with /Zc:__cplusplus and /std:c++17 or newer." #else #include #include From 7588142d0b2dcbc95cf32d63dac78c383a94d297 Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Wed, 16 Nov 2022 08:47:47 -0500 Subject: [PATCH 08/11] Note new options in documentation. --- doc/user/build_windows.md | 3 +++ doc/user/sample_ml_app.md | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/doc/user/build_windows.md b/doc/user/build_windows.md index f5cc05e79c..61cbae34ef 100644 --- a/doc/user/build_windows.md +++ b/doc/user/build_windows.md @@ -36,6 +36,9 @@ an existing one). The library is immediately ready to be included (via preprocessor directives) and used in your project without additional configuration. +Note that when building mlpack, the `/std:c++17` and `/Zc:__cplusplus` options +are required for Visual Studio. + ## Build Environment This tutorial has been designed and tested using: diff --git a/doc/user/sample_ml_app.md b/doc/user/sample_ml_app.md index 883758fcba..dab879f68f 100644 --- a/doc/user/sample_ml_app.md +++ b/doc/user/sample_ml_app.md @@ -43,6 +43,11 @@ this issue, disable "Conformance Mode" under C/C++ > Language. *Note*: you may need to change the paths of the include directories or libraries above, given how you installed the dependencies. +*Note*: mlpack requires that the `/std:c++17` and `/Zc:__cplusplus` options be +set for the Visual Studio compiler. This is done by default in the provided +example, but for your own projects, make sure that these options are set, +otherwise compilation will fail. + ## The App's Goal This app aims to exercise an end-to-end machine learning workflow. We will From a83a896b42e4a17fc783d40e035d1bb823410759 Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Wed, 16 Nov 2022 08:48:32 -0500 Subject: [PATCH 09/11] Update HISTORY.md. --- HISTORY.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/HISTORY.md b/HISTORY.md index e48c2c4290..ad473d5f20 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -2,6 +2,9 @@ ###### ????-??-?? * Fix mapping of categorical data for Julia bindings (#3305). + * The `/std:c++17` and `/Zc:__cplusplus` options are now required when using + Visual Studio (#3318). Documentation and compile-time checks added. + ### mlpack 4.0.0 ###### 2022-10-23 * Bump C++ standard requirement to C++14 (#3233). From fdb01db107236997911818db9e9c0165db4de009 Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Thu, 17 Nov 2022 15:21:04 -0500 Subject: [PATCH 10/11] Make sure to build tests for CI jobs. --- .ci/ci.yaml | 20 ++++++++++---------- .ci/linux-steps.yaml | 2 +- .ci/macos-steps.yaml | 2 +- .github/workflows/main.yml | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.ci/ci.yaml b/.ci/ci.yaml index 6490c15fdf..0d6c38e83e 100644 --- a/.ci/ci.yaml +++ b/.ci/ci.yaml @@ -15,20 +15,20 @@ jobs: strategy: matrix: Plain: - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' Python: binding: 'python' python.version: '3.7' - CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 -DBUILD_GO_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 -DBUILD_GO_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' Julia: julia.version: '1.3.0' - CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=ON -DBUILD_GO_BINDINGS=OFF -DJULIA_EXECUTABLE=/opt/julia-1.6.3/bin/julia -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=ON -DBUILD_GO_BINDINGS=OFF -DJULIA_EXECUTABLE=/opt/julia-1.6.3/bin/julia -DBUILD_R_BINDINGS=OFF' Go: binding: 'go' go.version: '1.11.0' - CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=ON -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=ON -DBUILD_R_BINDINGS=OFF' Markdown: - CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_MARKDOWN_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_MARKDOWN_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' steps: - template: linux-steps.yaml @@ -40,21 +40,21 @@ jobs: strategy: matrix: Plain: - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' python.version: '3.7' Python: binding: 'python' python.version: '3.7' - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=ON -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=ON -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' Julia: python.version: '3.7' julia.version: '1.6.3' - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_JULIA_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_JULIA_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' Go: binding: 'go' python.version: '3.7' go.version: '1.11.0' - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=ON -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=ON -DBUILD_R_BINDINGS=OFF' steps: - template: macos-steps.yaml @@ -67,7 +67,7 @@ jobs: strategy: matrix: Plain: - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' python.version: '2.7' CMakeGenerator: '-G "Visual Studio 16 2019"' MSBuildVersion: '16.0' diff --git a/.ci/linux-steps.yaml b/.ci/linux-steps.yaml index be94867ecd..6ad21cb7d6 100644 --- a/.ci/linux-steps.yaml +++ b/.ci/linux-steps.yaml @@ -79,7 +79,7 @@ steps: displayName: 'CMake' # Build mlpack -- script: cd build && make -j2 && make mlpack_test -j2 +- script: cd build && make -j2 displayName: 'Build' # Run tests via ctest. diff --git a/.ci/macos-steps.yaml b/.ci/macos-steps.yaml index 284e1d4f4b..611c2618a3 100644 --- a/.ci/macos-steps.yaml +++ b/.ci/macos-steps.yaml @@ -45,7 +45,7 @@ steps: displayName: 'CMake' # Build mlpack -- script: cd build && make -j2 && make -j2 mlpack_test +- script: cd build && make -j2 displayName: 'Build' # Run tests via ctest. diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ffb1f9b8cd..a4d3825354 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -69,11 +69,11 @@ jobs: - name: CMake run: | mkdir build - cd build && cmake -DDEBUG=OFF -DPROFILE=OFF -DBUILD_CLI_EXECUTABLES=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=ON -DDOWNLOAD_DEPENDENCIES=ON .. + cd build && cmake -DDEBUG=OFF -DPROFILE=OFF -DBUILD_CLI_EXECUTABLES=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=ON -DDOWNLOAD_DEPENDENCIES=ON -DBUILD_TESTS=ON .. - name: Build run: | - cd build && make && make mlpack_test + cd build && make - name: Run tests via ctest run: | From 3a5ec1af83a70ea446a0cf6d6a71152e3b039885 Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Thu, 17 Nov 2022 15:21:27 -0500 Subject: [PATCH 11/11] Revert "Make sure to build tests for CI jobs." This reverts commit fdb01db107236997911818db9e9c0165db4de009. --- .ci/ci.yaml | 20 ++++++++++---------- .ci/linux-steps.yaml | 2 +- .ci/macos-steps.yaml | 2 +- .github/workflows/main.yml | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.ci/ci.yaml b/.ci/ci.yaml index 0d6c38e83e..6490c15fdf 100644 --- a/.ci/ci.yaml +++ b/.ci/ci.yaml @@ -15,20 +15,20 @@ jobs: strategy: matrix: Plain: - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' Python: binding: 'python' python.version: '3.7' - CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 -DBUILD_GO_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 -DBUILD_GO_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' Julia: julia.version: '1.3.0' - CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=ON -DBUILD_GO_BINDINGS=OFF -DJULIA_EXECUTABLE=/opt/julia-1.6.3/bin/julia -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=ON -DBUILD_GO_BINDINGS=OFF -DJULIA_EXECUTABLE=/opt/julia-1.6.3/bin/julia -DBUILD_R_BINDINGS=OFF' Go: binding: 'go' go.version: '1.11.0' - CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=ON -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=ON -DBUILD_R_BINDINGS=OFF' Markdown: - CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_MARKDOWN_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_MARKDOWN_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' steps: - template: linux-steps.yaml @@ -40,21 +40,21 @@ jobs: strategy: matrix: Plain: - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' python.version: '3.7' Python: binding: 'python' python.version: '3.7' - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=ON -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=ON -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' Julia: python.version: '3.7' julia.version: '1.6.3' - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_JULIA_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_JULIA_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' Go: binding: 'go' python.version: '3.7' go.version: '1.11.0' - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=ON -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=ON -DBUILD_R_BINDINGS=OFF' steps: - template: macos-steps.yaml @@ -67,7 +67,7 @@ jobs: strategy: matrix: Plain: - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' python.version: '2.7' CMakeGenerator: '-G "Visual Studio 16 2019"' MSBuildVersion: '16.0' diff --git a/.ci/linux-steps.yaml b/.ci/linux-steps.yaml index 6ad21cb7d6..be94867ecd 100644 --- a/.ci/linux-steps.yaml +++ b/.ci/linux-steps.yaml @@ -79,7 +79,7 @@ steps: displayName: 'CMake' # Build mlpack -- script: cd build && make -j2 +- script: cd build && make -j2 && make mlpack_test -j2 displayName: 'Build' # Run tests via ctest. diff --git a/.ci/macos-steps.yaml b/.ci/macos-steps.yaml index 611c2618a3..284e1d4f4b 100644 --- a/.ci/macos-steps.yaml +++ b/.ci/macos-steps.yaml @@ -45,7 +45,7 @@ steps: displayName: 'CMake' # Build mlpack -- script: cd build && make -j2 +- script: cd build && make -j2 && make -j2 mlpack_test displayName: 'Build' # Run tests via ctest. diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a4d3825354..ffb1f9b8cd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -69,11 +69,11 @@ jobs: - name: CMake run: | mkdir build - cd build && cmake -DDEBUG=OFF -DPROFILE=OFF -DBUILD_CLI_EXECUTABLES=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=ON -DDOWNLOAD_DEPENDENCIES=ON -DBUILD_TESTS=ON .. + cd build && cmake -DDEBUG=OFF -DPROFILE=OFF -DBUILD_CLI_EXECUTABLES=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=ON -DDOWNLOAD_DEPENDENCIES=ON .. - name: Build run: | - cd build && make + cd build && make && make mlpack_test - name: Run tests via ctest run: |