Compare commits

..

48 Commits

Author SHA1 Message Date
tequ
0c34d09f48 Merge remote-tracking branch 'upstream/dev' into self-hosted-macos 2025-12-16 15:29:56 +09:00
tequ
433729fe53 Refactor ccache configuration to use a unified cache directory. 2025-12-04 20:21:10 +09:00
tequ
0ed68bf136 Add conditional check for Linux in Conan cache configuration step 2025-12-04 18:58:41 +09:00
tequ
e5686d1081 cmake@3.23.1 2025-12-04 17:20:14 +09:00
tequ
aac1202d94 add pipx 2025-12-04 17:13:47 +09:00
tequ
952f024725 add step: Add Homebrew to PATH 2025-12-04 17:11:15 +09:00
tequ
1e9ad9b9a9 Revert "temporary use github runner"
This reverts commit 786e7575f7.
2025-12-04 10:26:28 +09:00
tequ
d930dd19ae fix to mise use 2025-12-04 10:24:48 +09:00
tequ
5467ec2f5e move Get commit message after install python 2025-12-04 10:20:34 +09:00
tequ
786e7575f7 temporary use github runner 2025-12-04 10:20:11 +09:00
tequ
d3547fdf14 use mise instead brew 2025-12-04 10:16:06 +09:00
tequ
b79e85d52b Merge commit '68cccde1ad93e87a7f2e41a00e1bd186155969a1' into self-hosted-macos 2025-12-04 09:41:39 +09:00
tequ
68cccde1ad Merge branch 'dev' into self-hosted 2025-12-01 20:17:56 +09:00
tequ
63252c95eb macos self hosted runner
- might be fix "Configure Conan cache paths"?
2025-11-29 00:31:15 +09:00
tequ
1b86cdc256 fix 2025-11-28 13:36:01 +09:00
tequ
01bacf90a6 remove --privileged flag 2025-11-28 13:13:41 +09:00
tequ
2162674931 rename cache_enabled to gha_cache_enabled 2025-11-28 13:13:14 +09:00
tequ
8be811c7d1 change runner [ci-nix-full-matrix] 2025-11-27 18:22:29 +09:00
tequ
09c00851b4 fix ccache config dir [ci-nix-full-matrix] 2025-11-27 17:30:21 +09:00
tequ
b8622e9312 check [ci-nix-full-matrix] 2025-11-27 16:43:15 +09:00
tequ
4510d9c6f2 some changes 2025-11-27 16:11:18 +09:00
tequ
699765041f Enhance Conan configuration in xahau-ga-dependencies action by adding cache path setup for self-hosted runners and separating cache configuration into distinct steps. 2025-11-27 15:56:01 +09:00
tequ
1d9eed58b5 default shell bash 2025-11-27 14:46:03 +09:00
tequ
7d1622e54d conan cache 2025-11-27 13:41:52 +09:00
tequ
be3c3d2bde echo conan profile path 2025-11-27 13:27:47 +09:00
tequ
0fba76363a debug containers 2025-11-27 13:17:02 +09:00
tequ
466491e3f5 try container name 2025-11-27 12:59:49 +09:00
tequ
177a9f4c91 Add conan_profiles_path input to xahau-ga-dependencies action and update workflow to use it 2025-11-27 12:13:41 +09:00
tequ
8f272aa950 revert matrix conf 2025-11-27 11:44:31 +09:00
tequ
73b78625c0 test 2025-11-27 10:59:16 +09:00
tequ
5cc7e6dc19 fix clang_gcc_toolchain to 13 2025-11-27 10:40:27 +09:00
tequ
95f753b1d3 Merge branch 'dev' into self-hosted 2025-11-27 10:32:46 +09:00
tequ
f5857b4e4f try comment out clang_gcc_toolchain 2025-11-27 10:30:11 +09:00
tequ
02112928ec add cache_enabled option to xahau-ga-build 2025-11-27 01:40:00 +09:00
tequ
c815533e6a disabled action/cache in self hosted / ccache 100GB 2025-11-27 01:34:07 +09:00
tequ
915fcaaa95 install sqlite3 2025-11-27 01:18:37 +09:00
tequ
55a938a9b3 fix container volume path 2025-11-27 01:12:10 +09:00
tequ
1d34d880ec . 2025-11-27 00:58:14 +09:00
tequ
97be8fa41e try container 2025-11-27 00:17:29 +09:00
tequ
94e0cef62f use pipx instead pip3 2025-11-27 00:08:21 +09:00
tequ
f6f96865c1 use only 24.04 2025-11-26 23:35:20 +09:00
tequ
2e4e5eaff1 install cmake 2025-11-26 02:18:26 +09:00
tequ
2e96ae905d install python if not installed (ubuntu/self-hosted) 2025-11-26 02:11:40 +09:00
tequ
d02af3c891 rever macos runner 2025-11-26 01:37:36 +09:00
tequ
6f559a6032 use hosted runner in light workflow 2025-11-26 00:18:08 +09:00
tequ
9980e8f9be fix to use self-hosted for subsequent jobs. 2025-11-26 00:17:38 +09:00
Wietse Wind
fe17dde005 Update workers to self hosted 2025-11-26 00:14:15 +09:00
tequ
4eb1e4105a Revert "Update workers to self hosted"
This reverts commit c42cb0df62.
2025-11-26 00:12:45 +09:00
12 changed files with 78 additions and 166 deletions

View File

@@ -48,9 +48,13 @@ target_sources (xrpl_core PRIVATE
src/ripple/beast/net/impl/IPAddressV6.cpp
src/ripple/beast/net/impl/IPEndpoint.cpp
src/ripple/beast/utility/src/beast_Journal.cpp
src/ripple/beast/utility/src/beast_PropertyStream.cpp
# Enhanced logging - compiles to empty when BEAST_ENHANCED_LOGGING is not defined
src/ripple/beast/utility/src/beast_EnhancedLogging.cpp)
src/ripple/beast/utility/src/beast_PropertyStream.cpp)
# Conditionally add enhanced logging source when BEAST_ENHANCED_LOGGING is enabled
if(DEFINED BEAST_ENHANCED_LOGGING AND BEAST_ENHANCED_LOGGING)
target_sources(xrpl_core PRIVATE
src/ripple/beast/utility/src/beast_EnhancedLogging.cpp)
endif()
#[===============================[
core sources
@@ -158,16 +162,12 @@ target_link_libraries (xrpl_core
date::date
Ripple::opts)
# date-tz for enhanced logging (always linked, code is #ifdef guarded)
if(TARGET date::date-tz)
target_link_libraries(xrpl_core PUBLIC date::date-tz)
# Link date-tz library when enhanced logging is enabled
if(DEFINED BEAST_ENHANCED_LOGGING AND BEAST_ENHANCED_LOGGING)
if(TARGET date::date-tz)
target_link_libraries(xrpl_core PUBLIC date::date-tz)
endif()
endif()
# BEAST_ENHANCED_LOGGING: enable for Debug builds OR when explicitly requested
# Uses generator expression so it works with multi-config generators (Xcode, VS, Ninja Multi-Config)
target_compile_definitions(xrpl_core PUBLIC
$<$<OR:$<CONFIG:Debug>,$<BOOL:${BEAST_ENHANCED_LOGGING}>>:BEAST_ENHANCED_LOGGING=1>
)
#[=================================[
main/core headers installation
#]=================================]

View File

@@ -37,11 +37,20 @@ endif() #git
set(SOURCE_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/")
add_definitions(-DSOURCE_ROOT_PATH="${SOURCE_ROOT_PATH}")
# BEAST_ENHANCED_LOGGING - adds file:line numbers and formatting to logs
# Automatically enabled for Debug builds via generator expression
# Can be explicitly controlled with -DBEAST_ENHANCED_LOGGING=ON/OFF
option(BEAST_ENHANCED_LOGGING "Include file and line numbers in log messages (auto: Debug=ON, Release=OFF)" OFF)
message(STATUS "BEAST_ENHANCED_LOGGING option: ${BEAST_ENHANCED_LOGGING}")
# BEAST_ENHANCED_LOGGING option - adds file:line numbers and formatting to logs
# Default to ON for Debug builds, OFF for Release
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
option(BEAST_ENHANCED_LOGGING "Include file and line numbers in log messages" ON)
else()
option(BEAST_ENHANCED_LOGGING "Include file and line numbers in log messages" OFF)
endif()
if(BEAST_ENHANCED_LOGGING)
add_definitions(-DBEAST_ENHANCED_LOGGING=1)
message(STATUS "Log line numbers enabled")
else()
message(STATUS "Log line numbers disabled")
endif()
if(thread_safety_analysis)
add_compile_options(-Wthread-safety -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -DRIPPLE_ENABLE_THREAD_SAFETY_ANNOTATIONS)

View File

@@ -471,10 +471,6 @@ ManifestCache::applyManifest(Manifest m)
auto masterKey = m.masterKey;
map_.emplace(std::move(masterKey), std::move(m));
// Increment sequence to invalidate cached manifest messages
seq_++;
return ManifestDisposition::accepted;
}

View File

@@ -24,7 +24,6 @@
#include <ripple/app/misc/AmendmentTable.h>
#include <ripple/app/misc/NetworkOPs.h>
#include <ripple/app/tx/impl/Change.h>
#include <ripple/app/tx/impl/SetHook.h>
#include <ripple/app/tx/impl/SetSignerList.h>
#include <ripple/app/tx/impl/XahauGenesis.h>
#include <ripple/basics/Log.h>
@@ -584,6 +583,10 @@ Change::activateXahauGenesis()
SetSignerList::removeFromLedger(ctx_.app, sb, accid, j_);
// Step 4: install genesis hooks
sle->setFieldU32(
sfOwnerCount, sle->getFieldU32(sfOwnerCount) + genesis_hooks.size());
sb.update(sle);
if (sb.exists(keylet::hook(accid)))
{
JLOG(j_.warn()) << "featureXahauGenesis genesis account already has "
@@ -594,7 +597,6 @@ Change::activateXahauGenesis()
{
ripple::STArray hooks{sfHooks, static_cast<int>(genesis_hooks.size())};
int hookCount = 0;
uint32_t hookReserve = 0;
for (auto const& [hookOn, wasmBytes, params] : genesis_hooks)
{
@@ -700,14 +702,8 @@ Change::activateXahauGenesis()
}
hooks.push_back(hookObj);
hookReserve += SetHook::computeHookReserve(hookObj);
}
sle->setFieldU32(
sfOwnerCount, sle->getFieldU32(sfOwnerCount) + hookReserve);
sb.update(sle);
auto sle = std::make_shared<SLE>(keylet::hook(accid));
sle->setFieldArray(sfHooks, hooks);
sle->setAccountID(sfAccount, accid);
@@ -748,8 +744,6 @@ Change::activateXahauGenesis()
ripple::STArray hooks{sfHooks, 1};
STObject hookObj{sfHook};
hookObj.setFieldH256(sfHookHash, governHash);
uint32_t hookReserve = 0;
// parameters
{
std::vector<STObject> vec;
@@ -765,7 +759,6 @@ Change::activateXahauGenesis()
sfHookParameters, STArray(vec, sfHookParameters));
}
hookReserve += SetHook::computeHookReserve(hookObj);
hooks.push_back(hookObj);
auto sle = std::make_shared<SLE>(hookKL);
@@ -792,8 +785,7 @@ Change::activateXahauGenesis()
sle->setAccountID(sfRegularKey, noAccount());
sle->setFieldU32(sfFlags, lsfDisableMaster);
sle->setFieldU32(
sfOwnerCount, sle->getFieldU32(sfOwnerCount) + hookReserve);
sle->setFieldU32(sfOwnerCount, sle->getFieldU32(sfOwnerCount) + 1);
sb.update(sle);
}
}

View File

@@ -1173,23 +1173,6 @@ updateHookParameters(
return tesSUCCESS;
}
uint32_t
SetHook::computeHookReserve(STObject const& hookObj)
{
if (!hookObj.isFieldPresent(sfHookHash))
return 0;
int reserve{1};
if (hookObj.isFieldPresent(sfHookParameters))
reserve += hookObj.getFieldArray(sfHookParameters).size();
if (hookObj.isFieldPresent(sfHookGrants))
reserve += hookObj.getFieldArray(sfHookGrants).size();
return reserve;
};
struct KeyletComparator
{
bool
@@ -1854,14 +1837,28 @@ SetHook::setHook()
int oldHookReserve = 0;
int newHookReserve = 0;
auto const computeHookReserve = [](STObject const& hookObj) -> int {
if (!hookObj.isFieldPresent(sfHookHash))
return 0;
int reserve{1};
if (hookObj.isFieldPresent(sfHookParameters))
reserve += hookObj.getFieldArray(sfHookParameters).size();
if (hookObj.isFieldPresent(sfHookGrants))
reserve += hookObj.getFieldArray(sfHookGrants).size();
return reserve;
};
for (int i = 0; i < hook::maxHookChainLength(); ++i)
{
if (oldHooks && i < oldHookCount)
oldHookReserve +=
SetHook::computeHookReserve(((*oldHooks).get())[i]);
oldHookReserve += computeHookReserve(((*oldHooks).get())[i]);
if (i < newHooks.size())
newHookReserve += SetHook::computeHookReserve(newHooks[i]);
newHookReserve += computeHookReserve(newHooks[i]);
}
reserveDelta = newHookReserve - oldHookReserve;

View File

@@ -91,9 +91,6 @@ public:
static HookSetValidation
validateHookSetEntry(SetHookCtx& ctx, STObject const& hookSetObj);
static uint32_t
computeHookReserve(STObject const& hookObj);
private:
TER
setHook();

View File

@@ -360,8 +360,7 @@ Logs::format(
if (!partition.empty())
{
#ifdef BEAST_ENHANCED_LOGGING
if (beast::detail::should_log_use_colors())
output += beast::detail::get_log_highlight_color();
output += beast::detail::get_log_highlight_color();
#endif
output += partition + ":";
}
@@ -393,8 +392,7 @@ Logs::format(
}
#ifdef BEAST_ENHANCED_LOGGING
if (beast::detail::should_log_use_colors())
output += "\033[0m";
output += "\033[0m";
#endif
output += message;

View File

@@ -41,14 +41,6 @@ get_log_highlight_color();
constexpr const char*
strip_source_root(const char* file)
{
// Handle relative paths from build/ directory (common with ccache)
// e.g., "../src/ripple/..." -> "ripple/..."
if (file && file[0] == '.' && file[1] == '.' && file[2] == '/' &&
file[3] == 's' && file[4] == 'r' && file[5] == 'c' && file[6] == '/')
{
return file + 7; // skip "../src/"
}
#ifdef SOURCE_ROOT_PATH
constexpr const char* sourceRoot = SOURCE_ROOT_PATH;
constexpr auto strlen_constexpr = [](const char* s) constexpr

View File

@@ -17,8 +17,6 @@
*/
//==============================================================================
#ifdef BEAST_ENHANCED_LOGGING
#include <ripple/beast/utility/EnhancedLogging.h>
#include <cstdlib>
#include <cstring>
@@ -114,5 +112,3 @@ log_write_location_string(std::ostream& os, const char* file, int line)
} // namespace detail
} // namespace beast
#endif // BEAST_ENHANCED_LOGGING

View File

@@ -155,43 +155,14 @@ Journal::ScopedStream::~ScopedStream()
#ifdef BEAST_ENHANCED_LOGGING
// Add suffix if location is enabled
if (file_ && detail::should_show_location() && !s.empty())
if (file_ && detail::should_show_location() && !s.empty() && s != "\n")
{
// Single optimized scan from the end
size_t const lastNonWhitespace = s.find_last_not_of(" \n\r\t");
// Skip if message is only whitespace (e.g., just "\n" or " \n\n")
if (lastNonWhitespace != std::string::npos)
{
// Count only the trailing newlines (tiny range)
size_t trailingNewlines = 0;
for (size_t i = lastNonWhitespace + 1; i < s.length(); ++i)
{
if (s[i] == '\n')
++trailingNewlines;
}
// Build location string once
std::ostringstream locStream;
detail::log_write_location_string(locStream, file_, line_);
std::string const location = locStream.str();
// Pre-allocate exact size → zero reallocations
size_t const finalSize = lastNonWhitespace + 1 + 1 +
location.length() + trailingNewlines;
std::string result;
result.reserve(finalSize);
// Direct string ops (no ostringstream overhead)
result.append(s, 0, lastNonWhitespace + 1);
result.push_back(' ');
result += location;
if (trailingNewlines > 0)
result.append(trailingNewlines, '\n');
s = std::move(result); // Move, no copy
}
std::ostringstream combined;
combined << s;
if (!s.empty() && s.back() != ' ')
combined << " ";
detail::log_write_location_string(combined, file_, line_);
s = combined.str();
}
#endif

View File

@@ -484,61 +484,44 @@ OverlayImpl::start()
m_peerFinder->setConfig(config);
m_peerFinder->start();
auto addIps = [this](std::vector<std::string> ips, bool fixed) {
auto addIps = [&](std::vector<std::string> bootstrapIps) -> void {
beast::Journal const& j = app_.journal("Overlay");
for (auto& ip : ips)
for (auto& ip : bootstrapIps)
{
std::size_t pos = ip.find('#');
if (pos != std::string::npos)
ip.erase(pos);
JLOG(j.trace())
<< "Found " << (fixed ? "fixed" : "bootstrap") << " IP: " << ip;
JLOG(j.trace()) << "Found boostrap IP: " << ip;
}
m_resolver.resolve(
ips,
[this, fixed](
std::string const& name,
bootstrapIps,
[&](std::string const& name,
std::vector<beast::IP::Endpoint> const& addresses) {
std::vector<std::string> ips;
ips.reserve(addresses.size());
beast::Journal const& j = app_.journal("Overlay");
std::string const base("config: ");
std::vector<beast::IP::Endpoint> eps;
eps.reserve(addresses.size());
for (auto const& addr : addresses)
{
auto ep = addr.port() == 0 ? addr.at_port(DEFAULT_PEER_PORT)
: addr;
JLOG(j.trace())
<< "Parsed " << (fixed ? "fixed" : "bootstrap")
<< " IP: " << ep;
eps.push_back(ep);
std::string addrStr = addr.port() == 0
? to_string(addr.at_port(DEFAULT_PEER_PORT))
: to_string(addr);
JLOG(j.trace()) << "Parsed boostrap IP: " << addrStr;
ips.push_back(addrStr);
}
if (eps.empty())
return;
if (fixed)
{
m_peerFinder->addFixedPeer(base + name, eps);
}
else
{
std::vector<std::string> strs;
strs.reserve(eps.size());
for (auto const& ep : eps)
strs.push_back(to_string(ep));
m_peerFinder->addFallbackStrings(base + name, strs);
}
std::string const base("config: ");
if (!ips.empty())
m_peerFinder->addFallbackStrings(base + name, ips);
});
};
if (!app_.config().IPS.empty())
addIps(app_.config().IPS, false);
addIps(app_.config().IPS);
if (!app_.config().IPS_FIXED.empty())
addIps(app_.config().IPS_FIXED, true);
addIps(app_.config().IPS_FIXED);
auto const timer = std::make_shared<Timer>(*this);
std::lock_guard lock(mutex_);

View File

@@ -139,9 +139,7 @@ struct XahauGenesis_test : public beast::unit_test::suite
false, // means the calling test already burned some of the genesis
bool skipTests = false,
bool const testFlag = false,
bool const badNetID = false,
uint32_t const expectedOwnerCount =
10 /** testFlag ? 10 : 14 (default) */)
bool const badNetID = false)
{
using namespace jtx;
@@ -249,10 +247,7 @@ struct XahauGenesis_test : public beast::unit_test::suite
BEAST_EXPECT(
genesisAccRoot->getFieldAmount(sfBalance) ==
XahauGenesis::GenesisAmount);
BEAST_EXPECT(
genesisAccRoot->getFieldU32(sfOwnerCount) == !testFlag
? expectedOwnerCount
: 14);
BEAST_EXPECT(genesisAccRoot->getFieldU32(sfOwnerCount) == 2);
// ensure the definitions are correctly set
{
@@ -588,14 +583,7 @@ struct XahauGenesis_test : public beast::unit_test::suite
toBase58(t), membersStr);
}
activate(
__LINE__,
env,
true,
false,
true,
{},
3 /* IRR,IRD,IMC */ + members.size() + tables.size());
activate(__LINE__, env, true, false, true);
env.close();
env.close();
@@ -2247,8 +2235,6 @@ struct XahauGenesis_test : public beast::unit_test::suite
BEAST_EXPECT(!!hookLE);
uint256 const ns = beast::zero;
uint8_t mc = 0;
uint8_t paramsCount = 0;
if (hookLE)
{
auto const hooksArray = hookLE->getFieldArray(sfHooks);
@@ -2256,9 +2242,6 @@ struct XahauGenesis_test : public beast::unit_test::suite
hooksArray.size() == 1 &&
hooksArray[0].getFieldH256(sfHookHash) == governHookHash);
paramsCount =
hooksArray[0].getFieldArray(sfHookParameters).size();
for (Account const* m : members)
{
auto const mVec = vecFromAcc(*m);
@@ -2325,9 +2308,7 @@ struct XahauGenesis_test : public beast::unit_test::suite
BEAST_EXPECT(!!root);
if (root)
{
BEAST_EXPECT(
root->getFieldU32(sfOwnerCount) ==
mc * 2 + 2 + paramsCount);
BEAST_EXPECT(root->getFieldU32(sfOwnerCount) == mc * 2 + 2);
BEAST_EXPECT(root->getFieldU32(sfFlags) & lsfDisableMaster);
BEAST_EXPECT(root->getAccountID(sfRegularKey) == noAccount());
}