GH-37532: [CI][Docs][MATLAB] Remove GoogleTest support from the CMake build system for the MATLAB interface#37784
Conversation
script. Co-authored-by: Sarah Gilmore <[email protected]>
|
We probably need to see how things change run-over-run, but it looks like removing |
|
CI time on main: https://github.com/apache/arrow/actions/runs/6224657359
CI time on this PR: https://github.com/mathworks/arrow/actions/runs/6228155036
|
assignUser
left a comment
There was a problem hiding this comment.
Looks good, always a fan of reducing complexity :D
One thing for a follow up would be to use fetchContent instead of externalProject to build libarrow, that way you don't have to manually create the targets and add the imported location etc.
|
@assignUser - using However, I was under the impression that the Arrow C++ libraries weren't properly configured to be used with I remember stumbling upon a few different references which seemed to indicate that there were issues with
Do you know if this changed recently? If so, this is definitely something we would love to do. |
Agreed! Supporting Thanks for sharing this! I wasn't aware there was a working example. As you said, I think that sticking with |
2. Add a note about testing internal C++ code via MEX function calls.
|
+1 |
|
After merging your PR, Conbench analyzed the 5 benchmarking runs that have been run so far on merge-commit cda1e8f. There were no benchmark performance regressions. 🎉 The full Conbench report has more details. It also includes information about possible false positives for unstable benchmarks that are known to sometimes produce them. |
…he CMake build system for the MATLAB interface (apache#37784) ### Rationale for this change This pull request removes `GoogleTest` support from the CMake build system for the MATLAB interface. 1. `GoogleTest` support adds a lot of additional complexity to the CMake build system for the MATLAB interface, and we currently don't have any standalone C++ tests for the MATLAB interface code. 2. In order to use `GoogleTest` in the MATLAB CI workflows, we are currently relying on building the tests for the Arrow C++ libraries in order to "re-use" the `GoogleTest binaries. This adds additional overhead to the MATLAB CI workflows. 3. If we want to test some internal C++ code for the MATLAB interface in the future, we can instead use a MEX function to call the code from a MATLAB test as suggested by @ kou in apache#37532 (comment). 4. There is [precedent for testing internal C++ code without GoogleTest for the Python bindings](apache#14117). 5. On a somewhat related note - removing `GoogleTest` support will help unblock apache#37773 as discussed in apache#37773 (comment). ### What changes are included in this PR? 1. Removed the `MATLAB_BUILD_TESTS` flag from the CMake build system for the MATLAB interface since there are no longer any C++ tests for the MATLAB interface to build. 2. Updated the `matlab_build.sh` CI workflow script to avoid building the tests for the Arrow C++ libraries and to no longer call `ctest`. 3. Updated the `README.md` for the MATLAB interface to no longer mention building or running C++ tests. 4. Updated the design document for the MATLAB Interface to no longer mention `GoogleTest` since we may end up testing internal C++ code using MEX function calls from MATLAB instead. 5. Removed placeholder C++ test (i.e. `placeholder_test.cc`). ### Are these changes tested? Yes. The MATLAB CI workflow is passing on all platforms. ### Are there any user-facing changes? Yes. There are no longer any C++ tests for the MATLAB interface. The `MATLAB_BUILD_TESTS` flag has been removed from the CMake build system to reflect this change. If a user supplies a value for `MATLAB_BUILD_TESTS` when building the MATLAB interface, the flag will be ignored by CMake. ### Future Directions 1. Add more developer-focused documentation on how to test C++ code via MEX function calls from MATLAB. ### Notes 1. In the future, we can consider testing internal C++ code using MEX function calls from MATLAB tests as suggested by @ kou in apache#37532 (comment). Currently, we don't have any C++ tests that need to be adapted to use this approach. 2. Thank you @ sgilmore10 for your help with this pull request! * Closes: apache#37532 Lead-authored-by: Kevin Gurney <[email protected]> Co-authored-by: Sarah Gilmore <[email protected]> Signed-off-by: Kevin Gurney <[email protected]>
…he CMake build system for the MATLAB interface (apache#37784) ### Rationale for this change This pull request removes `GoogleTest` support from the CMake build system for the MATLAB interface. 1. `GoogleTest` support adds a lot of additional complexity to the CMake build system for the MATLAB interface, and we currently don't have any standalone C++ tests for the MATLAB interface code. 2. In order to use `GoogleTest` in the MATLAB CI workflows, we are currently relying on building the tests for the Arrow C++ libraries in order to "re-use" the `GoogleTest binaries. This adds additional overhead to the MATLAB CI workflows. 3. If we want to test some internal C++ code for the MATLAB interface in the future, we can instead use a MEX function to call the code from a MATLAB test as suggested by @ kou in apache#37532 (comment). 4. There is [precedent for testing internal C++ code without GoogleTest for the Python bindings](apache#14117). 5. On a somewhat related note - removing `GoogleTest` support will help unblock apache#37773 as discussed in apache#37773 (comment). ### What changes are included in this PR? 1. Removed the `MATLAB_BUILD_TESTS` flag from the CMake build system for the MATLAB interface since there are no longer any C++ tests for the MATLAB interface to build. 2. Updated the `matlab_build.sh` CI workflow script to avoid building the tests for the Arrow C++ libraries and to no longer call `ctest`. 3. Updated the `README.md` for the MATLAB interface to no longer mention building or running C++ tests. 4. Updated the design document for the MATLAB Interface to no longer mention `GoogleTest` since we may end up testing internal C++ code using MEX function calls from MATLAB instead. 5. Removed placeholder C++ test (i.e. `placeholder_test.cc`). ### Are these changes tested? Yes. The MATLAB CI workflow is passing on all platforms. ### Are there any user-facing changes? Yes. There are no longer any C++ tests for the MATLAB interface. The `MATLAB_BUILD_TESTS` flag has been removed from the CMake build system to reflect this change. If a user supplies a value for `MATLAB_BUILD_TESTS` when building the MATLAB interface, the flag will be ignored by CMake. ### Future Directions 1. Add more developer-focused documentation on how to test C++ code via MEX function calls from MATLAB. ### Notes 1. In the future, we can consider testing internal C++ code using MEX function calls from MATLAB tests as suggested by @ kou in apache#37532 (comment). Currently, we don't have any C++ tests that need to be adapted to use this approach. 2. Thank you @ sgilmore10 for your help with this pull request! * Closes: apache#37532 Lead-authored-by: Kevin Gurney <[email protected]> Co-authored-by: Sarah Gilmore <[email protected]> Signed-off-by: Kevin Gurney <[email protected]>
Rationale for this change
This pull request removes
GoogleTestsupport from the CMake build system for the MATLAB interface.GoogleTestsupport adds a lot of additional complexity to the CMake build system for the MATLAB interface, and we currently don't have any standalone C++ tests for the MATLAB interface code.GoogleTestin the MATLAB CI workflows, we are currently relying on building the tests for the Arrow C++ libraries in order to "re-use" the `GoogleTest binaries. This adds additional overhead to the MATLAB CI workflows.GoogleTestsupport from the CMake build system for the MATLAB interface #37532 (comment).GoogleTestsupport will help unblock GH-37770: [MATLAB] Add CSVTableReaderandTableWriterMATLAB classes #37773 as discussed in GH-37770: [MATLAB] Add CSVTableReaderandTableWriterMATLAB classes #37773 (comment).What changes are included in this PR?
MATLAB_BUILD_TESTSflag from the CMake build system for the MATLAB interface since there are no longer any C++ tests for the MATLAB interface to build.matlab_build.shCI workflow script to avoid building the tests for the Arrow C++ libraries and to no longer callctest.README.mdfor the MATLAB interface to no longer mention building or running C++ tests.GoogleTestsince we may end up testing internal C++ code using MEX function calls from MATLAB instead.placeholder_test.cc).Are these changes tested?
Yes.
The MATLAB CI workflow is passing on all platforms.
Are there any user-facing changes?
Yes.
There are no longer any C++ tests for the MATLAB interface. The
MATLAB_BUILD_TESTSflag has been removed from the CMake build system to reflect this change. If a user supplies a value forMATLAB_BUILD_TESTSwhen building the MATLAB interface, the flag will be ignored by CMake.Future Directions
Notes
GoogleTestsupport from the CMake build system for the MATLAB interface #37532 (comment). Currently, we don't have any C++ tests that need to be adapted to use this approach.GoogleTestsupport from the CMake build system for the MATLAB interface #37532