Skip to content

Update submodule#9

Open
VPRamon wants to merge 4 commits into
mainfrom
update-submodule
Open

Update submodule#9
VPRamon wants to merge 4 commits into
mainfrom
update-submodule

Conversation

@VPRamon
Copy link
Copy Markdown
Member

@VPRamon VPRamon commented Jun 2, 2026

No description provided.

VPRamon and others added 4 commits May 28, 2026 14:24
Bounded infrastructure work to make siderust-cpp installable, packageable,
and consumable as an external CMake project. No new FFI surface yet —
Phase B (dynamics/POD/SGP4/Lambert/SPICE/POD/etc.) will land in
follow-up PRs against the siderust submodule's dynamics-and-pod branch
plus matching wrappers here.

Infrastructure fixes:

* .gitmodules now uses HTTPS for both submodules so public clones and
  CI jobs without SSH keys succeed.
* cmake/siderust_cppConfig.cmake.in rewritten:
  - find_dependency(qtty_cpp / tempoch_cpp)
  - defines siderust::siderust_ffi as a SHARED IMPORTED target so
    consumers linking siderust::siderust_cpp resolve siderust_ffi
    transitively
  - workaround for upstream qtty-cpp / tempoch-cpp where the installed
    *Config.cmake bakes in a broken absolute path for *_FFI_LIBRARY
    (PACKAGE_PREFIX_DIR substitution wasn't wired into PATH_VARS):
    locate qtty_ffi / tempoch_ffi shared libs ourselves under the
    install prefix and define matching bare-name imported targets,
    eliminating the -ltempoch_ffi / -lqtty_ffi unresolved-link errors
    every consumer would otherwise hit
  - exposes legacy siderust_cpp_INCLUDE_DIRS / siderust_cpp_LIBRARIES
* Top-level CMakeLists.txt:
  - bumped minimum CMake to 3.21 for PROJECT_IS_TOP_LEVEL
  - new options SIDERUST_CPP_BUILD_TESTS / _BUILD_EXAMPLES / _INSTALL
    / _ENABLE_PACKAGING, all defaulting to ${PROJECT_IS_TOP_LEVEL}
    so add_subdirectory consumers don't drag in GoogleTest, examples,
    install rules, or CPack
  - uses GNUInstallDirs (CMAKE_INSTALL_INCLUDEDIR / _LIBDIR)
  - siderust::siderust_cpp ALIAS so build-tree consumers use the same
    namespaced target as installed consumers
  - install/export/cpack blocks gated on the new options
* CPack DEB/RPM deps updated to match real upstream pins from the
  current siderust submodule: qtty-cpp >= 0.8, tempoch-cpp >= 0.6
  (was 0.4.2 / 0.3.1).
* .github/workflows/ci-package.yml: dropped the '|| true' masking on
  the cp of shared libraries — broken packages now fail CI.
* Dockerfile.prod:
  - rust-builder sets CARGO_TARGET_DIR=/src/tempoch-cpp/tempoch/tempoch-ffi/target
    when building tempoch-ffi so artefacts land where cpp-builder
    expects, mirroring tempoch-cpp's own CMakeLists
  - builds qtty-ffi via 'cargo build -p qtty-ffi' from the qtty
    workspace root so the artefact lands in qtty/target/release/
    (the previous 'qtty-ffi/target/release/' per-crate path does not
    exist for workspace members)
  - COPY source paths match what rust-builder now produces.

Constops:

* Removed include/siderust/constops.hpp, include/siderust/constops.h,
  and tests/test_constops.cpp. No constops Rust crate exists in either
  siderust-ffi or the workspace, so the header declared symbols no
  library exports — any consumer including constops.hpp would fail to
  link. Per the no-deprecated-code policy, the stub is gone rather
  than half-integrated.

Installed-consumer CI:

* New tests/installed-consumer/{CMakeLists.txt, smoke.cpp} fixture:
  a tiny external CMake project that find_package(siderust_cpp), links
  siderust::siderust_cpp, and runs a smoke binary calling into the FFI.
* New .github/workflows/ci-installed-consumer.yml staging-prefix flow:
  installs qtty-cpp -> tempoch-cpp -> siderust-cpp (standalone configs
  per package, matching how the deb/rpm packages depend on each other),
  bundles all three Rust shared libs, then runs the smoke binary with
  LD_LIBRARY_PATH so unresolved FFI symbols fail the job.
* Wired into ci.yml after package; release now depends on both.

Verification (Docker, ubuntu:22.04 dev image):

* docker build .  -> 142/142 ctest tests pass, docs build.
* Installed-consumer flow end-to-end run locally: configures
  qtty-cpp/tempoch-cpp/siderust-cpp into /workspace/stage, configures
  the external CMake project against stage, builds the smoke binary,
  and runs it with LD_LIBRARY_PATH=stage/lib:
    "siderust-cpp installed-consumer smoke: J2000 MJD = 51544.500743"
- siderust-ffi: add lambert.rs (siderust_lambert_solve, SiderustLambertDiagnostics)
- siderust-ffi: add sgp4.rs (opaque SiderustTle/SiderustSgp4 handles + propagate_at)
- siderust-ffi: add oem.rs (siderust_oem_parse_str, siderust_oem_states_free)
- siderust-ffi: expose new modules in lib.rs; add keplerian = "0.2" dep
- include/siderust/lambert.hpp: value-semantic solve() wrapping Lambert FFI
- include/siderust/sgp4.hpp: RAII Tle + Propagator classes
- include/siderust/oem.hpp: parse(string_view) -> vector<StateVector>
- examples/16_lambert_earth_to_mars.cpp: mirrors Rust example 16
- examples/17_sgp4_from_tle.cpp: mirrors Rust example 17 (NORAD 5, 4 epochs)
- examples/18_lisa_pod.cpp: mirrors Rust example 18 (Hermite interp, range residual)
- tests/test_lambert.cpp: EarthMarsPrograde, RetrogradeBranchDiffers, CircularOrbit90deg
- tests/test_sgp4.cpp: ParseValidTle, ParseInvalidThrows, Epoch, Propagate, GravityModel, Move
- 152/152 ctest pass
- Implemented a new example for hemispherical alt/az sky-grid sampling (19_sky_grid_sampling.cpp) demonstrating uniform and equal-area grids.
- Added a new header file (sky_grid.hpp) to define the SkyGrid class and its associated functionalities, including cell generation and altitude range masking.
- Updated existing examples (17_sgp4_from_tle.cpp, 18_lisa_pod.cpp) for improved code formatting and consistency.
- Refined the Lambert diagnostics and solution structures for better readability in lambert.hpp.
- Enhanced the OEM state vector structure in oem.hpp for clarity.
- Improved SGP4 propagation tests (test_sgp4.cpp) for better readability and consistency.
- Added unit tests for the new SkyGrid functionality to ensure correctness and reliability.
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 2, 2026

Code Coverage

Package Line Rate Branch Rate Complexity Health
include.siderust 73% 35% 0
include.siderust.coordinates 100% 51% 0
Summary 76% (750 / 985) 36% (373 / 1043) 0

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.

1 participant