[us-commits] [ehb54/ultrascan3] d2cc6b: grpy: build under C++11, test at that standard, an...

emre brookes noreply at github.com
Tue Aug 18 13:29:18 MDT 2026


  Branch: refs/heads/ehb54-issue-980
  Home:   https://github.com/ehb54/ultrascan3
  Commit: d2cc6bdbcf7e83d3586a599fbc2e178dae0214c7
      https://github.com/ehb54/ultrascan3/commit/d2cc6bdbcf7e83d3586a599fbc2e178dae0214c7
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-08-18 (Tue, 18 Aug 2026)

  Changed paths:
    M us_somo/develop/grpy/grpy_exposure.hpp
    M us_somo/develop/grpy/grpy_shell.hpp
    M us_somo/develop/grpy/tests/run.sh
    M us_somo/develop/grpy/tests/test_shell.cpp
    M us_somo/develop/src/us_hydrodyn_grpy.cpp
    M us_somo/develop/src/us_hydrodyn_other.cpp
    M us_somo/develop/src/us_hydrodyn_settings.cpp

  Log Message:
  -----------
  grpy: build under C++11, test at that standard, and brace the module

Upstreams the fixes made while merging this module to main in
ehb54/ultrascan3#524, so somo-dev and main do not diverge.

C++11 correctness. SOMO supports Qt5 as well as Qt6, so it has to build under
the older compilers Qt5 is used with, and nothing in the build raises the
language standard. grpy_shell.hpp did not honour that:

  grpy/grpy_shell.hpp: error: no viable overloaded '='
  note: cannot convert initializer list argument to
        'grpy::ShellReport::Provenance'

ShellReport::Provenance carries default member initializers, which makes it a
non-aggregate before C++14, so `rep.prov[m] = { ... }` is not valid C++11. It
is assigned field by field now. The initializers stay -- prov is filled by
assign() and they are what make an untouched entry read false/nullptr rather
than indeterminate.

Why it was not caught: grpy/tests/run.sh compiled the module at -std=c++17, a
HIGHER standard than the product it ships in, so the tests passed on code the
Qt5 build would not accept. Testing above the product's standard hides
breakage instead of finding it. run.sh now uses -std=gnu++11, to be raised
when SOMO's own standard moves -- a question for the Qt6 migration. Any
compiler new enough to default to gnu++17 built it either way, which is why
CI stayed green while a Qt5 macOS build failed outright.

Coding standards. The four module files and the three us_hydrodyn_*.cpp sites
that this module added are braced per the UltraScan III standards, using
ehb54/grpy-cpp tools/us3_style.pl. Braces only on the us_hydrodyn_*.cpp
files -- no spacing or reindentation of surrounding code.

Verified here: 0 C++11 errors across grpy_shell, grpy_exposure, grpy_types
and grpy_process; test_shell and test_process both ALL PASS at -std=gnu++11;
us3_style.pl --check reports 0 violations on the module.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>


  Commit: f69a9ce530ac833afc56bea0f1cb219effed1304
      https://github.com/ehb54/ultrascan3/commit/f69a9ce530ac833afc56bea0f1cb219effed1304
  Author: emre brookes <ehb54 at users.noreply.github.com>
  Date:   2026-08-18 (Tue, 18 Aug 2026)

  Changed paths:
    M us_somo/develop/grpy/grpy_exposure.hpp
    M us_somo/develop/grpy/grpy_shell.hpp
    M us_somo/develop/grpy/tests/run.sh
    M us_somo/develop/grpy/tests/test_shell.cpp
    M us_somo/develop/src/us_hydrodyn_grpy.cpp
    M us_somo/develop/src/us_hydrodyn_other.cpp
    M us_somo/develop/src/us_hydrodyn_settings.cpp

  Log Message:
  -----------
  Merge pull request #525 from ehb54/fix-cpp11-and-braces

grpy: build under C++11, test at that standard, and brace the module


  Commit: 1c7c22d09eff1e187fefb0dee8cdb3de41d1ebc7
      https://github.com/ehb54/ultrascan3/commit/1c7c22d09eff1e187fefb0dee8cdb3de41d1ebc7
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-08-18 (Tue, 18 Aug 2026)

  Changed paths:
    M us_somo/develop/grpy/grpy_exposure.hpp
    M us_somo/develop/grpy/grpy_shell.hpp
    M us_somo/develop/grpy/tests/run.sh
    M us_somo/develop/grpy/tests/test_shell.cpp
    M us_somo/develop/src/us_hydrodyn_grpy.cpp
    M us_somo/develop/src/us_hydrodyn_other.cpp
    M us_somo/develop/src/us_hydrodyn_settings.cpp

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/somo-dev' into ehb54-issue-980


  Commit: bad6a490296c9e581ece205b096a1e44fbe87387
      https://github.com/ehb54/ultrascan3/commit/bad6a490296c9e581ece205b096a1e44fbe87387
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-08-18 (Tue, 18 Aug 2026)

  Changed paths:
    M us_somo/develop/src/us_hydrodyn_residue_builder.cpp

  Log Message:
  -----------
  perceiver: build the sphere list field by field, for C++11

somo_volume::Sphere carries default member initializers, which make it a
non-aggregate before C++14, so `sph.push_back({x, y, z, r})` is not valid
C++11:

  error: no matching member function for call to 'push_back'
  us_hydrodyn_residue_builder.cpp:47

Exactly the trap PR #525 fixed in grpy's ShellReport::Provenance. Assigned
field by field now; the initializers stay, since they are what make an
untouched Sphere read 0 rather than indeterminate.

Why it was not caught here either: this clone's local.pri sets
`CONFIG += c++14`, and local.pri is gitignored, so the standard the Qt build
uses is per-clone rather than a property of the tree. A clone with the
commented-out `-std=gnu++11` lines active would have failed to build this
file. The other six perceiver sources in libus_somo.pro were checked at
-std=gnu++11 and are clean.

No behaviour change: the molvol test, which is what drives Sphere through
grid_volume, reproduces the stored volumes as before.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>


Compare: https://github.com/ehb54/ultrascan3/compare/bb9541fcfd5f...bad6a490296c

To unsubscribe from these emails, change your notification settings at https://github.com/ehb54/ultrascan3/settings/notifications


More information about the us-commits mailing list