From 99b7bd71b7618ea598ab22a1baa15f05d25c214d Mon Sep 17 00:00:00 2001 From: Matthew Woehlke Date: Mon, 26 Jan 2026 15:06:53 -0500 Subject: [PATCH 01/32] Update OctoMap to latest release (1.10.0) Recent CI changes resulted in build errors with OctoMap 1.8. Update to the most recent release, and include a work-around for an install problem (https://github.com/OctoMap/octomap/issues/445) and for OctoMap requesting an ancient and unsupported version of CMake. Fixes: #656 --- ci/install_linux.sh | 7 +++++-- ci/install_osx.sh | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ci/install_linux.sh b/ci/install_linux.sh index 8ca130d5b..ef3014857 100755 --- a/ci/install_linux.sh +++ b/ci/install_linux.sh @@ -7,9 +7,12 @@ sudo apt-get -qq --yes --force-yes install libccd-dev # Octomap git clone https://github.com/OctoMap/octomap cd octomap -git checkout tags/v1.8.0 +git checkout tags/v1.10.0 mkdir build cd build -cmake .. +cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_POLICY_VERSION_MINIMUM=3.10 \ + .. make sudo make install diff --git a/ci/install_osx.sh b/ci/install_osx.sh index 867493dc9..26d4bfd60 100755 --- a/ci/install_osx.sh +++ b/ci/install_osx.sh @@ -8,9 +8,12 @@ brew install libccd # Octomap git clone https://github.com/OctoMap/octomap cd octomap -git checkout tags/v1.8.0 +git checkout tags/v1.10.0 mkdir build cd build -cmake .. +cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_POLICY_VERSION_MINIMUM=3.10 \ + .. make sudo make install From 444d2da7b76528d796516e9dfb865f3fd063f693 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Mon, 26 Jan 2026 12:40:59 -0800 Subject: [PATCH 02/32] Correct uninitialized local variable --- include/fcl/math/geometry-inl.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/fcl/math/geometry-inl.h b/include/fcl/math/geometry-inl.h index a9d3dc851..3e4cf35d6 100644 --- a/include/fcl/math/geometry-inl.h +++ b/include/fcl/math/geometry-inl.h @@ -480,7 +480,6 @@ void eigen_old(const Matrix3& m, Vector3& dout, Matrix3& vout) int n = 3; int j, iq, ip, i; S tresh, theta, tau, t, sm, s, h, g, c; - int nrot; S b[3]; S z[3]; S v[3][3] = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}; @@ -492,7 +491,7 @@ void eigen_old(const Matrix3& m, Vector3& dout, Matrix3& vout) z[ip] = 0; } - nrot = 0; + int nrot = 0; for(i = 0; i < 50; ++i) { From 6569bef0eac45e7e121b1b9d6175500acf91bf7f Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Tue, 27 Jan 2026 06:55:17 -0800 Subject: [PATCH 03/32] Unused variable A counter that increments but serves no other role. --- include/fcl/math/geometry-inl.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/fcl/math/geometry-inl.h b/include/fcl/math/geometry-inl.h index 3e4cf35d6..1b89f2fdf 100644 --- a/include/fcl/math/geometry-inl.h +++ b/include/fcl/math/geometry-inl.h @@ -491,8 +491,6 @@ void eigen_old(const Matrix3& m, Vector3& dout, Matrix3& vout) z[ip] = 0; } - int nrot = 0; - for(i = 0; i < 50; ++i) { sm = 0; @@ -543,7 +541,6 @@ void eigen_old(const Matrix3& m, Vector3& dout, Matrix3& vout) for(j = ip + 1; j < iq; ++j) { g = R(ip, j); h = R(j, iq); R(ip, j) = g - s * (h + g * tau); R(j, iq) = h + s * (g - h * tau); } for(j = iq + 1; j < n; ++j) { g = R(ip, j); h = R(iq, j); R(ip, j) = g - s * (h + g * tau); R(iq, j) = h + s * (g - h * tau); } for(j = 0; j < n; ++j) { g = v[j][ip]; h = v[j][iq]; v[j][ip] = g - s * (h + g * tau); v[j][iq] = h + s * (g - h * tau); } - nrot++; } } } From 417a030cb901de113bb5d7e145129307022486fc Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Tue, 27 Jan 2026 10:08:46 -0800 Subject: [PATCH 04/32] Temporarily disable Debug build Local experience suggests that this works against Release. However, in CI when Debug fails, it cancels all the other builds. So, let's see if temporarily removing Debug will let Release proceed to the end. --- .github/workflows/all_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all_ci.yml b/.github/workflows/all_ci.yml index 6a2bfe76e..551ad3899 100644 --- a/.github/workflows/all_ci.yml +++ b/.github/workflows/all_ci.yml @@ -30,7 +30,7 @@ jobs: strategy: matrix: compiler: [gcc, clang] - build: [Release, Debug] + build: [Release] os: ['ubuntu-24.04'] uses: ./.github/workflows/generic_ci.yml with: From c55b685709853d58f7711ad3704dcbdaa016a02c Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Tue, 27 Jan 2026 11:05:23 -0800 Subject: [PATCH 05/32] Undo a bad "using std::move" -- made clang angry. --- .../test_gjk_libccd-inl_gjk_initializer.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/narrowphase/detail/convexity_based_algorithm/test_gjk_libccd-inl_gjk_initializer.cpp b/test/narrowphase/detail/convexity_based_algorithm/test_gjk_libccd-inl_gjk_initializer.cpp index 8a614e300..9dfd6cf55 100644 --- a/test/narrowphase/detail/convexity_based_algorithm/test_gjk_libccd-inl_gjk_initializer.cpp +++ b/test/narrowphase/detail/convexity_based_algorithm/test_gjk_libccd-inl_gjk_initializer.cpp @@ -51,7 +51,6 @@ namespace detail { namespace { using std::make_shared; -using std::move; using std::pair; using std::vector; @@ -109,8 +108,8 @@ GTEST_TEST(GjkLibccdSupportFunction, ConvexSupport) { // clang-format on const int kNumFaces = 6; const bool kThrowIfInvalid = true; - const Convex convex_C(move(vertices), kNumFaces, move(faces), - kThrowIfInvalid); + const Convex convex_C(std::move(vertices), kNumFaces, + std::move(faces), kThrowIfInvalid); /* Collection of arbitrary poses of the convex mesh: identity, translation, and rotation. */ From b4896e9bcf72feeb518b15a95f6849db23cf2be9 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Tue, 27 Jan 2026 13:21:49 -0800 Subject: [PATCH 06/32] Restore debug build to linux CI --- .github/workflows/all_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all_ci.yml b/.github/workflows/all_ci.yml index 551ad3899..6a2bfe76e 100644 --- a/.github/workflows/all_ci.yml +++ b/.github/workflows/all_ci.yml @@ -30,7 +30,7 @@ jobs: strategy: matrix: compiler: [gcc, clang] - build: [Release] + build: [Release, Debug] os: ['ubuntu-24.04'] uses: ./.github/workflows/generic_ci.yml with: From 9c9b6be6a52522cac2752ad86233e0a120b1b270 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Tue, 27 Jan 2026 13:26:18 -0800 Subject: [PATCH 07/32] Build octomap with in common release with FCL --- .github/workflows/generic_ci.yml | 2 +- ci/install_linux.sh | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/generic_ci.yml b/.github/workflows/generic_ci.yml index ca17e38d5..fde0dd957 100644 --- a/.github/workflows/generic_ci.yml +++ b/.github/workflows/generic_ci.yml @@ -29,7 +29,7 @@ jobs: - uses: actions/checkout@v3 - name: Install Prerequisites - run: ${{ format('{0}/ci/{1}', github.workspace, inputs.install-name) }} + run: ${{ format('{0}/ci/{1} {2}', github.workspace, inputs.install-name, inputs.build) }} - name: Create Build Directory run: mkdir ${{github.workspace}}/build diff --git a/ci/install_linux.sh b/ci/install_linux.sh index ef3014857..b80f8408e 100755 --- a/ci/install_linux.sh +++ b/ci/install_linux.sh @@ -5,13 +5,16 @@ sudo apt-get -qq --yes --force-yes install libeigen3-dev sudo apt-get -qq --yes --force-yes install libccd-dev # Octomap +DEFAULT_BUILD = "Release" +BUILD_ARG="${1:-$DEFAULT_BUILD}" git clone https://github.com/OctoMap/octomap cd octomap git checkout tags/v1.10.0 mkdir build cd build cmake \ - -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_OCTOVIS_SUBPROJECT=off \ + -DCMAKE_BUILD_TYPE=$BUILD_ARG \ -DCMAKE_POLICY_VERSION_MINIMUM=3.10 \ .. make From 17ecab9085a81f942632f67c216d259b8a7e4b98 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Tue, 27 Jan 2026 14:05:17 -0800 Subject: [PATCH 08/32] Apparently mac needs to be told to use modern C++ --- .github/workflows/all_ci.yml | 2 ++ .github/workflows/generic_ci.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/all_ci.yml b/.github/workflows/all_ci.yml index 6a2bfe76e..98ff9ca5c 100644 --- a/.github/workflows/all_ci.yml +++ b/.github/workflows/all_ci.yml @@ -38,6 +38,7 @@ jobs: os: ${{ matrix.os }} compiler: ${{ matrix.compiler }} build: ${{ matrix.build }} + compiler_config: mac: strategy: @@ -51,6 +52,7 @@ jobs: os: ${{ matrix.os }} compiler: ${{ matrix.compiler }} build: ${{ matrix.build }} + compiler_config: -std=c++11 # TODO: # - Revisit coveralls. diff --git a/.github/workflows/generic_ci.yml b/.github/workflows/generic_ci.yml index fde0dd957..3c86dde73 100644 --- a/.github/workflows/generic_ci.yml +++ b/.github/workflows/generic_ci.yml @@ -38,6 +38,8 @@ jobs: run: cmake -S . -B build -DCMAKE_BUILD_TYPE=${{ inputs.build }} -DFCL_TREAT_WARNINGS_AS_ERRORS=ON -DFCL_COVERALLS=OFF - name: Build + env: + CXXFLAGS: ${{ inputs.compiler_config }} run: cmake --build build -j2 - name: Run Tests From e5f9ab8bb2d53d2be452cf9c6f0b7f6fd77db53c Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 07:01:28 -0800 Subject: [PATCH 09/32] Possibly correct yaml Go from null-defined value to empty string. --- .github/workflows/all_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all_ci.yml b/.github/workflows/all_ci.yml index 98ff9ca5c..b58fb8420 100644 --- a/.github/workflows/all_ci.yml +++ b/.github/workflows/all_ci.yml @@ -38,7 +38,7 @@ jobs: os: ${{ matrix.os }} compiler: ${{ matrix.compiler }} build: ${{ matrix.build }} - compiler_config: + compiler_config: "" mac: strategy: From 94877e9af9757e446d7695d48a0f8d1252650bbc Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 07:23:17 -0800 Subject: [PATCH 10/32] Trying to clean up yaml....again --- .github/workflows/all_ci.yml | 4 ++-- .github/workflows/generic_ci.yml | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/all_ci.yml b/.github/workflows/all_ci.yml index b58fb8420..fc33f63b1 100644 --- a/.github/workflows/all_ci.yml +++ b/.github/workflows/all_ci.yml @@ -38,7 +38,7 @@ jobs: os: ${{ matrix.os }} compiler: ${{ matrix.compiler }} build: ${{ matrix.build }} - compiler_config: "" + compiler_config: '' mac: strategy: @@ -52,7 +52,7 @@ jobs: os: ${{ matrix.os }} compiler: ${{ matrix.compiler }} build: ${{ matrix.build }} - compiler_config: -std=c++11 + compiler_config: '-std=c++11' # TODO: # - Revisit coveralls. diff --git a/.github/workflows/generic_ci.yml b/.github/workflows/generic_ci.yml index 3c86dde73..45e24f291 100644 --- a/.github/workflows/generic_ci.yml +++ b/.github/workflows/generic_ci.yml @@ -15,6 +15,9 @@ on: compiler: required: true type: string + compiler_config: + required: true + type: string jobs: common-build-and-test: From 9305217b7428250df8d31fe254e868fe68af060a Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 07:27:49 -0800 Subject: [PATCH 11/32] Tweak workflow inputs --- .github/workflows/all_ci.yml | 1 - .github/workflows/generic_ci.yml | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/all_ci.yml b/.github/workflows/all_ci.yml index fc33f63b1..b3fde5776 100644 --- a/.github/workflows/all_ci.yml +++ b/.github/workflows/all_ci.yml @@ -38,7 +38,6 @@ jobs: os: ${{ matrix.os }} compiler: ${{ matrix.compiler }} build: ${{ matrix.build }} - compiler_config: '' mac: strategy: diff --git a/.github/workflows/generic_ci.yml b/.github/workflows/generic_ci.yml index 45e24f291..4cd3da866 100644 --- a/.github/workflows/generic_ci.yml +++ b/.github/workflows/generic_ci.yml @@ -16,8 +16,9 @@ on: required: true type: string compiler_config: - required: true + required: false type: string + default: '' jobs: common-build-and-test: From 47178394386d4c2b69c5bdd65f7a64541f344ead Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 07:43:46 -0800 Subject: [PATCH 12/32] Revert efforts to tweak build parameters - Leave octomap unconditionally building as release - Forego the effort to pass compiler parameters to mac --- .github/workflows/all_ci.yml | 1 - .github/workflows/generic_ci.yml | 6 ------ ci/install_linux.sh | 4 +--- ci/install_osx.sh | 1 + 4 files changed, 2 insertions(+), 10 deletions(-) diff --git a/.github/workflows/all_ci.yml b/.github/workflows/all_ci.yml index b3fde5776..6a2bfe76e 100644 --- a/.github/workflows/all_ci.yml +++ b/.github/workflows/all_ci.yml @@ -51,7 +51,6 @@ jobs: os: ${{ matrix.os }} compiler: ${{ matrix.compiler }} build: ${{ matrix.build }} - compiler_config: '-std=c++11' # TODO: # - Revisit coveralls. diff --git a/.github/workflows/generic_ci.yml b/.github/workflows/generic_ci.yml index 4cd3da866..fde0dd957 100644 --- a/.github/workflows/generic_ci.yml +++ b/.github/workflows/generic_ci.yml @@ -15,10 +15,6 @@ on: compiler: required: true type: string - compiler_config: - required: false - type: string - default: '' jobs: common-build-and-test: @@ -42,8 +38,6 @@ jobs: run: cmake -S . -B build -DCMAKE_BUILD_TYPE=${{ inputs.build }} -DFCL_TREAT_WARNINGS_AS_ERRORS=ON -DFCL_COVERALLS=OFF - name: Build - env: - CXXFLAGS: ${{ inputs.compiler_config }} run: cmake --build build -j2 - name: Run Tests diff --git a/ci/install_linux.sh b/ci/install_linux.sh index b80f8408e..97c463fe4 100755 --- a/ci/install_linux.sh +++ b/ci/install_linux.sh @@ -5,8 +5,6 @@ sudo apt-get -qq --yes --force-yes install libeigen3-dev sudo apt-get -qq --yes --force-yes install libccd-dev # Octomap -DEFAULT_BUILD = "Release" -BUILD_ARG="${1:-$DEFAULT_BUILD}" git clone https://github.com/OctoMap/octomap cd octomap git checkout tags/v1.10.0 @@ -14,7 +12,7 @@ mkdir build cd build cmake \ -DBUILD_OCTOVIS_SUBPROJECT=off \ - -DCMAKE_BUILD_TYPE=$BUILD_ARG \ + -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_POLICY_VERSION_MINIMUM=3.10 \ .. make diff --git a/ci/install_osx.sh b/ci/install_osx.sh index 26d4bfd60..5e7feca00 100755 --- a/ci/install_osx.sh +++ b/ci/install_osx.sh @@ -12,6 +12,7 @@ git checkout tags/v1.10.0 mkdir build cd build cmake \ + -DBUILD_OCTOVIS_SUBPROJECT=off \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_POLICY_VERSION_MINIMUM=3.10 \ .. From 87ce109c2c555b56c7e483357305b80b1ab81dae Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 07:55:09 -0800 Subject: [PATCH 13/32] Missed part of the reversion --- .github/workflows/generic_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/generic_ci.yml b/.github/workflows/generic_ci.yml index fde0dd957..ca17e38d5 100644 --- a/.github/workflows/generic_ci.yml +++ b/.github/workflows/generic_ci.yml @@ -29,7 +29,7 @@ jobs: - uses: actions/checkout@v3 - name: Install Prerequisites - run: ${{ format('{0}/ci/{1} {2}', github.workspace, inputs.install-name, inputs.build) }} + run: ${{ format('{0}/ci/{1}', github.workspace, inputs.install-name) }} - name: Create Build Directory run: mkdir ${{github.workspace}}/build From 277a5a5dcea4d3ef4af7ca054c01509349d2fb57 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 08:13:07 -0800 Subject: [PATCH 14/32] Small convenience tweaks 1. FCL doesn't depend on octree's dynamicETD3d subproject; disable it. 2. Print out the version of FCL being used when configuring FCL. --- CMakeLists.txt | 2 +- ci/install_linux.sh | 1 + ci/install_osx.sh | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d03ebe301..626d8510c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -283,7 +283,7 @@ if(FCL_WITH_OCTOMAP) endif() set(FCL_HAVE_OCTOMAP 1) - message(STATUS "FCL uses OctoMap") + message(STATUS "FCL uses OctoMap ${OCTOMAP_VERSION}") set(PKG_EXTERNAL_DEPS "${PKG_EXTERNAL_DEPS} octomap") else() message(STATUS "FCL does not use OctoMap") diff --git a/ci/install_linux.sh b/ci/install_linux.sh index 97c463fe4..400846917 100755 --- a/ci/install_linux.sh +++ b/ci/install_linux.sh @@ -11,6 +11,7 @@ git checkout tags/v1.10.0 mkdir build cd build cmake \ + -DBUILD_DYNAMICETD3D_SUBPROJECT=off \ -DBUILD_OCTOVIS_SUBPROJECT=off \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_POLICY_VERSION_MINIMUM=3.10 \ diff --git a/ci/install_osx.sh b/ci/install_osx.sh index 5e7feca00..062d2d144 100755 --- a/ci/install_osx.sh +++ b/ci/install_osx.sh @@ -12,6 +12,7 @@ git checkout tags/v1.10.0 mkdir build cd build cmake \ + -DBUILD_DYNAMICETD3D_SUBPROJECT=off \ -DBUILD_OCTOVIS_SUBPROJECT=off \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_POLICY_VERSION_MINIMUM=3.10 \ From bfe49eb13a2ac11e821ea1340564088b1e194ff8 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 13:02:42 -0800 Subject: [PATCH 15/32] Advance C++ standard to 17 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 626d8510c..9d8387bda 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -342,7 +342,7 @@ add_subdirectory(include/fcl) set(PKG_DESC "Flexible Collision Library") -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) configure_file(fcl.pc.in fcl.pc @ONLY) From 8a567856dce5cec82b77fb81091aacf1a56e9f3f Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 14:08:00 -0800 Subject: [PATCH 16/32] Upgrade mac to 15 (sequoia) --- .github/workflows/all_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all_ci.yml b/.github/workflows/all_ci.yml index 6a2bfe76e..8a260bd58 100644 --- a/.github/workflows/all_ci.yml +++ b/.github/workflows/all_ci.yml @@ -44,7 +44,7 @@ jobs: matrix: compiler: [clang] build: [Release, Debug] - os: ['macos-14'] + os: ['macos-15'] uses: ./.github/workflows/generic_ci.yml with: install-name: 'install_osx.sh' From ce8f41722cd0624b7336a44c7fa6e582a23986d9 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 14:17:34 -0800 Subject: [PATCH 17/32] When building octomap on apple, don't let warnings be errors --- ci/install_osx.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/install_osx.sh b/ci/install_osx.sh index 062d2d144..86ab6bbc9 100755 --- a/ci/install_osx.sh +++ b/ci/install_osx.sh @@ -11,7 +11,9 @@ cd octomap git checkout tags/v1.10.0 mkdir build cd build +# Note: octomap has some return-type warnings that make AppleClang unhappy. cmake \ + -DCMAKE_COMPILE_WARNING_AS_ERROR=OFF \ -DBUILD_DYNAMICETD3D_SUBPROJECT=off \ -DBUILD_OCTOVIS_SUBPROJECT=off \ -DCMAKE_BUILD_TYPE=Release \ From ec3fb40ffe839284a5bc046c9f3a725685947576 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 14:21:28 -0800 Subject: [PATCH 18/32] Second attempt at disabling warning/error --- ci/install_osx.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/install_osx.sh b/ci/install_osx.sh index 86ab6bbc9..19c4462c7 100755 --- a/ci/install_osx.sh +++ b/ci/install_osx.sh @@ -13,7 +13,7 @@ mkdir build cd build # Note: octomap has some return-type warnings that make AppleClang unhappy. cmake \ - -DCMAKE_COMPILE_WARNING_AS_ERROR=OFF \ + -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -Wall -Werror -Wextra -Wpedantic -Wno-return-type" \ -DBUILD_DYNAMICETD3D_SUBPROJECT=off \ -DBUILD_OCTOVIS_SUBPROJECT=off \ -DCMAKE_BUILD_TYPE=Release \ From de01c8787362f7df7440fc475f29a7c39970979f Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 14:24:49 -0800 Subject: [PATCH 19/32] Silence all the warnings --- ci/install_osx.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/install_osx.sh b/ci/install_osx.sh index 19c4462c7..a0ba76077 100755 --- a/ci/install_osx.sh +++ b/ci/install_osx.sh @@ -12,8 +12,9 @@ git checkout tags/v1.10.0 mkdir build cd build # Note: octomap has some return-type warnings that make AppleClang unhappy. +# FCL CI should not serve as octomap CI. cmake \ - -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -Wall -Werror -Wextra -Wpedantic -Wno-return-type" \ + -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -w" \ -DBUILD_DYNAMICETD3D_SUBPROJECT=off \ -DBUILD_OCTOVIS_SUBPROJECT=off \ -DCMAKE_BUILD_TYPE=Release \ From b514f028e3542922f04849eae87a78d3487d4b93 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 14:47:55 -0800 Subject: [PATCH 20/32] Octomap triggers AppleClang warnings Change the reference to a fork and branch that addresses these issues. --- ci/install_osx.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ci/install_osx.sh b/ci/install_osx.sh index a0ba76077..310003850 100755 --- a/ci/install_osx.sh +++ b/ci/install_osx.sh @@ -6,9 +6,12 @@ brew install eigen brew install libccd # Octomap -git clone https://github.com/OctoMap/octomap +# git clone https://github.com/OctoMap/octomap +# When [] is merged, go back to OctoMap/octomap and the appropriate tag. +git clone https://github.com/SeanCurtis-TRI/octomap cd octomap -git checkout tags/v1.10.0 +# git checkout tags/v1.10.0 +git checkout PR_correct_warnings mkdir build cd build # Note: octomap has some return-type warnings that make AppleClang unhappy. From 4ad757c992a347146970406d08049ee19caf446d Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 14:52:29 -0800 Subject: [PATCH 21/32] More tweaks to octomap build --- ci/install_linux.sh | 8 ++++++-- ci/install_osx.sh | 9 +++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/ci/install_linux.sh b/ci/install_linux.sh index 400846917..492956d9c 100755 --- a/ci/install_linux.sh +++ b/ci/install_linux.sh @@ -5,9 +5,13 @@ sudo apt-get -qq --yes --force-yes install libeigen3-dev sudo apt-get -qq --yes --force-yes install libccd-dev # Octomap -git clone https://github.com/OctoMap/octomap +# Note: Octomap has a number of build defects on macOS. We're trying to push a +# fix through to the main repo, but while we wait, we'll reference a forked +# repo with the fixes. We are pulling the same commit here so that linux and +# mac builds are consistent. +git clone https://github.com/SeanCurtis-TRI/octomap cd octomap -git checkout tags/v1.10.0 +git checkout PR_correct_warnings mkdir build cd build cmake \ diff --git a/ci/install_osx.sh b/ci/install_osx.sh index 310003850..24f2932a7 100755 --- a/ci/install_osx.sh +++ b/ci/install_osx.sh @@ -6,18 +6,15 @@ brew install eigen brew install libccd # Octomap -# git clone https://github.com/OctoMap/octomap -# When [] is merged, go back to OctoMap/octomap and the appropriate tag. +# Note: Octomap has a number of build defects on macOS. We're trying to push a +# fix through to the main repo, but while we wait, we'll reference a forked +# repo with the fixes. git clone https://github.com/SeanCurtis-TRI/octomap cd octomap -# git checkout tags/v1.10.0 git checkout PR_correct_warnings mkdir build cd build -# Note: octomap has some return-type warnings that make AppleClang unhappy. -# FCL CI should not serve as octomap CI. cmake \ - -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -w" \ -DBUILD_DYNAMICETD3D_SUBPROJECT=off \ -DBUILD_OCTOVIS_SUBPROJECT=off \ -DCMAKE_BUILD_TYPE=Release \ From 557afe29363b9dfbe163f9deb066ffab1e0e7942 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 15:38:10 -0800 Subject: [PATCH 22/32] Back mac back down to 14... On mac 15, we're getting Eigen version 5.0.1. A bridge too far. --- .github/workflows/all_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all_ci.yml b/.github/workflows/all_ci.yml index 8a260bd58..6a2bfe76e 100644 --- a/.github/workflows/all_ci.yml +++ b/.github/workflows/all_ci.yml @@ -44,7 +44,7 @@ jobs: matrix: compiler: [clang] build: [Release, Debug] - os: ['macos-15'] + os: ['macos-14'] uses: ./.github/workflows/generic_ci.yml with: install-name: 'install_osx.sh' From cab7a6a113c649d69ed53f4e7f9e50651daa74f0 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 15:46:40 -0800 Subject: [PATCH 23/32] Restore osx15 and pin to eigen 3.4.0 --- .github/workflows/all_ci.yml | 2 +- ci/install_osx.sh | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/all_ci.yml b/.github/workflows/all_ci.yml index 6a2bfe76e..8a260bd58 100644 --- a/.github/workflows/all_ci.yml +++ b/.github/workflows/all_ci.yml @@ -44,7 +44,7 @@ jobs: matrix: compiler: [clang] build: [Release, Debug] - os: ['macos-14'] + os: ['macos-15'] uses: ./.github/workflows/generic_ci.yml with: install-name: 'install_osx.sh' diff --git a/ci/install_osx.sh b/ci/install_osx.sh index 24f2932a7..d24e3911a 100755 --- a/ci/install_osx.sh +++ b/ci/install_osx.sh @@ -2,7 +2,10 @@ brew update > /dev/null brew install git brew install cmake -brew install eigen +#brew install eigen +brew extract --version=3.4.0 eigen homebrew/local +brew install homebrew/local/eigen@3.4.0 +brew pin eigen@3.4.0 brew install libccd # Octomap From d4267e27238e724f6e472c758f71fbe3c31049e1 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Wed, 28 Jan 2026 15:48:31 -0800 Subject: [PATCH 24/32] Patch brew rcipe --- ci/install_osx.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/install_osx.sh b/ci/install_osx.sh index d24e3911a..239485100 100755 --- a/ci/install_osx.sh +++ b/ci/install_osx.sh @@ -3,6 +3,8 @@ brew update > /dev/null brew install git brew install cmake #brew install eigen +brew tap --force homebrew/core +brew tap-new homebrew/local brew extract --version=3.4.0 eigen homebrew/local brew install homebrew/local/eigen@3.4.0 brew pin eigen@3.4.0 From 479c1ffc80f7b969b947d26afa58a0aacdda3239 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Thu, 29 Jan 2026 07:50:13 -0800 Subject: [PATCH 25/32] Adapting to mac CI failure 1. Loosen tolerance in capsule-capsule test (9.5e-7 missed the previous tolerance of 8.7e-7) 2. Change bad gtest assertions into good gtest assertions (ones that provide meaningful feedback upon failure). --- test/test_fcl_capsule_capsule.cpp | 5 +++-- test/test_fcl_geometric_shapes.cpp | 12 ++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/test/test_fcl_capsule_capsule.cpp b/test/test_fcl_capsule_capsule.cpp index 771be30c8..08015a661 100644 --- a/test/test_fcl_capsule_capsule.cpp +++ b/test/test_fcl_capsule_capsule.cpp @@ -604,7 +604,8 @@ class CapsuleCapsuleSegmentTest : public ::testing::Test { detail::capsuleCapsuleDistance(this->c1_, this->X_FC1_, this->c2_, this->X_FC2_, &distance, &p_FW1, &p_FW2); - const auto eps = constants::eps_78(); + // Slightly looser tolerance to accommodate multiple platforms. + const auto eps = constants::eps_34(); using std::abs; S error = abs(distance - this->expected_distance_); if (error > eps) { @@ -683,7 +684,7 @@ class CapsuleCapsuleSegmentTest : public ::testing::Test { Transform3 X_TC1 = Transform3::Identity(); Transform3 X_TC2 = Transform3::Identity(); - // Position C2 so that the lower end of its center lines is at the origin + // Position C2 so that the lower end of its center line is at the origin // and overlaps with the upper end of C1's center line. X_TC2.translation() << S(0), S(0), c2_.lz / S(2); diff --git a/test/test_fcl_geometric_shapes.cpp b/test/test_fcl_geometric_shapes.cpp index c76149e33..6be84b0a1 100755 --- a/test/test_fcl_geometric_shapes.cpp +++ b/test/test_fcl_geometric_shapes.cpp @@ -3947,27 +3947,27 @@ void test_shapeDistance_conecylinder() S dist; res = solver1().shapeDistance(s1, Transform3::Identity(), s2, Transform3::Identity(), &dist); - EXPECT_TRUE(dist < 0); + EXPECT_LT(dist, 0); EXPECT_FALSE(res); res = solver1().shapeDistance(s1, transform, s2, transform, &dist); - EXPECT_TRUE(dist < 0); + EXPECT_LT(dist, 0); EXPECT_FALSE(res); res = solver1().shapeDistance(s1, Transform3::Identity(), s2, Transform3(Translation3(Vector3(10.1, 0, 0))), &dist); - EXPECT_TRUE(fabs(dist - 0.1) < 0.01); + EXPECT_NEAR(dist - 0.1, 0, 0.01); EXPECT_TRUE(res); res = solver1().shapeDistance(s1, transform, s2, transform * Transform3(Translation3(Vector3(10.1, 0, 0))), &dist); - EXPECT_TRUE(fabs(dist - 0.1) < 0.02); + EXPECT_NEAR(dist - 0.1, 0, 0.02); EXPECT_TRUE(res); res = solver1().shapeDistance(s1, Transform3::Identity(), s2, Transform3(Translation3(Vector3(40, 0, 0))), &dist); - EXPECT_TRUE(fabs(dist - 30) < 0.01); + EXPECT_NEAR(dist - 30, 0, 0.01); EXPECT_TRUE(res); res = solver1().shapeDistance(s1, transform, s2, transform * Transform3(Translation3(Vector3(40, 0, 0))), &dist); - EXPECT_TRUE(fabs(dist - 30) < 0.1); + EXPECT_NEAR(dist - 30, 0, 0.01); EXPECT_TRUE(res); } From c603a127c7dbb12bd81e3769950abf3ceb5ed52c Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Thu, 29 Jan 2026 09:58:08 -0800 Subject: [PATCH 26/32] Remove mac entirely --- .github/workflows/all_ci.yml | 16 ++++------------ CHANGELOG.md | 5 +++++ CMakeLists.txt | 2 +- ci/install_linux.sh | 8 ++------ ci/install_osx.sh | 17 ++++++----------- 5 files changed, 18 insertions(+), 30 deletions(-) diff --git a/.github/workflows/all_ci.yml b/.github/workflows/all_ci.yml index 8a260bd58..ac577d422 100644 --- a/.github/workflows/all_ci.yml +++ b/.github/workflows/all_ci.yml @@ -39,18 +39,10 @@ jobs: compiler: ${{ matrix.compiler }} build: ${{ matrix.build }} - mac: - strategy: - matrix: - compiler: [clang] - build: [Release, Debug] - os: ['macos-15'] - uses: ./.github/workflows/generic_ci.yml - with: - install-name: 'install_osx.sh' - os: ${{ matrix.os }} - compiler: ${{ matrix.compiler }} - build: ${{ matrix.build }} + # TODO: the mac os jobs have been removed as part of + # https://github.com/flexible-collision-library/fcl/pull/659. Getting FCL to + # successfully build and pass tests on mac os is still an open issue. See + # https://github.com/flexible-collision-library/fcl/issues/661. # TODO: # - Revisit coveralls. diff --git a/CHANGELOG.md b/CHANGELOG.md index 5135fe986..a640e6022 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ## FCL 0 +* Breaking changes + + * Macosx is no longer part of CI. [659](https://github.com/flexible-collision-library/fcl/pull/659) + * See Issue [661](https://github.com/flexible-collision-library/fcl/issues/661) on how to restore it. + ### FCL 0.7.0 (2021-09-09) * Breaking changes diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d8387bda..626d8510c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -342,7 +342,7 @@ add_subdirectory(include/fcl) set(PKG_DESC "Flexible Collision Library") -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 14) configure_file(fcl.pc.in fcl.pc @ONLY) diff --git a/ci/install_linux.sh b/ci/install_linux.sh index 492956d9c..400846917 100755 --- a/ci/install_linux.sh +++ b/ci/install_linux.sh @@ -5,13 +5,9 @@ sudo apt-get -qq --yes --force-yes install libeigen3-dev sudo apt-get -qq --yes --force-yes install libccd-dev # Octomap -# Note: Octomap has a number of build defects on macOS. We're trying to push a -# fix through to the main repo, but while we wait, we'll reference a forked -# repo with the fixes. We are pulling the same commit here so that linux and -# mac builds are consistent. -git clone https://github.com/SeanCurtis-TRI/octomap +git clone https://github.com/OctoMap/octomap cd octomap -git checkout PR_correct_warnings +git checkout tags/v1.10.0 mkdir build cd build cmake \ diff --git a/ci/install_osx.sh b/ci/install_osx.sh index 239485100..a15758569 100755 --- a/ci/install_osx.sh +++ b/ci/install_osx.sh @@ -1,22 +1,17 @@ +# Note: this file is vestigial until issue 661 is resolved and macos CI builds +# are restored. + brew update > /dev/null brew install git brew install cmake -#brew install eigen -brew tap --force homebrew/core -brew tap-new homebrew/local -brew extract --version=3.4.0 eigen homebrew/local -brew install homebrew/local/eigen@3.4.0 -brew pin eigen@3.4.0 +brew install eigen brew install libccd # Octomap -# Note: Octomap has a number of build defects on macOS. We're trying to push a -# fix through to the main repo, but while we wait, we'll reference a forked -# repo with the fixes. -git clone https://github.com/SeanCurtis-TRI/octomap +git clone https://github.com/OctoMap/octomap cd octomap -git checkout PR_correct_warnings +git checkout tags/v1.10.0 mkdir build cd build cmake \ From 79d241d4b04e9ea6a3340c7fbf958bfba0365092 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Thu, 29 Jan 2026 10:14:03 -0800 Subject: [PATCH 27/32] Oops...took too much away. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 626d8510c..9d8387bda 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -342,7 +342,7 @@ add_subdirectory(include/fcl) set(PKG_DESC "Flexible Collision Library") -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) configure_file(fcl.pc.in fcl.pc @ONLY) From f6548c526bf5577df7df06f1627f338ee134a0fb Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Thu, 29 Jan 2026 10:58:50 -0800 Subject: [PATCH 28/32] Upgrade windows to use eigen compatible with c++ 17 --- .appveyor.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 99cde2fc0..66b53a9b6 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -38,9 +38,9 @@ before_build: cd ..\.. ) else (echo Using cached libccd) - cmd: if not exist C:\"Program Files"\Eigen\include\eigen3\Eigen\Core ( - curl -LO https://gitlab.com/libeigen/eigen/-/archive/3.2.9/eigen-3.2.9.tar.gz && - cmake -E tar zxf eigen-3.2.9.tar.gz && - cd eigen-3.2.9 && + curl -LO https://gitlab.com/libeigen/eigen/-/archive/3.4.1/eigen-3.4.1.tar.gz && + cmake -E tar zxf eigen-3.4.1.tar.gz && + cd eigen-3.4.1 && mkdir build && cd build && cmake -G "%CMAKE_GENERATOR_NAME%" -DCMAKE_BUILD_TYPE=%Configuration% .. && From 3aa2d314b4371ea30f514c0dc7d71f5aa912ba4c Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Thu, 29 Jan 2026 11:24:43 -0800 Subject: [PATCH 29/32] Eigen 3.4.1 may have been too aggressive for windows Trying 3.4.0 --- .appveyor.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 66b53a9b6..bb71700e3 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -38,9 +38,9 @@ before_build: cd ..\.. ) else (echo Using cached libccd) - cmd: if not exist C:\"Program Files"\Eigen\include\eigen3\Eigen\Core ( - curl -LO https://gitlab.com/libeigen/eigen/-/archive/3.4.1/eigen-3.4.1.tar.gz && - cmake -E tar zxf eigen-3.4.1.tar.gz && - cd eigen-3.4.1 && + curl -LO https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz && + cmake -E tar zxf eigen-3.4.0.tar.gz && + cd eigen-3.4.0 && mkdir build && cd build && cmake -G "%CMAKE_GENERATOR_NAME%" -DCMAKE_BUILD_TYPE=%Configuration% .. && From a6964355c8eb41b6ef118483ce812808830b3ca4 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Thu, 29 Jan 2026 11:37:34 -0800 Subject: [PATCH 30/32] More windows accommodation --- CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d8387bda..fbb4be8ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -342,7 +342,13 @@ add_subdirectory(include/fcl) set(PKG_DESC "Flexible Collision Library") +if(WIN32) +# It's not clear what is necessary to make C++17 and eigen play together nicely +# on windows. TODO: FIgure this out. +set(CMAKE_CXX_STANDARD 14) +else() set(CMAKE_CXX_STANDARD 17) +endif() configure_file(fcl.pc.in fcl.pc @ONLY) From 66f8421312f088c3fc1ae0dc4a5169a477abd7c6 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Thu, 29 Jan 2026 12:03:14 -0800 Subject: [PATCH 31/32] Windows grousing --- test/geometry/shape/test_convex.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/geometry/shape/test_convex.cpp b/test/geometry/shape/test_convex.cpp index 5924af495..cc242f40c 100644 --- a/test/geometry/shape/test_convex.cpp +++ b/test/geometry/shape/test_convex.cpp @@ -778,7 +778,7 @@ class TessellatedSphere final : public Polytope { public: TessellatedSphere() : Polytope(1.0) { // The angle between the latitude lines measured along the prime meridian. - const double dphi = M_PI / 8; + const double dphi = constants::pi() / 8; auto slice_height = [dphi](int slice_index) { // Assumes 1 <= slice_index < 8. return std::cos(slice_index * dphi); @@ -791,7 +791,7 @@ class TessellatedSphere final : public Polytope { vertices_->push_back({0, 0, 1}); // Now create the bands of vertices between slices 1 & 2, 2 & 3, etc. // The angle between the longitude lines measured along the equator. - const double dtheta = 2 * M_PI / 8; + const double dtheta = 2 * constants::pi() / 8; for (int slice = 1; slice < 8; ++slice) { double z = slice_height(slice); double r = slice_radius(slice); From 2eb90bf3e042e17d86454e40188d8c0dc97f7c03 Mon Sep 17 00:00:00 2001 From: Sean Curtis Date: Mon, 2 Feb 2026 06:50:34 -0800 Subject: [PATCH 32/32] Leave windows alone --- .appveyor.yml | 6 +++--- CMakeLists.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index bb71700e3..99cde2fc0 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -38,9 +38,9 @@ before_build: cd ..\.. ) else (echo Using cached libccd) - cmd: if not exist C:\"Program Files"\Eigen\include\eigen3\Eigen\Core ( - curl -LO https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz && - cmake -E tar zxf eigen-3.4.0.tar.gz && - cd eigen-3.4.0 && + curl -LO https://gitlab.com/libeigen/eigen/-/archive/3.2.9/eigen-3.2.9.tar.gz && + cmake -E tar zxf eigen-3.2.9.tar.gz && + cd eigen-3.2.9 && mkdir build && cd build && cmake -G "%CMAKE_GENERATOR_NAME%" -DCMAKE_BUILD_TYPE=%Configuration% .. && diff --git a/CMakeLists.txt b/CMakeLists.txt index fbb4be8ca..db07db33d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -344,7 +344,7 @@ set(PKG_DESC "Flexible Collision Library") if(WIN32) # It's not clear what is necessary to make C++17 and eigen play together nicely -# on windows. TODO: FIgure this out. +# on windows. TODO: Figure this out. set(CMAKE_CXX_STANDARD 14) else() set(CMAKE_CXX_STANDARD 17)