Update submodule#9
Open
VPRamon wants to merge 4 commits into
Open
Conversation
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.
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.
No description provided.