From a3afa5740a4f29cab512f50e6685c157e2d2d0d6 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Thu, 15 Aug 2024 17:13:19 -0700 Subject: [PATCH 01/14] Fix c++ warnings --- gtsam/3rdparty/Eigen/Eigen/src/SparseCore/TriangularSolver.h | 2 -- .../Eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h | 5 ----- gtsam/3rdparty/metis/GKlib/pdb.c | 2 +- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/TriangularSolver.h b/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/TriangularSolver.h index f9c56ba798..6b5fdb3e6e 100644 --- a/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/TriangularSolver.h +++ b/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/TriangularSolver.h @@ -270,11 +270,9 @@ struct sparse_solve_triangular_sparse_selector } - Index count = 0; // FIXME compute a reference value to filter zeros for (typename AmbiVector::Iterator it(tempVector/*,1e-12*/); it; ++it) { - ++ count; // std::cerr << "fill " << it.index() << ", " << col << "\n"; // std::cout << it.value() << " "; // FIXME use insertBack diff --git a/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h b/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h index 6f75d500e5..7aecbcad8e 100644 --- a/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +++ b/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h @@ -75,8 +75,6 @@ void SparseLUImpl::heap_relax_snode (const Index n, IndexVe // Identify the relaxed supernodes by postorder traversal of the etree Index snode_start; // beginning of a snode StorageIndex k; - Index nsuper_et_post = 0; // Number of relaxed snodes in postordered etree - Index nsuper_et = 0; // Number of relaxed snodes in the original etree StorageIndex l; for (j = 0; j < n; ) { @@ -88,7 +86,6 @@ void SparseLUImpl::heap_relax_snode (const Index n, IndexVe parent = et(j); } // Found a supernode in postordered etree, j is the last column - ++nsuper_et_post; k = StorageIndex(n); for (Index i = snode_start; i <= j; ++i) k = (std::min)(k, inv_post(i)); @@ -97,7 +94,6 @@ void SparseLUImpl::heap_relax_snode (const Index n, IndexVe { // This is also a supernode in the original etree relax_end(k) = l; // Record last column - ++nsuper_et; } else { @@ -107,7 +103,6 @@ void SparseLUImpl::heap_relax_snode (const Index n, IndexVe if (descendants(i) == 0) { relax_end(l) = l; - ++nsuper_et; } } } diff --git a/gtsam/3rdparty/metis/GKlib/pdb.c b/gtsam/3rdparty/metis/GKlib/pdb.c index b4d222653e..018846604f 100644 --- a/gtsam/3rdparty/metis/GKlib/pdb.c +++ b/gtsam/3rdparty/metis/GKlib/pdb.c @@ -131,7 +131,7 @@ that structure. /************************************************************************/ pdbf *gk_readpdbfile(char *fname) { /* {{{ */ int i=0, res=0; - char linetype[6]; + char linetype[7]; int aserial; char aname[5] = " \0"; char altLoc = ' '; From 1aa5883964da8bc036151c563f4f51dc51a26ef0 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sat, 24 Aug 2024 17:18:55 -0700 Subject: [PATCH 02/14] Upgrade action --- .github/workflows/build-linux.yml | 2 +- .github/workflows/build-macos.yml | 2 +- .github/workflows/build-python.yml | 2 +- .github/workflows/build-special.yml | 2 +- .github/workflows/build-windows.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 4502dbe0e0..da398ad235 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -56,7 +56,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install Dependencies run: | diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index 72e27e3b68..d75042ae82 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -38,7 +38,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install Dependencies run: | diff --git a/.github/workflows/build-python.yml b/.github/workflows/build-python.yml index 037704a36b..0367176240 100644 --- a/.github/workflows/build-python.yml +++ b/.github/workflows/build-python.yml @@ -65,7 +65,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install (Linux) if: runner.os == 'Linux' diff --git a/.github/workflows/build-special.yml b/.github/workflows/build-special.yml index 164646e3e1..3a7dd974dc 100644 --- a/.github/workflows/build-special.yml +++ b/.github/workflows/build-special.yml @@ -83,7 +83,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install (Linux) if: runner.os == 'Linux' diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index dcf742c059..1bda7e40ac 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -44,7 +44,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup msbuild uses: ilammy/msvc-dev-cmd@v1 From 981ec728727c9e810b18d27c166763adaacdb7a5 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sun, 25 Aug 2024 11:00:39 -0700 Subject: [PATCH 03/14] Remove unused variable --- gtsam/discrete/tests/testDiscreteConditional.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtsam/discrete/tests/testDiscreteConditional.cpp b/gtsam/discrete/tests/testDiscreteConditional.cpp index 172dd0fa1f..2482a86a25 100644 --- a/gtsam/discrete/tests/testDiscreteConditional.cpp +++ b/gtsam/discrete/tests/testDiscreteConditional.cpp @@ -292,7 +292,7 @@ TEST(DiscreteConditional, choose) { /* ************************************************************************* */ // Check argmax on P(C|D) and P(D), plus tie-breaking for P(B) TEST(DiscreteConditional, Argmax) { - DiscreteKey B(2, 2), C(2, 2), D(4, 2); + DiscreteKey C(2, 2), D(4, 2); DiscreteConditional B_prior(D, "1/1"); DiscreteConditional D_prior(D, "1/3"); DiscreteConditional C_given_D((C | D) = "1/4 1/1"); From e60477f3c7a65f163ce09002e7e4599c34e118dc Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sun, 25 Aug 2024 11:39:04 -0700 Subject: [PATCH 04/14] Add M1 runner --- .github/workflows/build-python.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/build-python.yml b/.github/workflows/build-python.yml index 0367176240..1012c7582c 100644 --- a/.github/workflows/build-python.yml +++ b/.github/workflows/build-python.yml @@ -32,6 +32,7 @@ jobs: ubuntu-20.04-gcc-9-tbb, ubuntu-20.04-clang-9, macos-12-xcode-14.2, + macos-14-xcode-15.4, windows-2022-msbuild, ] @@ -59,6 +60,11 @@ jobs: compiler: xcode version: "14.2" + - name: macos-14-xcode-15.4 + os: macos-14 + compiler: xcode + version: "15.4" + - name: windows-2022-msbuild os: windows-2022 platform: 64 From 1c8c1f2e799b3365475e18d4ede89806e04373d6 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sun, 25 Aug 2024 11:55:06 -0700 Subject: [PATCH 05/14] Add venv on mac --- .github/workflows/build-python.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build-python.yml b/.github/workflows/build-python.yml index 1012c7582c..c5e63de9de 100644 --- a/.github/workflows/build-python.yml +++ b/.github/workflows/build-python.yml @@ -110,6 +110,10 @@ jobs: echo "CC=clang" >> $GITHUB_ENV echo "CXX=clang++" >> $GITHUB_ENV + python$PYTHON_VERSION -m venv venv + source venv/bin/activate + python -m pip install --upgrade pip + - name: Setup msbuild (Windows) if: runner.os == 'Windows' uses: ilammy/msvc-dev-cmd@v1 From c3503064c863815a80daf7b320168c4a0fa02949 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sun, 25 Aug 2024 12:07:47 -0700 Subject: [PATCH 06/14] Try activating venv --- .github/workflows/build-python.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-python.yml b/.github/workflows/build-python.yml index c5e63de9de..54ea4485cb 100644 --- a/.github/workflows/build-python.yml +++ b/.github/workflows/build-python.yml @@ -174,7 +174,11 @@ jobs: - name: Install Python Dependencies shell: bash - run: python$PYTHON_VERSION -m pip install -r python/dev_requirements.txt + run: | + if [ "${{ runner.os }}" == "macOS" ]; then + source venv/bin/activate + fi + python$PYTHON_VERSION -m pip install -r python/dev_requirements.txt - name: Build shell: bash From 387349839b6537ff0dd814ccf673cb747e219b36 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sun, 25 Aug 2024 12:22:08 -0700 Subject: [PATCH 07/14] Fix venv for all subsequent actions --- .github/workflows/build-python.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-python.yml b/.github/workflows/build-python.yml index 54ea4485cb..9a9d44f5cd 100644 --- a/.github/workflows/build-python.yml +++ b/.github/workflows/build-python.yml @@ -112,6 +112,7 @@ jobs: python$PYTHON_VERSION -m venv venv source venv/bin/activate + echo "PATH=$(pwd)/venv/bin:$PATH" >> $GITHUB_ENV python -m pip install --upgrade pip - name: Setup msbuild (Windows) @@ -174,11 +175,7 @@ jobs: - name: Install Python Dependencies shell: bash - run: | - if [ "${{ runner.os }}" == "macOS" ]; then - source venv/bin/activate - fi - python$PYTHON_VERSION -m pip install -r python/dev_requirements.txt + run: python$PYTHON_VERSION -m pip install -r python/dev_requirements.txt - name: Build shell: bash From fad8e63fcea9fc074c843e365409e6461fbc29d0 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sun, 25 Aug 2024 13:02:37 -0700 Subject: [PATCH 08/14] try non-venv way --- .github/workflows/build-python.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/build-python.yml b/.github/workflows/build-python.yml index 9a9d44f5cd..ed1b4cbdbb 100644 --- a/.github/workflows/build-python.yml +++ b/.github/workflows/build-python.yml @@ -110,11 +110,6 @@ jobs: echo "CC=clang" >> $GITHUB_ENV echo "CXX=clang++" >> $GITHUB_ENV - python$PYTHON_VERSION -m venv venv - source venv/bin/activate - echo "PATH=$(pwd)/venv/bin:$PATH" >> $GITHUB_ENV - python -m pip install --upgrade pip - - name: Setup msbuild (Windows) if: runner.os == 'Windows' uses: ilammy/msvc-dev-cmd@v1 @@ -175,7 +170,7 @@ jobs: - name: Install Python Dependencies shell: bash - run: python$PYTHON_VERSION -m pip install -r python/dev_requirements.txt + run: python$PYTHON_VERSION -m pip install --break-system-packages --user -r python/dev_requirements.txt - name: Build shell: bash From 9dbbb328142c9b9bfa6c99255843fcbb1b0686a5 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sun, 25 Aug 2024 13:17:16 -0700 Subject: [PATCH 09/14] Add dangerous flag --- python/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index ba55ac2af2..8fd092e8d0 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -266,7 +266,7 @@ endif() # Add custom target so we can install with `make python-install` set(GTSAM_PYTHON_INSTALL_TARGET python-install) add_custom_target(${GTSAM_PYTHON_INSTALL_TARGET} - COMMAND ${PYTHON_EXECUTABLE} -m pip install --user . + COMMAND ${PYTHON_EXECUTABLE} -m pip install --break-system-packages --user . DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY}) From b9e68ec79b0d0224464b33332efd5b818961018d Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sun, 25 Aug 2024 13:17:28 -0700 Subject: [PATCH 10/14] Add M1 build --- .github/workflows/build-macos.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index d75042ae82..e4c78bf67c 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -26,6 +26,7 @@ jobs: # See https://help.github.com/en/articles/workflow-syntax-for-github-actions. name: [ macos-12-xcode-14.2, + macos-14-xcode-15.4, ] build_type: [Debug, Release] @@ -36,6 +37,11 @@ jobs: compiler: xcode version: "14.2" + - name: macos-14-xcode-15.4 + os: macos-14 + compiler: xcode + version: "15.4" + steps: - name: Checkout uses: actions/checkout@v4 From 9307536827bd44d7318cb42b2e873ce5dcca598d Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sun, 25 Aug 2024 13:49:43 -0700 Subject: [PATCH 11/14] Add venv on Mac and do not use --user flag in that case --- .github/workflows/build-python.yml | 10 +++++++++- python/CMakeLists.txt | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-python.yml b/.github/workflows/build-python.yml index ed1b4cbdbb..cb465309ea 100644 --- a/.github/workflows/build-python.yml +++ b/.github/workflows/build-python.yml @@ -168,9 +168,17 @@ jobs: run: | bash .github/scripts/python.sh -d + - name: Create virtual on MacOS + if: runner.os == 'macOS' + run: | + python$PYTHON_VERSION -m venv venv + source venv/bin/activate + echo "PATH=$(pwd)/venv/bin:$PATH" >> $GITHUB_ENV + python -m pip install --upgrade pip + - name: Install Python Dependencies shell: bash - run: python$PYTHON_VERSION -m pip install --break-system-packages --user -r python/dev_requirements.txt + run: python$PYTHON_VERSION -m pip install -r python/dev_requirements.txt - name: Build shell: bash diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 8fd092e8d0..e131038391 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -266,7 +266,7 @@ endif() # Add custom target so we can install with `make python-install` set(GTSAM_PYTHON_INSTALL_TARGET python-install) add_custom_target(${GTSAM_PYTHON_INSTALL_TARGET} - COMMAND ${PYTHON_EXECUTABLE} -m pip install --break-system-packages --user . + COMMAND ${PYTHON_EXECUTABLE} -m pip install $(if [ -z "$VIRTUAL_ENV" ]; then echo "--user"; fi) . DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY}) From d1d6942bde767ec7521bccfa7d410f1da3323925 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sun, 25 Aug 2024 14:40:44 -0700 Subject: [PATCH 12/14] Correct cmake line --- python/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index e131038391..e908d46712 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -266,7 +266,7 @@ endif() # Add custom target so we can install with `make python-install` set(GTSAM_PYTHON_INSTALL_TARGET python-install) add_custom_target(${GTSAM_PYTHON_INSTALL_TARGET} - COMMAND ${PYTHON_EXECUTABLE} -m pip install $(if [ -z "$VIRTUAL_ENV" ]; then echo "--user"; fi) . + COMMAND ${PYTHON_EXECUTABLE} -m pip install `if [ -z "$VIRTUAL_ENV" ]; then echo --user; fi` . DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY}) From 0ba23ccbaa0777c7f912b5c93ed25463e801eb1a Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sun, 25 Aug 2024 15:31:25 -0700 Subject: [PATCH 13/14] Try w cross-platform install --- python/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index e908d46712..2151557b62 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -266,7 +266,7 @@ endif() # Add custom target so we can install with `make python-install` set(GTSAM_PYTHON_INSTALL_TARGET python-install) add_custom_target(${GTSAM_PYTHON_INSTALL_TARGET} - COMMAND ${PYTHON_EXECUTABLE} -m pip install `if [ -z "$VIRTUAL_ENV" ]; then echo --user; fi` . + COMMAND ${PYTHON_EXECUTABLE} -c "import sys, subprocess; cmd = [sys.executable, '-m', 'pip', 'install']; if not hasattr(sys, 'real_prefix') and not (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix): cmd.append('--user'); cmd.append('.'); subprocess.check_call(cmd)" DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY}) From ce74b2b0c195c34dd8a1c6ef7705b0a2b1af3881 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sun, 25 Aug 2024 15:47:57 -0700 Subject: [PATCH 14/14] Elaborate solution that works on windows as well --- python/CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 2151557b62..7e270e4e86 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -264,11 +264,13 @@ if(GTSAM_UNSTABLE_BUILD_PYTHON) endif() # Add custom target so we can install with `make python-install` +# Note below we make sure to install with --user iff not in a virtualenv set(GTSAM_PYTHON_INSTALL_TARGET python-install) add_custom_target(${GTSAM_PYTHON_INSTALL_TARGET} - COMMAND ${PYTHON_EXECUTABLE} -c "import sys, subprocess; cmd = [sys.executable, '-m', 'pip', 'install']; if not hasattr(sys, 'real_prefix') and not (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix): cmd.append('--user'); cmd.append('.'); subprocess.check_call(cmd)" + COMMAND ${PYTHON_EXECUTABLE} -c "import sys, subprocess; cmd = [sys.executable, '-m', 'pip', 'install']; has_venv = hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix); cmd.append('--user' if not has_venv else ''); cmd.append('.'); subprocess.check_call([c for c in cmd if c])" DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} - WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY}) + WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY} + VERBATIM) # Custom make command to run all GTSAM Python tests add_custom_target(