Commit Graph

13851 Commits

Author SHA1 Message Date
Nicholas Dudfield
e633922226 Merge remote-tracking branch 'origin/dev' into add-clang-matrix 2025-10-14 16:44:37 +07:00
tequ
15c7ad6f78 Fix Invalid Tx flags (#514) 2025-10-14 15:35:48 +10:00
Niq Dudfield
1f12b9ec5a feat(logs): add -DBEAST_ENHANCED_LOGGING with file:line numbers for JLOG macro (#552) 2025-10-14 10:44:03 +10:00
Nicholas Dudfield
1a3210f3ab chore: remove unused Conan patching action
- Conan 2 natively supports Clang 18, no patching needed
- Action was only required for Conan 1.x settings.yml modification
2025-10-13 10:09:11 +07:00
Nicholas Dudfield
44b9dcfaee Merge branch 'dev' into add-clang-matrix - migrate to Conan 2
- Upgrade from Conan v1 to Conan v2 (>=2.0,<3)
- Convert profile configuration to Conan 2 heredoc syntax
- Add libc++ support to Conan 2 profile configuration
- Remove Conan settings patching action (Conan 2 supports Clang 18 natively!)
- Keep full compiler matrix implementation and GCC hiding logic
- Incorporate dev changes (cfg renames, database updates, etc.)
2025-10-13 10:01:20 +07:00
Niq Dudfield
ad0531ad6c chore: fix warnings (#509)
Co-authored-by: Denis Angell <dangell@transia.co>
Co-authored-by: RichardAH <richard.holland@starstone.co.nz>
2025-10-11 11:47:13 +10:00
tequ
e580f7cfc0 chore(vscode): enable format on save in settings.json (#578) 2025-10-11 11:43:50 +10:00
tequ
094f011006 Fix emit Hook API testcase name (#580) 2025-10-11 11:43:09 +10:00
Niq Dudfield
39d1c43901 build: upgrade openssl from 1.1.1u to 3.6.0 (#587)
Updates OpenSSL dependency to the latest 3.x series available on Conan Center.
2025-10-10 19:53:35 +10:00
J. Scott Branson
b3e6a902cb Update Sample Configuration Files in /cfg for Congruence with xahaud (#584) 2025-10-10 14:59:39 +11:00
Niq Dudfield
fa1b93bfd8 build: migrate to conan 2 (#585)
Migrates the build system from Conan 1 to Conan 2
2025-10-10 14:57:46 +11:00
tequ
92e3a927fc refactor KEYLET_LINE in utils_keylet (#502)
Fixes the use of high and low in variable names, as these are determined by ripple::keylet::line processing.

Co-authored-by: RichardAH <richard.holland@starstone.co.nz>
2025-10-09 21:02:14 +11:00
tequ
8f7ebf0377 Optimize github action cache (#544)
* optimize github action cache

* fix

* refactor: improve github actions cache optimization (#3)

- move ccache configuration logic to dedicated action
- rename conanfile-changed to should-save-conan-cache for clarity

---------

Co-authored-by: Niq Dudfield <ndudfield@gmail.com>
2025-09-08 15:53:40 +10:00
Niq Dudfield
46cf6785ab fix(tests): prevent buffer corruption from concurrent log writes (#565)
std::endl triggers flush() which calls sync() on the shared log buffer.
Multiple threads racing in sync() cause str()/str("") operations to
corrupt buffer state, leading to crashes and double frees.

Added mutex to serialize access to suite.log, preventing concurrent
sync() calls on the same buffer.
2025-09-08 13:57:49 +10:00
Niq Dudfield
3c4c9c87c5 Fix rwdb memory leak with online_delete and remove flatmap (#570)
Co-authored-by: Denis Angell <dangell@transia.co>
2025-08-26 14:00:58 +10:00
Nicholas Dudfield
ecf0d68a64 fix: remove clang-14-gcc13 config - confirmed incompatible
- Testing confirmed Clang 14 cannot compile GCC 13 headers
- consteval usage in <chrono> causes compilation failure
- GCC 11 workaround is necessary for Clang 14
- Back to 6 working configurations
2025-08-20 08:22:47 +07:00
Nicholas Dudfield
775b6c14a0 test: add clang-14 with gcc-13 configuration
- Test if Clang 14 actually fails with GCC 13 headers
- This will validate if our GCC 11 workaround is necessary
- Total of 7 compiler configurations now

[ci-nix-full-matrix]
2025-08-20 08:10:51 +07:00
Nicholas Dudfield
7ea6f432c9 fix: add minimal safety improvements
- Use check=True for conan config init to catch failures immediately
- Add safety check to prevent clobbering when renaming GCC directories
- Document why Clang 16 is the cutoff for --gcc-install-dir support
2025-08-19 15:55:00 +07:00
Nicholas Dudfield
22a81a050f docs: improve comments about Conan initialization
- Explain that Conan 1 uses embedded defaults until config init
- Document that settings.yml is created on-demand
- Clarify that conan config init is safe (won't overwrite)
- Remove pr-description.md from repo (moved to .niqs-ignored)
2025-08-19 14:49:28 +07:00
Nicholas Dudfield
cd252504ad fix: use renamed action and add Conan init fallback
- Update workflow to use renamed xahau-patch-conan-post-setup action
- Use 'conan config home' to dynamically find settings.yml location
- Add debug logging to see Conan home contents
- Try 'conan config init' if settings.yml doesn't exist
- This should handle fresh Conan installations
2025-08-19 14:35:52 +07:00
Nicholas Dudfield
d8ccb1db81 refactor: move Conan patching to separate action
- Create new xahau-patch-conan-clang-versions action
- Remove patching logic from dependencies action
- Call patch action after Conan initialization in main workflow
- Fixes sequencing issue where settings.yml didn't exist yet
2025-08-19 14:30:16 +07:00
Nicholas Dudfield
27ec068050 fix: initialize Conan before patching settings.yml
- Check if settings.yml exists before trying to patch it
- Run 'conan profile new default --detect' if needed
- Fixes FileNotFoundError for fresh runners without cache
2025-08-19 14:20:09 +07:00
Nicholas Dudfield
2b6c92ecb1 debug: add logging to matrix generation 2025-08-19 14:15:49 +07:00
Nicholas Dudfield
e559008fc8 fix: use Python shell for Conan settings patch
- Switch to shell: python since PyYAML is pre-installed on Ubuntu
- Move export statement before Python heredoc so env var is available
- Adjust PR matrix logic: only release/candidate PRs get full matrix
- PRs to dev now use minimal matrix (most are feature branches)

[ci-nix-full-matrix]
2025-08-19 14:05:25 +07:00
Nicholas Dudfield
7ced4de6f2 feat: add clang-18 support with generic version detection
- Add clang-18-libcxx configuration (6 compiler configs total)
- Generic Conan settings patcher: auto-detects Clang version from compiler-id
- Works for any future Clang version without code changes
- Change minimal matrix to use clang-14 instead of clang-17 (faster)
- Sort Conan version list numerically when adding new versions

[ci-nix-full-matrix]
2025-08-19 13:54:46 +07:00
Nicholas Dudfield
3571a403f6 perf: use python:3-slim container for matrix-setup job
- Reduces total job time from ~26s to ~7s (72% faster)
- Bypasses ubuntu-latest's 25s toolchain setup overhead
- Container init only takes 3-5s with GitHub's layer caching
- Based on research showing containerized jobs skip host env config
2025-08-19 12:09:12 +07:00
Nicholas Dudfield
87dab64e0c perf: use self-hosted runner for matrix-setup job
- Reduces matrix generation time from ~30s to ~3s
- No VM provisioning overhead
- Perfect for tiny, safe, read-only jobs like JSON generation
2025-08-19 11:50:20 +07:00
Nicholas Dudfield
c730e1d5f0 fix: gcc stdlib flag, add dynamic matrix with [ci-nix-full-matrix]
- GCC doesn't recognize -stdlib flag (it's Clang-specific)
- Added dynamic matrix generation for branch-based CI control
- Main branches (dev/release/candidate) run all 5 compiler configs
- Feature branches and PRs run only gcc-13 and clang-17
- [ci-nix-full-matrix] tag forces full matrix on any branch
- Uses inline Python script in matrix-setup job
2025-08-19 11:38:14 +07:00
Nicholas Dudfield
9bf2bc0420 ci: add clang-17 with native libc++ to build matrix 2025-08-19 11:07:58 +07:00
Nicholas Dudfield
be1a34c7e9 ci: add gcc-11 and reinstate gcc-13 in build matrix 2025-08-19 11:06:19 +07:00
Nicholas Dudfield
06b4344cc0 fix: use -lt 16 check for gcc hiding, update compiler-id docs 2025-08-19 10:46:55 +07:00
Nicholas Dudfield
7a11eb6c15 docs: clarify gcc hiding trick is for clang < 16 2025-08-18 21:24:57 +07:00
Nicholas Dudfield
c1a35510f4 fix: install gcc before hiding versions, add verification 2025-08-18 21:19:27 +07:00
Nicholas Dudfield
7c4b1bafeb fix: install target gcc version before hiding others 2025-08-18 21:12:19 +07:00
Nicholas Dudfield
ccfa6da70a fix: use integer renaming for hidden gcc versions 2025-08-18 21:09:49 +07:00
Nicholas Dudfield
139f1bd32b ci: use directory hiding for clang-14 and --gcc-install-dir for clang-16+ 2025-08-18 21:05:58 +07:00
Nicholas Dudfield
a3b00d57a2 docs: clarify compiler_id includes gcc version for clang builds 2025-08-18 20:44:40 +07:00
Nicholas Dudfield
b822b66825 ci: simplify gcc toolchain logic - no update-alternatives needed 2025-08-18 20:34:49 +07:00
Nicholas Dudfield
6684075a28 ci: remove gcc-14-base to prevent header conflicts 2025-08-18 20:27:49 +07:00
Nicholas Dudfield
cc28fcf190 ci: remove gcc-14 and add clang-14 with gcc-11 test
- Add clang-14-libstdcxx-gcc11 matrix entry for testing
- Remove gcc-14 to prevent Clang from finding it
- Add diagnostic to show which headers Clang will use
- Test both gcc-11 and gcc-13 with clang-14
2025-08-18 20:19:26 +07:00
Nicholas Dudfield
ddca64815d ci: simplify by using update-alternatives instead of gcc-install-dir
- Keep clang_gcc_toolchain to control which GCC to install
- Use update-alternatives to set system default GCC
- Remove complex --gcc-install-dir flag from CMAKE_CXX_FLAGS
- Clang automatically uses the default GCC's headers
2025-08-18 20:15:30 +07:00
Nicholas Dudfield
60df462bc2 fix: properly quote CMAKE_CXX_FLAGS with spaces 2025-08-18 19:41:21 +07:00
Nicholas Dudfield
4755a37cad ci: add clang_gcc_toolchain support for header compatibility
- Clang 14 uses GCC 11 toolchain to avoid GCC 14 header issues
- Clang 16 uses GCC 13 toolchain for better compatibility
- Use --gcc-install-dir to specify exact GCC version
- Fixes consteval and ranges concept errors with newer libstdc++
2025-08-18 18:51:38 +07:00
Nicholas Dudfield
df652b457b ci: include stdlib in compiler_id for cache keys
- compiler_id now includes stdlib (e.g. clang-14-libstdcxx)
- Cache keys are self-documenting without redundant stdlib param
- Actions still receive stdlib for Conan/CMake configuration
- Added documentation explaining matrix key purposes
2025-08-18 18:37:20 +07:00
Nicholas Dudfield
0651332bb3 refactor: use clear stdlib naming instead of force_libstdcpp
- Rename force_libstdcpp to stdlib with values libstdcxx/libcxx
- Make stdlib a required enum field with validation
- Update cache keys to be self-documenting (e.g. clang-14-libstdcxx)
- Cleaner, more intuitive configuration flow
2025-08-18 18:21:42 +07:00
Nicholas Dudfield
5286bae753 ci: fix cache key to include stdlib choice 2025-08-18 18:12:11 +07:00
Nicholas Dudfield
4b9ef8db22 ci: move force_libstdcpp to matrix-level property 2025-08-18 18:07:39 +07:00
Nicholas Dudfield
360546d555 ci: add clang-14 to matrix, temporarily disable gcc 2025-08-18 18:04:31 +07:00
Nicholas Dudfield
4efcbd1eaa ci: add option to use libstdc++ with clang-16 2025-08-18 18:00:51 +07:00
Nicholas Dudfield
4c90598462 ci: add clang to build matrix 2025-08-18 16:58:09 +07:00