Skip to content

Commit

Permalink
Build system changes for v22.0.0 (#4522)
Browse files Browse the repository at this point in the history
This is a sequence of cherry picks of (mostly) miscellaneous
build-system infrastructure that I've recently landed on master
transplanted onto the v22.0.0 branch.

Each somewhat improves the build situation (eg. enabling tracy,
disabling memory tracking, fixing asan, cleaning more thoroughly,
forcing rust toolchain version identity) but none of them are essential
for making the v22.0.0 release. You could take any or none of them,
it'll be ok either way.

There is also
72c5f9d
which removes some stale cost-type adjustments in BUILD_TESTS-only code
that's only active if you do multi-protocol replay -- the thing where we
can run one tx twice, once on p21 and once on p22 -- and it might be
nice to have that fixed so that we can do some more-confidence-inspiring
side-by-side testing of p21 txs on the p22 codebase before the upgrade.
But again it's really just a nice-to-have, none of this is essential.
  • Loading branch information
anupsdf authored Oct 25, 2024
2 parents 933f00d + 188c60b commit 92923c2
Show file tree
Hide file tree
Showing 6 changed files with 118 additions and 140 deletions.
4 changes: 2 additions & 2 deletions Builds/VisualStudio/stellar-core.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ exit /b 0
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>CEREAL_THREAD_SAFE;USE_POSTGRES;ENABLE_NEXT_PROTOCOL_VERSION_UNSAFE_FOR_PRODUCTION=1;USE_SPDLOG;FMT_HEADER_ONLY=1;BUILD_TESTS;WIN32_LEAN_AND_MEAN;NOMINMAX;ASIO_STANDALONE;_WINSOCK_DEPRECATED_NO_WARNINGS;SODIUM_STATIC;ASIO_SEPARATE_COMPILATION;ASIO_ERROR_CATEGORY_NOEXCEPT=noexcept;TRACY_ENABLE;TRACY_ON_DEMAND;TRACY_NO_BROADCAST;TRACY_ONLY_LOCALHOST;TRACY_DELAYED_INIT;TRACY_MANUAL_LIFETIME;USE_TRACY;_CRT_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0601;WIN32;_MBCS;_CRT_NONSTDC_NO_DEPRECATE;YY_NO_UNISTD_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>CEREAL_THREAD_SAFE;USE_POSTGRES;ENABLE_NEXT_PROTOCOL_VERSION_UNSAFE_FOR_PRODUCTION=1;USE_SPDLOG;FMT_HEADER_ONLY=1;BUILD_TESTS;WIN32_LEAN_AND_MEAN;NOMINMAX;ASIO_STANDALONE;_WINSOCK_DEPRECATED_NO_WARNINGS;SODIUM_STATIC;ASIO_SEPARATE_COMPILATION;ASIO_ERROR_CATEGORY_NOEXCEPT=noexcept;TRACY_ENABLE;TRACY_ON_DEMAND;TRACY_NO_BROADCAST;TRACY_ONLY_LOCALHOST;TRACY_DELAYED_INIT;USE_TRACY;_CRT_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0601;WIN32;_MBCS;_CRT_NONSTDC_NO_DEPRECATE;YY_NO_UNISTD_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>src;../../src;../../lib;../../lib/tracy/public/tracy;../../lib/spdlog/include;../../lib/libmedida/src;../../lib/soci/src/core;../../lib/autocheck/include;../../lib/cereal/include;../../lib/asio/asio/include;../../lib/xdrpp;../../lib/libsodium/src/libsodium/include;../../lib/fmt/include;../../lib/util;../..;src/$(Configuration)/generated;../../lib/sqlite;c:\Program Files\PostgreSQL\15\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BrowseInformation>false</BrowseInformation>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
Expand Down Expand Up @@ -390,7 +390,7 @@ exit /b 0
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>CEREAL_THREAD_SAFE;USE_POSTGRES;USE_SPDLOG;FMT_HEADER_ONLY=1;BUILD_TESTS;WIN32_LEAN_AND_MEAN;NOMINMAX;ASIO_STANDALONE;_WINSOCK_DEPRECATED_NO_WARNINGS;SODIUM_STATIC;ASIO_SEPARATE_COMPILATION;ASIO_ERROR_CATEGORY_NOEXCEPT=noexcept;TRACY_ENABLE;TRACY_ON_DEMAND;TRACY_NO_BROADCAST;TRACY_ONLY_LOCALHOST;TRACY_DELAYED_INIT;TRACY_MANUAL_LIFETIME;USE_TRACY;_CRT_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0601;WIN32;_MBCS;_CRT_NONSTDC_NO_DEPRECATE;YY_NO_UNISTD_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>CEREAL_THREAD_SAFE;USE_POSTGRES;USE_SPDLOG;FMT_HEADER_ONLY=1;BUILD_TESTS;WIN32_LEAN_AND_MEAN;NOMINMAX;ASIO_STANDALONE;_WINSOCK_DEPRECATED_NO_WARNINGS;SODIUM_STATIC;ASIO_SEPARATE_COMPILATION;ASIO_ERROR_CATEGORY_NOEXCEPT=noexcept;TRACY_ENABLE;TRACY_ON_DEMAND;TRACY_NO_BROADCAST;TRACY_ONLY_LOCALHOST;TRACY_DELAYED_INIT;USE_TRACY;_CRT_SECURE_NO_WARNINGS;_WIN32_WINNT=0x0601;WIN32;_MBCS;_CRT_NONSTDC_NO_DEPRECATE;YY_NO_UNISTD_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>src;../../src;../../lib;../../lib/tracy/public/tracy;../../lib/spdlog/include;../../lib/libmedida/src;../../lib/soci/src/core;../../lib/autocheck/include;../../lib/cereal/include;../../lib/asio/asio/include;../../lib/xdrpp;../../lib/libsodium/src/libsodium/include;../../lib/fmt/include;../../lib/util;../..;src/$(Configuration)/generated;../../lib/sqlite;c:\Program Files\PostgreSQL\15\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BrowseInformation>false</BrowseInformation>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
Expand Down
10 changes: 9 additions & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ AC_ARG_ENABLE(tracy,
AS_HELP_STRING([--enable-tracy],
[Enable 'tracy' profiler/tracer client stub]))
AM_CONDITIONAL(USE_TRACY, [test x$enable_tracy = xyes])
tracy_CFLAGS='-DTRACY_ENABLE -DTRACY_ON_DEMAND -DTRACY_NO_BROADCAST -DTRACY_ONLY_LOCALHOST -DTRACY_ONLY_IPV4 -DTRACY_DELAYED_INIT -DTRACY_MANUAL_LIFETIME'
tracy_CFLAGS='-DTRACY_ENABLE -DTRACY_ON_DEMAND -DTRACY_NO_BROADCAST -DTRACY_ONLY_LOCALHOST -DTRACY_ONLY_IPV4 -DTRACY_DELAYED_INIT'
if test x"$enable_tracy" = xyes; then
case "${host_os}" in
*darwin*)
Expand All @@ -359,6 +359,14 @@ if test x"$enable_tracy" = xyes; then
fi
AC_SUBST(tracy_CFLAGS)

AC_ARG_ENABLE(tracy-memory-tracking,
AS_HELP_STRING([--enable-tracy-memory-tracking],
[Enable 'tracy' profiler/tracer memory tracking code (slow)]))
AM_CONDITIONAL(USE_TRACY_MEMORY_TRACKING, [test x$enable_tracy_memory_tracking = xyes])
if test x"$enable_tracy_memory_tracking" = xyes -a x"$enable_asan" = xyes; then
AC_MSG_ERROR([--enable-asan is not compatible with --enable-tracy-memory-tracking])
fi

AC_ARG_ENABLE(tracy-gui,
AS_HELP_STRING([--enable-tracy-gui],
[Enable 'tracy' profiler/tracer server GUI]))
Expand Down
97 changes: 81 additions & 16 deletions src/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,54 @@ include $(srcdir)/src.mk

noinst_HEADERS = $(SRC_H_FILES)

# We sometimes specify a CXXFLAGS setting like -stdlib=libc++ that causes the
# stdlib to change. When this makes it way down to Rust code building C++ code
# for one of its libraries (specifically tracy-client-sys) this needs to be
# accompanied by an _explicit_ instruction to invoke the linker with -lc++. This
# is done by setting the CXXSTDLIB flag, which Rust's C++-building machinery is
# sensitive to. Rust passes-on, but does not look inside, CXXFLAGS itself to
# realize that it needs this setting.
CXXSTDLIB := $(if $(findstring -stdlib=libc++,$(CXXFLAGS)),c++,$(if $(findstring -stdlib=libstdc++,$(CXXFLAGS)),stdc++,))

# If we are building with -fsanitize=address, any build.rs-built C++ code will
# depend on asan, so we need to tell rustc to link with in the asan runtime as
# well. Interestingly, passing -Clink-arg=-fsanitize=address to rustc does not
# work, despite being the recommended approach, it seems rustc passes some other
# flags to the linker that conflict with -fsanitize=address.
RUSTFLAGS_ASAN := $(if $(findstring -fsanitize=address,$(CXXFLAGS)),-Clink-arg=-lasan,)

if USE_TRACY
# NB: this unfortunately long list has to be provided here and kept in sync with
# the list of features for tracy-client in src/rust/Cargo.toml. This is because
# the soroban sub-crates are built independently and know nothing about
# src/rust/Cargo.toml
#
# NB also: this list does _not_ and should not include the manual-lifetime
# feature. Versions of the rust tracy-client crate before 0.17 (eg. version
# 0.16.4 which we shipped in soroban 21.x) always used the C++ tracy code in
# manual-lifetime mode, and thus required careful coordination with
# stellar-core's C++ code to start and stop tracy correctly. However this became
# intractable when we started building multiple soroban libraries as .rlibs with
# separate copies of tracy-client simultaneously, as they would each have their
# own rust-metadata-hash-qualified copy of a rust global variable tracking the
# initialization state of tracy (and of course tracy's C++ code itself cannot be
# started multiple times idempotently in manual-lifetime mode, that would be too
# easy). So we have now disabled tracy-client (0.16.4) in soroban 21.x and only
# enabled it in soroban 22.x (and later), which has tracy-client 0.17, which
# finally supports _turning off_ manual-lifetime mode. Once off, tracy's C++
# code initializes itself on its own, and everything works fine. There is only
# one copy of tracy in the final linked executable and it has a single atomic
# pointer controlling its initialization state.
CARGO_FEATURE_TRACY = --features tracy
CARGO_FEATURE_TRACY += --features tracy-client/enable
CARGO_FEATURE_TRACY += --features tracy-client/ondemand
CARGO_FEATURE_TRACY += --features tracy-client/delayed-init
CARGO_FEATURE_TRACY += --features tracy-client/system-tracing
CARGO_FEATURE_TRACY += --features tracy-client/sampling
CARGO_FEATURE_TRACY += --features tracy-client/code-transfer
CARGO_FEATURE_TRACY += --features tracy-client/timer-fallback
CARGO_FEATURE_TRACY += --features tracy-client/only-localhost
CARGO_FEATURE_TRACY += --features tracy-client/only-ipv4
else
CARGO_FEATURE_TRACY =
endif
Expand Down Expand Up @@ -76,6 +122,10 @@ stellar_core_SOURCES += util/xdrquery/XDRQueryScanner.cpp util/xdrquery/XDRQuery
BUILT_SOURCES += rust/RustBridge.h rust/RustBridge.cpp
stellar_core_SOURCES += rust/RustBridge.h rust/RustBridge.cpp

RUST_TOOLCHAIN_FILE=$(top_srcdir)/rust-toolchain.toml
RUST_TOOLCHAIN_CHANNEL=$(shell sed -n 's/channel *= *"\([^"]*\)"/\1/p' $(RUST_TOOLCHAIN_FILE))
CARGO=cargo +$(RUST_TOOLCHAIN_CHANNEL)

RUST_BUILD_DIR=$(top_builddir)/src/rust
RUST_BIN_DIR=$(RUST_BUILD_DIR)/bin
RUST_TARGET_DIR=$(top_builddir)/target
Expand Down Expand Up @@ -111,9 +161,9 @@ ALL_SOROBAN_LIBS=$(foreach proto,$(ALL_SOROBAN_PROTOCOLS),$(call soroban_rlib,$(
ALL_SOROBAN_EXTERN_ARGS=$(foreach proto,$(ALL_SOROBAN_PROTOCOLS),$(call soroban_extern_flag,$(proto)))
ALL_SOROBAN_DEPEND_ARGS=$(foreach proto,$(ALL_SOROBAN_PROTOCOLS),$(call soroban_depend_flag,$(proto)))

$(RUST_CXXBRIDGE):
$(RUST_CXXBRIDGE): Makefile $(RUST_TOOLCHAIN_FILE)
mkdir -p $(RUST_BIN_DIR)
CARGO_HTTP_MULTIPLEXING=false $(CARGO) install --locked --root $(RUST_BUILD_DIR) cxxbridge-cmd --version 1.0.68
CARGO_HTTP_MULTIPLEXING=false $(CARGO) install --force --locked --root $(RUST_BUILD_DIR) cxxbridge-cmd --version 1.0.68

rust/RustBridge.h: rust/src/lib.rs $(SRC_RUST_FILES) Makefile $(RUST_CXXBRIDGE)
$(RUST_CXXBRIDGE) $< --cfg test=false --header --output $@.tmp
Expand All @@ -127,11 +177,11 @@ rust/RustBridge.cpp: rust/src/lib.rs $(SRC_RUST_FILES) Makefile $(RUST_CXXBRIDGE
# check in to this repo as a secondary check on the lockfiles in the soroban
# submodules. You should still carefully inspect them if they change!

$(RUST_DEP_TREE_STAMP): $(wildcard rust/soroban/*/Cargo.*) Makefile
$(RUST_DEP_TREE_STAMP): $(wildcard rust/soroban/*/Cargo.*) Makefile $(RUST_TOOLCHAIN_FILE)
rm -f $@
for proto in $(ALL_SOROBAN_PROTOCOLS); \
do \
cargo tree --manifest-path rust/soroban/$${proto}/Cargo.toml --locked --package soroban-env-host --edges no-dev --target all \
$(CARGO) tree --manifest-path rust/soroban/$${proto}/Cargo.toml --locked --package soroban-env-host --edges no-dev --target all \
| sed -e "s@$(abspath $(top_srcdir))/@@g" > $(RUST_BUILD_DIR)/src/dep-trees/$${proto}-actual.txt ; \
if ! diff -u rust/src/dep-trees/$${proto}-expect.txt $(RUST_BUILD_DIR)/src/dep-trees/$${proto}-actual.txt; \
then \
Expand Down Expand Up @@ -167,15 +217,24 @@ $(RUST_DEP_TREE_STAMP): $(wildcard rust/soroban/*/Cargo.*) Makefile
# them back together. Or something. Anyways it works and is the only portable
# and robust solution we've found to preventing the StableCrateId collision.
#
# We also have to be somewhat selective about the versions we pass the
# `next` feature to (only the most recent soroban) and the versions we
# pass the `tracy` feature to (only those post-p22 versions that support
# the tracy delayed-init feature).
# We also have to be somewhat selective about the versions we pass the `next`
# feature to (only the most recent soroban) and the versions we pass the `tracy`
# features to (only those post-p22 versions that support the tracy delayed-init
# feature).
#
# We also have to sequentialize the builds of the sorobans after the
# dep-tree-stamp files and before the stellar-core build, because rustup
# gets invoked and it is not concurrency-safe.
$(SOROBAN_LIBS_STAMP): $(wildcard rust/soroban/p*/Cargo.lock) Makefile $(RUST_DEP_TREE_STAMP) $(SRC_RUST_FILES)
# dep-tree-stamp files and before the stellar-core build, because rustup gets
# invoked and it is not concurrency-safe.
#
# We also have to set pass all the CC, CXX, CFLAGS and CXXFLAGS we were called
# with explicitly, because make does not implicitly export them to its rules,
# but cargo needs them to build C++ files in build.rs files.
#
# We also have to pass CXXSTDLIB to those build.rs files, because they are
# sensitive to CXXFLAGS but also don't inspect them to see if they're setting
# -stdlib=libc++ or -stdlib=libstdc++
$(SOROBAN_LIBS_STAMP): $(wildcard rust/soroban/p*/Cargo.lock) Makefile $(RUST_DEP_TREE_STAMP) $(SRC_RUST_FILES) $(RUST_TOOLCHAIN_FILE)
rm -f $@
for proto in $(ALL_SOROBAN_PROTOCOLS) ; \
do \
FEATURE_FLAGS="" ; \
Expand All @@ -191,8 +250,10 @@ $(SOROBAN_LIBS_STAMP): $(wildcard rust/soroban/p*/Cargo.lock) Makefile $(RUST_DE
;; \
esac ; \
cd $(abspath $(RUST_BUILD_DIR))/soroban/$$proto && \
RUSTFLAGS=-Cmetadata=$$proto \
CARGO_NET_GIT_FETCH_WITH_CLI=true cargo build \
CC="$(CC)" CXX="$(CXX)" LD="$(LD)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CXXSTDLIB="$(CXXSTDLIB)" LDFLAGS="$(LDFLAGS)" \
RUSTFLAGS="-Cmetadata=$$proto $(RUSTFLAGS_ASAN)" \
CARGO_NET_GIT_FETCH_WITH_CLI=true \
$(CARGO) build \
--package soroban-env-host \
--$(RUST_PROFILE) \
--locked \
Expand All @@ -214,8 +275,12 @@ $(SOROBAN_LIBS_STAMP): $(wildcard rust/soroban/p*/Cargo.lock) Makefile $(RUST_DE
# them in as separate `--extern` arguments to a slightly-more-manual `cargo
# rustc` invocation, along with `-L dependency=...` flags to tell cargo where to
# find indirect deps of those .rlibs.
$(LIBRUST_STELLAR_CORE): $(RUST_HOST_DEPFILES) $(SRC_RUST_FILES) Makefile $(SOROBAN_LIBS_STAMP)
CARGO_NET_GIT_FETCH_WITH_CLI=true cargo rustc \
$(LIBRUST_STELLAR_CORE): $(RUST_HOST_DEPFILES) $(SRC_RUST_FILES) Makefile $(SOROBAN_LIBS_STAMP) $(RUST_TOOLCHAIN_FILE)
rm -rf $(abspath $(RUST_TARGET_DIR))
CC="$(CC)" CXX="$(CXX)" LD="$(LD)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CXXSTDLIB="$(CXXSTDLIB)" LDFLAGS="$(LDFLAGS)" \
RUSTFLAGS="$(RUSTFLAGS_ASAN)" \
CARGO_NET_GIT_FETCH_WITH_CLI=true \
$(CARGO) rustc \
--package stellar-core \
--$(RUST_PROFILE) \
--locked \
Expand Down Expand Up @@ -290,7 +355,7 @@ distclean-local: fuzz-clean
endif # USE_AFL_FUZZ

clean-local:
rm -rf $(top_builddir)/target $(top_builddir)/src/rust/soroban/*/target
rm -rf $(top_builddir)/target $(top_builddir)/src/rust/soroban/*/target $(RUST_DEP_TREE_STAMP) $(SOROBAN_LIBS_STAMP)

CLEANFILES = $(BUILT_SOURCES) *~ */*~ stellar*.log
MAINTAINERCLEANFILES = $(srcdir)/Makefile.in $(srcdir)/*~ $(srcdir)/*/*~
Expand Down
66 changes: 12 additions & 54 deletions src/main/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -278,25 +278,7 @@ checkStellarCoreMajorVersionProtocolIdentity()
}
}

#ifdef USE_TRACY

std::mutex TRACY_MUTEX;
static int TRACY_NOT_STARTED = 0;
static int TRACY_RUNNING = 1;
static int TRACY_STOPPED = 2;
static int TRACY_STATE = TRACY_NOT_STARTED;

// Call this only with mutex held
bool
tracyEnabled(std::lock_guard<std::mutex> const& _guard)
{
if (TRACY_STATE == TRACY_NOT_STARTED)
{
stellar::rust_bridge::start_tracy();
TRACY_STATE = TRACY_RUNNING;
}
return TRACY_STATE != TRACY_STOPPED;
}
#ifdef USE_TRACY_MEMORY_TRACKING

#ifdef __has_feature
#if __has_feature(address_sanitizer)
Expand All @@ -308,54 +290,42 @@ tracyEnabled(std::lock_guard<std::mutex> const& _guard)
#endif
#endif

#ifndef ASAN_ENABLED
#ifdef ASAN_ENABLED
#error "ASAN_ENABLED and USE_TRACY_MEMORY_TRACKING are mutually exclusive"
#else
void*
operator new(std::size_t count)
{
auto ptr = malloc(count);
std::lock_guard<std::mutex> guard(TRACY_MUTEX);
if (tracyEnabled(guard))
{
TracyAlloc(ptr, count);
}
// "Secure" here means "tolerant of calls outside the
// lifeitme of the tracy client".
TracySecureAlloc(ptr, count);
return ptr;
}

void
operator delete(void* ptr) noexcept
{
std::lock_guard<std::mutex> guard(TRACY_MUTEX);
if (tracyEnabled(guard))
{
TracyFree(ptr);
}
TracySecureFree(ptr);
free(ptr);
}

void*
operator new[](std::size_t count)
{
auto ptr = malloc(count);
std::lock_guard<std::mutex> guard(TRACY_MUTEX);
if (tracyEnabled(guard))
{
TracyAlloc(ptr, count);
}
TracySecureAlloc(ptr, count);
return ptr;
}

void
operator delete[](void* ptr) noexcept
{
std::lock_guard<std::mutex> guard(TRACY_MUTEX);
if (tracyEnabled(guard))
{
TracyFree(ptr);
}
TracySecureFree(ptr);
free(ptr);
}
#endif // ASAN_ENABLED
#endif // USE_TRACY
#endif // !ASAN_ENABLED
#endif // USE_TRACY_MEMORY_TRACKING

int
main(int argc, char* const* argv)
Expand All @@ -368,11 +338,6 @@ main(int argc, char* const* argv)
// At least print a backtrace in any circumstance
// that would call std::terminate
std::set_terminate(printBacktraceAndAbort);
#ifdef USE_TRACY
// The rust tracy client library is fussy about trying
// to own the tracy startup path.
rust_bridge::start_tracy();
#endif
Logging::init();
if (sodium_init() != 0)
{
Expand All @@ -388,12 +353,5 @@ main(int argc, char* const* argv)
checkXDRFileIdentity();

int res = handleCommandLine(argc, argv);
#ifdef USE_TRACY
{
std::lock_guard<std::mutex> guard(TRACY_MUTEX);
___tracy_shutdown_profiler();
TRACY_STATE = TRACY_STOPPED;
}
#endif
return res;
}
6 changes: 5 additions & 1 deletion src/rust/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,15 @@ itertools = "=0.10.5"
# There is a table on the README for https://crates.io/crates/tracy-client that
# maps versions of tracy-client to C++ tracy releases. The lib/tracy submodule
# of this repo should be pinned out to a matched C++ tracy release version.
#
# Also note: this feature list also has to be passed _on the command line_ (i.e.
# in the Makefile.am) when we separately build the soroban sub-crates because
# they are separate cargo invocations and do not see this list, or even this
# file, at all.
tracy-client = { version = "=0.17.0", features = [
"enable",
"ondemand",
"delayed-init",
"manual-lifetime",
"system-tracing",
"sampling",
"code-transfer",
Expand Down
Loading

0 comments on commit 92923c2

Please sign in to comment.