Skip to content

Use openocean-build packages instead of submodules - #20

Open
tsaubergine wants to merge 2 commits into
mainfrom
use-openocean-build-packages
Open

tsaubergine wants to merge 2 commits into
mainfrom
use-openocean-build-packages

Conversation

@tsaubergine

@tsaubergine tsaubergine commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

Replaces both submodules with Open Ocean Software's continuous packages from openocean-build (apt.oceansoft.org). IvPico now has no submodules.

Changes

  • init.sh installs libopenocean-messages-dev and libivp-helm-dev.
    • If apt doesn't have them yet, it adds apt.oceansoft.org/continuous/<distro>-<dist>, the same way it adds the Goby source.
    • The key comes from openocean-build's keys/continuous.asc, and the script stops unless its fingerprint is DAF0 8DD7 788E 6C84 C6F8 E8D3 E59E 1A81 FECD B228.
    • It no longer checks out submodules.
  • openocean-messages: the external/openocean-messages submodule is removed.
    • The package is 0.0.1: upstream renumbered from 0.1.0 without changing the messages. So find_package(openocean_messages 0.0.1 …).
  • MOOS-IvP: the external/moos-ivp submodule is removed in favour of libivp-helm-dev.
    • That package is the helm libraries built without MOOS, from GobySoft's ivp-without-moos.
    • It installs under its own prefix, /usr/lib/<arch>/ivp-helm, apart from a full MOOS-IvP, so find_package(IVP …) gets a HINTS for it.
    • The libraries are found at run time through its ld.so.conf.d entry.
  • build.sh builds only IvPico.
  • CI no longer installs git, which was only needed for the submodules.
  • src/test/missions/record.sh shallow-clones ivp-without-moos (override with MOOS_IVP_BRANCH) to build all of MOOS-IvP for recording. It also adds MOOS-IvP's bin/ to PATH, which is where the current build puts MOOSDB.
  • Alpha launch: a new get_images.sh downloads the background images that pMarineViewer and set_datum_warp.sh used to read from the submodule. These are forrest19 and MIT_SP from MOOS-IvP's ivp/data, about 21 MB, saved into an ignored images/ directory. viewer.launch and set_datum_warp.sh now look there.
  • READMEs updated to match.

Testing

  • Clean Ubuntu 26.04 and 24.04 containers (init.sh, build.sh, ctest): both packages install from apt.oceansoft.org, and all 15 tests pass, including the replays of MOOS-IvP missions and the Goby closed-loop missions.
  • With both packages installed here, CMake finds IVP at /usr/lib/x86_64-linux-gnu/ivp-helm/lib/cmake/IVP, and goby_helm_ivp loads libhelmivp.so.0 from that prefix.
  • get_images.sh downloads the four files, and set_datum_warp.sh picks MIT_SP.tif for the MIT datum and forrest19.tif for the default.
  • CI on all four jobs.
    • The first run's Ubuntu 24.04 arm64 job failed replay_s7_golf, from an uninitialised m_mark_time in MOOS-IvP's BHV_PeriodicSurface.
    • That's fixed in BHV_PeriodicSurface: initialise m_mark_time moos-ivp#4, which went into the continuous libivp-helm (24.8.1+git5535.gc535209). The re-run passes.
  • record.sh with the cloned branch: not run here.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp

init.sh installs libopenocean-messages-dev, adding Open Ocean Software's
continuous builds (with the key checked against its fingerprint) if apt
doesn't have it yet. The openocean-messages submodule is gone, and
build.sh builds only MOOS-IvP's helm libraries before IvPico.

The packaged openocean-messages is 0.0.1 (upstream renumbered from 0.1.0
with no change to the messages).

MOOS-IvP stays a submodule: openocean-build packages upstream MOOS-IvP
releases, which don't have the helm-without-MOOS changes yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp
…module

init.sh installs libivp-helm-dev, Open Ocean Software's continuous build
of MOOS-IvP's helm libraries without MOOS (GobySoft's ivp-without-moos),
from the same source as openocean-messages. It installs into its own
prefix, so find_package(IVP) gets a hint. The moos-ivp submodule is gone:
build.sh builds only IvPico, and init.sh no longer checks out submodules
(nor does CI install git for them).

record.sh clones ivp-without-moos (MOOS_IVP_BRANCH) to build all of
MOOS-IvP for recording, and the alpha launch's get_images.sh downloads the
MOOS-IvP background images that pMarineViewer and set_datum_warp.sh used
from the submodule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLcYK4e29B5FiPbDDJy5fp

Copy link
Copy Markdown
Member Author

Ubuntu 24.04 (arm64) fails replay_s7_golf; the other three jobs pass:

FAIL  bhv_periodic_surface PENDING_SURFACE (1 changes, 1 off)
        pHelmIvP iteration 20: "-2147483648.00000", IvPico iteration 20: "2.14748e+09"

The cause is an uninitialised read in MOOS-IvP, not IvPico.

  • BHV_PeriodicSurface::onRunState() posts PENDING_SURFACE = m_period - (m_curr_time - m_mark_time) before its m_first_iteration block sets m_mark_time.
  • The constructor never initialises m_mark_time, so the first run-state iteration posts a value computed from whatever was in memory. That value overflows postIntMessage's (int) conversion: INT_MIN in the recording, INT_MAX here.
  • Both the recording and the replay posted this undefined value. They matched while IvPico built the helm libraries itself, and stopped matching with the packaged libivp-helm0 on 24.04 arm64. A re-run wouldn't settle anything, since it could pass by luck.

The fix is to initialise m_mark_time in BHV_PeriodicSurface's constructor, in MOOS-IvP (ivp/src/lib_behaviors-marine/BHV_PeriodicSurface.cpp). None exists yet, and where it goes (GobySoft's ivp-without-moos, which the package is built from, or a separate upstream fix) is being decided before anything is pushed.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants