Repository navigation
Add openocean-messages and moos-ivp as submodules, with an init script - #2
Merged
Merged
Conversation
external/openocean-messages and external/moos-ivp are pinned at their main branches; moos-ivp is shallow, since its full history is about 160 MB. init.sh checks out the submodules and installs the Ubuntu packages to build them and IvPico: openocean-messages' C++ dependencies (through its own init.sh --cxx), Protobuf, and the compiler and build tools for moos-ivp's libraries and non-GUI apps. The README describes the build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
build-moos.sh builds MOOSToolsUI, which needs FLTK, unless given --minrobot; build-ivp.sh's equivalent is --nogui. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
…ild/ openocean-messages builds from its submodule into build/external, so the checkout stays clean, and IvPico finds it there. init.sh now installs Ninja for it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
…ackage(IVP) external/moos-ivp moves to GobySoft/moos-ivp's helm-libraries branch, which adds IVP_BUILD_HELM_LIBS_ONLY: lib_helmivp and the libraries it links, without MOOS or its apps, optionally as shared libraries. build.sh builds them shared into build/external/moos-ivp and installs them into build/external/install, since find_package(IVP) only works from an installation; nothing is built in the submodule. CMake finds them with find_package(IVP CONFIG), and the helm_libs test creates waypoint and COLREGS behaviors and solves a course with them. init.sh no longer installs make and patch, which only the full MOOS build needed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
4 tasks done
…amd64 and arm64 Each job runs init.sh, build.sh, and the tests in a clean Ubuntu container, so it catches any dependency init.sh doesn't install. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
This was referenced Oct 27, 2026
1 task done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR brings IvPico's two upstream dependencies into the repository as submodules. It adds
init.shto set up a checkout,build.shto build IvPico against them (including MOOS-IvP's helm libraries as shared libraries), and CI.Submodules (
external/)external/openocean-messagesmain(11a1328): theNavigationandControlSetpointmessagesexternal/moos-ivpmoos-ivpis markedshallow = true, since its full history is about 160 MB compared with about 30 MB at depth 1.Before merging:
external/moos-ivppoints at GobySoft/moos-ivp#1's branch. Once that PR merges, move the pointer to the merge commit on GobySoft'smain.init.shIt runs
git submodule update --init --recommend-shallow, then installs the Ubuntu packages to build the submodules and IvPico:cmake,ninja-build,g++,git,ca-certificates,protobuf-compiler,libprotobuf-dev;init.sh --cxx, so the two stay in step. This also seeds openocean-messages' build options to C++ only.MOOS-IvP's helm libraries need nothing more: no MOOS, PROJ,
patch, or FLTK.build.shIt builds everything in
build/, and nothing inside the submodules:build/external/openocean-messages;IVP_BUILD_HELM_LIBS_ONLY,BUILD_SHARED_LIBS), intobuild/external/moos-ivp, then installed intobuild/external/install, sincefind_package(IVP)only works from an installation;All three use Ninja. Arguments go to IvPico's CMake (e.g.
-DCMAKE_BUILD_TYPE=Release), andBUILD_DIRoverridesbuild, as in openocean-messages'build.sh. It stops with "run ./init.sh first" if a submodule isn't checked out.CMake
CMakeLists.txtfinds the helm libraries withfind_package(IVP CONFIG REQUIRED); their imported targets areIVP::helmivp,IVP::ivpsolve, and so on.include(CTest)and a first test,helm_libs(src/test/check_helm_libs.cpp). It creates a waypoint and a COLREGS behavior withBFactoryStatic, which loads every helm library, and solves a one-function course problem with the IvP solver.CI (
.github/workflows/ci.yml)A matrix of Ubuntu 24.04 and 26.04 containers, on amd64 (
ubuntu-24.04) and arm64 (ubuntu-24.04-arm) runners: four jobs. Each one runs on pushes tomainand on pull requests:git, so thatactions/checkoutmakes a real clone thatinit.shcan check the submodules out in;./init.sh,./build.sh, andctest.Since each container starts clean, a dependency
init.shforgets fails the build.README
external/to the repository structure../init.sh,./build.shandctest, with whatbuild.shbuilds where, and how to update a submodule.Test plan
ubuntu:24.04andubuntu:26.04containers from a fresh clone,./init.sh,./build.shandctestpass, andgit status(submodules included) is clean afterwards.build.shreruns incrementally, honoursBUILD_DIRand passes arguments to CMake, and stops with a pointer toinit.shwhen the submodules are missing.init.sh --helpprints its usage; an unknown option exits with an error.build-moos.sh --minrobot,build-ivp.sh --nogui) also built from this submodule in a clean container. That run is what found that it neededpatchand--minrobot, both no longer needed.🤖 Generated with Claude Code
https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp