Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enforce levelization in libxrpl with CMake #5111

Merged
merged 17 commits into from
Dec 6, 2024

Conversation

thejohnfreeman
Copy link
Collaborator

@thejohnfreeman thejohnfreeman commented Aug 28, 2024

Adds two CMake functions:

  • add_module(library subdirectory): Declares an OBJECT "library" (a CMake abstraction for a collection of object files) with sources from the given subdirectory of the given library, representing a module. Isolates the module's headers by creating a subdirectory in the build directory, e.g. .build/tmp123, that contains just a symlink, e.g. .build/tmp123/basics, to the module's header directory, e.g. include/xrpl/basics, in the source directory, and putting .build/tmp123 (but not include/xrpl) on the include path of the module sources. This prevents the module sources from including headers not explicitly linked to the module in CMake with target_link_libraries.
  • target_link_modules(library scope modules...): Links the library target to each of the module targets, and removes their sources from its source list (so they are not compiled and linked twice).

Uses these functions to separate and explicitly link modules in libxrpl:

  • Level 01: beast
  • Level 02: basics
  • Level 03: json, crypto
  • Level 04: protocol
  • Level 05: resource, server

Define each "module" of libxrpl as a separate OBJECT library in CMake.
Link each one only to modules of a lower level.
Then link all of them into libxrpl itself.
Copy link

codecov bot commented Aug 28, 2024

Codecov Report

Attention: Patch coverage is 90.47619% with 2 lines in your changes missing coverage. Please review.

Project coverage is 77.9%. Comparing base (6d58065) to head (d7a030f).
Report is 1 commits behind head on develop.

Files with missing lines Patch % Lines
include/xrpl/basics/SHAMapHash.h 0.0% 2 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##           develop   #5111   +/-   ##
=======================================
  Coverage     77.9%   77.9%           
=======================================
  Files          784     783    -1     
  Lines        66680   66677    -3     
  Branches      8118    8106   -12     
=======================================
  Hits         51922   51922           
+ Misses       14758   14755    -3     
Files with missing lines Coverage Δ
include/xrpl/basics/Number.h 100.0% <ø> (ø)
include/xrpl/basics/base_uint.h 96.8% <100.0%> (+0.1%) ⬆️
include/xrpl/basics/partitioned_unordered_map.h 99.2% <100.0%> (+<0.1%) ⬆️
include/xrpl/protocol/AmountConversions.h 87.7% <ø> (ø)
include/xrpl/protocol/FeeUnits.h 90.4% <ø> (ø)
include/xrpl/protocol/Fees.h 100.0% <ø> (ø)
include/xrpl/protocol/IOUAmount.h 100.0% <ø> (ø)
include/xrpl/protocol/LedgerHeader.h 100.0% <ø> (ø)
include/xrpl/protocol/MPTAmount.h 100.0% <100.0%> (ø)
include/xrpl/protocol/PayChan.h 100.0% <ø> (ø)
... and 35 more

... and 5 files with indirect coverage changes

Impacted file tree graph

@ximinez
Copy link
Collaborator

ximinez commented Aug 29, 2024

Not a review yet, but this is such a cool idea.

cmake/isolate_headers.cmake Outdated Show resolved Hide resolved
Comment on lines 125 to 126
PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is probably not needed ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

actually, upon some testing, this whole target_include_directories seem to be not needed.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not needed now that all of the subdirectories in libxrpl are modules. It was necessary as I migrated them one-by-one, and it could be necessary in the future if someone adds a non-module subdirectory. Could be nice if it "just works" without tampering with the CMake. What do you think?

Copy link
Collaborator

@Bronek Bronek Sep 23, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps comment out and put a comment above, to explain why this is not necessary and in what condition it might become necessary again ?

@Bronek
Copy link
Collaborator

Bronek commented Sep 20, 2024

I like how you moved extract to appropriate locations, but it seems that extract is function-wise the same as hash.

Given we already specialize both boost::hash (e.g. in IPEndpoint.h) and std::hash (e.g. in Book.h) I think that cleaning this up belongs in a different PR (also converting extract to hash), so maybe just take a note for future refactoring.

@Bronek
Copy link
Collaborator

Bronek commented Sep 23, 2024

I do wonder whether Builds/levelization is becoming superfluous with this change. Why should we keep it, if the ordering of modules (and header isolation) enforce it for us ?

Copy link
Collaborator

@Bronek Bronek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall very nice change. Some comments in the middle, unsure if they require changes in this PR or not.

@thejohnfreeman
Copy link
Collaborator Author

Builds/levelization is still used to diagnose cycles in xrpld. I want to remove it after we've eliminated all of the cycles.

@Bronek
Copy link
Collaborator

Bronek commented Sep 24, 2024

Builds/levelization is still used to diagnose cycles in xrpld. I want to remove it after we've eliminated all of the cycles.

Makes sense. All the more reason to make an effort moving parts of xrpld into libxrpl, but that's separate discussion and more than one PR.

@Bronek Bronek self-requested a review September 24, 2024 16:23
Copy link
Collaborator

@Bronek Bronek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice improvement, thanks !

@ximinez
Copy link
Collaborator

ximinez commented Oct 24, 2024

Bad news right out the gate on Windows builds:

$ cmake build/cmake/msvc19.ON
-- Using Conan toolchain: C:/Dev/rippled/review1/build/conan.msvc19/build/generators/conan_toolchain.cmake
-- Conan toolchain: C++ Standard 20 with extensions OFF
-- Conan toolchain: Setting BUILD_SHARED_LIBS = OFF
-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
[...]
-- Conan: Component target declared 'xxHash::xxhash'
-- Conan: Including build module from 'C:/.conan/4b4fe1f3/1/lib/cmake/protobuf/protobuf-generate.cmake'
-- Conan: Including build module from 'C:/.conan/4b4fe1f3/1/lib/cmake/protobuf/protobuf-module.cmake'
-- Conan: Including build module from 'C:/.conan/4b4fe1f3/1/lib/cmake/protobuf/protobuf-options.cmake'
CMake Error at cmake/isolate_headers.cmake:44 (file):
  file failed to create symbolic link
  'C:/Dev/rippled/review1/build/cmake/msvc19.ON/modules/xrpl.libxrpl.beast/xrpl/beast':
  A required privilege is not held by the client.

Call Stack (most recent call first):
  cmake/add_module.cmake:25 (isolate_headers)
  cmake/RippledCore.cmake:69 (add_module)
  CMakeLists.txt:123 (include)


CMake Error at cmake/isolate_headers.cmake:44 (file):
  file failed to create symbolic link
  'C:/Dev/rippled/review1/build/cmake/msvc19.ON/modules/xrpl.libxrpl.basics/xrpl/basics':
  A required privilege is not held by the client.

Call Stack (most recent call first):
  cmake/add_module.cmake:25 (isolate_headers)
  cmake/RippledCore.cmake:76 (add_module)
  CMakeLists.txt:123 (include)


CMake Error at cmake/isolate_headers.cmake:44 (file):
  file failed to create symbolic link
  'C:/Dev/rippled/review1/build/cmake/msvc19.ON/modules/xrpl.libxrpl.json/xrpl/json':
  A required privilege is not held by the client.

Call Stack (most recent call first):
  cmake/add_module.cmake:25 (isolate_headers)
  cmake/RippledCore.cmake:80 (add_module)
  CMakeLists.txt:123 (include)


CMake Error at cmake/isolate_headers.cmake:44 (file):
  file failed to create symbolic link
  'C:/Dev/rippled/review1/build/cmake/msvc19.ON/modules/xrpl.libxrpl.crypto/xrpl/crypto':
  A required privilege is not held by the client.

Call Stack (most recent call first):
  cmake/add_module.cmake:25 (isolate_headers)
  cmake/RippledCore.cmake:83 (add_module)
  CMakeLists.txt:123 (include)


CMake Error at cmake/isolate_headers.cmake:44 (file):
  file failed to create symbolic link
  'C:/Dev/rippled/review1/build/cmake/msvc19.ON/modules/xrpl.libxrpl.protocol/xrpl/protocol':
  A required privilege is not held by the client.

Call Stack (most recent call first):
  cmake/add_module.cmake:25 (isolate_headers)
  cmake/RippledCore.cmake:87 (add_module)
  CMakeLists.txt:123 (include)


CMake Error at cmake/isolate_headers.cmake:44 (file):
  file failed to create symbolic link
  'C:/Dev/rippled/review1/build/cmake/msvc19.ON/modules/xrpl.libxrpl.resource/xrpl/resource':
  A required privilege is not held by the client.

Call Stack (most recent call first):
  cmake/add_module.cmake:25 (isolate_headers)
  cmake/RippledCore.cmake:94 (add_module)
  CMakeLists.txt:123 (include)


CMake Error at cmake/isolate_headers.cmake:44 (file):
  file failed to create symbolic link
  'C:/Dev/rippled/review1/build/cmake/msvc19.ON/modules/xrpl.libxrpl.server/xrpl/server':
  A required privilege is not held by the client.

Call Stack (most recent call first):
  cmake/add_module.cmake:25 (isolate_headers)
  cmake/RippledCore.cmake:97 (add_module)
  CMakeLists.txt:123 (include)


-- xrpl.libxrpl.basics with 14 sources took 14 sources from xrpl.libxrpl
-- xrpl.libxrpl.beast with 15 sources took 15 sources from xrpl.libxrpl
-- xrpl.libxrpl.crypto with 3 sources took 3 sources from xrpl.libxrpl
-- xrpl.libxrpl.json with 9 sources took 9 sources from xrpl.libxrpl
-- xrpl.libxrpl.protocol with 51 sources took 51 sources from xrpl.libxrpl
-- xrpl.libxrpl.resource with 4 sources took 4 sources from xrpl.libxrpl
-- xrpl.libxrpl.server with 2 sources took 2 sources from xrpl.libxrpl
-- Configuring incomplete, errors occurred!

@thejohnfreeman
Copy link
Collaborator Author

@ximinez ok, try again.

@ximinez
Copy link
Collaborator

ximinez commented Oct 30, 2024

It's building successfully now. Neat workaround. Super annoying that this is an issue, though.

I remember there were some file(CREATE_LINK calls elsewhere that were simply disabled under Windows. Would it be worth coming back to those to use this same technique?

Otherwise, I'll come back to the rest of this review as soon as I get some other priorities knocked out.

Copy link
Collaborator

@godexsoft godexsoft left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good 👍 Just one question - not a blocker by any means.

# add_module(parent a)
# add_module(parent b)
# target_link_libraries(project.libparent.b PUBLIC project.libparent.a)
function(add_module parent name)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't it be even nicer if you could optionally pass the libraries to link the target with right here too? Is it possible to add the PUBLIC lib1 lib2 through args somehow?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I find the current call pattern nice enough. It reads like conventional CMake to me. If someone wants to add the function you're talking about, I think that's fine, but I'd rather keep this function just doing the one thing.

@ximinez
Copy link
Collaborator

ximinez commented Nov 15, 2024

@thejohnfreeman I see this has two approvals. Since I've verified that it builds under Windows, it's up to you if you want to wait for mine, too, or go ahead and add the "Passed" label and provide a commit message. I'll preemptively mark it as "Blocked" now to be sure we wait until after the 2.3.0 release before merging.

@thejohnfreeman
Copy link
Collaborator Author

@ximinez I would still appreciate your review.

Copy link
Collaborator

@ximinez ximinez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, and it all works!

$ find install -type f
install/bin/rippled.exe
install/etc/rippled.cfg
install/etc/validators.txt
install/include/ed25519.h
install/include/secp256k1.h
install/include/secp256k1_ecdh.h
install/include/secp256k1_extrakeys.h
install/include/secp256k1_preallocated.h
install/include/secp256k1_schnorrsig.h
install/include/xrpl/basics/algorithm.h
install/include/xrpl/basics/Archive.h
install/include/xrpl/basics/base64.h
install/include/xrpl/basics/base_uint.h
install/include/xrpl/basics/BasicConfig.h
install/include/xrpl/basics/Blob.h
install/include/xrpl/basics/Buffer.h
install/include/xrpl/basics/ByteUtilities.h
install/include/xrpl/basics/chrono.h
install/include/xrpl/basics/comparators.h
install/include/xrpl/basics/CompressionAlgorithms.h
install/include/xrpl/basics/contract.h
install/include/xrpl/basics/CountedObject.h
install/include/xrpl/basics/DecayingSample.h
install/include/xrpl/basics/Expected.h
install/include/xrpl/basics/FileUtilities.h
install/include/xrpl/basics/hardened_hash.h
install/include/xrpl/basics/join.h
install/include/xrpl/basics/KeyCache.h
install/include/xrpl/basics/LocalValue.h
install/include/xrpl/basics/Log.h
install/include/xrpl/basics/make_SSLContext.h
install/include/xrpl/basics/MathUtilities.h
install/include/xrpl/basics/mulDiv.h
install/include/xrpl/basics/Number.h
install/include/xrpl/basics/partitioned_unordered_map.h
install/include/xrpl/basics/random.h
install/include/xrpl/basics/RangeSet.h
install/include/xrpl/basics/README.md
install/include/xrpl/basics/Resolver.h
install/include/xrpl/basics/ResolverAsio.h
install/include/xrpl/basics/safe_cast.h
install/include/xrpl/basics/scope.h
install/include/xrpl/basics/SHAMapHash.h
install/include/xrpl/basics/SlabAllocator.h
install/include/xrpl/basics/Slice.h
install/include/xrpl/basics/spinlock.h
install/include/xrpl/basics/strHex.h
install/include/xrpl/basics/StringUtilities.h
install/include/xrpl/basics/TaggedCache.h
install/include/xrpl/basics/tagged_integer.h
install/include/xrpl/basics/ToString.h
install/include/xrpl/basics/UnorderedContainers.h
install/include/xrpl/basics/UptimeClock.h
install/include/xrpl/beast/asio/io_latency_probe.h
install/include/xrpl/beast/clock/abstract_clock.h
install/include/xrpl/beast/clock/basic_seconds_clock.h
install/include/xrpl/beast/clock/manual_clock.h
install/include/xrpl/beast/container/aged_container.h
install/include/xrpl/beast/container/aged_container_utility.h
install/include/xrpl/beast/container/aged_map.h
install/include/xrpl/beast/container/aged_multimap.h
install/include/xrpl/beast/container/aged_multiset.h
install/include/xrpl/beast/container/aged_set.h
install/include/xrpl/beast/container/aged_unordered_map.h
install/include/xrpl/beast/container/aged_unordered_multimap.h
install/include/xrpl/beast/container/aged_unordered_multiset.h
install/include/xrpl/beast/container/aged_unordered_set.h
install/include/xrpl/beast/container/detail/aged_associative_container.h
install/include/xrpl/beast/container/detail/aged_container_iterator.h
install/include/xrpl/beast/container/detail/aged_ordered_container.h
install/include/xrpl/beast/container/detail/aged_unordered_container.h
install/include/xrpl/beast/container/detail/empty_base_optimization.h
install/include/xrpl/beast/core/CurrentThreadName.h
install/include/xrpl/beast/core/LexicalCast.h
install/include/xrpl/beast/core/List.h
install/include/xrpl/beast/core/LockFreeStack.h
install/include/xrpl/beast/core/SemanticVersion.h
install/include/xrpl/beast/hash/hash_append.h
install/include/xrpl/beast/hash/uhash.h
install/include/xrpl/beast/hash/xxhasher.h
install/include/xrpl/beast/insight/Collector.h
install/include/xrpl/beast/insight/Counter.h
install/include/xrpl/beast/insight/CounterImpl.h
install/include/xrpl/beast/insight/Event.h
install/include/xrpl/beast/insight/EventImpl.h
install/include/xrpl/beast/insight/Gauge.h
install/include/xrpl/beast/insight/GaugeImpl.h
install/include/xrpl/beast/insight/Group.h
install/include/xrpl/beast/insight/Groups.h
install/include/xrpl/beast/insight/Hook.h
install/include/xrpl/beast/insight/HookImpl.h
install/include/xrpl/beast/insight/Insight.h
install/include/xrpl/beast/insight/Meter.h
install/include/xrpl/beast/insight/MeterImpl.h
install/include/xrpl/beast/insight/NullCollector.h
install/include/xrpl/beast/insight/StatsDCollector.h
install/include/xrpl/beast/net/IPAddress.h
install/include/xrpl/beast/net/IPAddressConversion.h
install/include/xrpl/beast/net/IPAddressV4.h
install/include/xrpl/beast/net/IPAddressV6.h
install/include/xrpl/beast/net/IPEndpoint.h
install/include/xrpl/beast/rfc2616.h
install/include/xrpl/beast/test/yield_to.h
install/include/xrpl/beast/type_name.h
install/include/xrpl/beast/unit_test/amount.h
install/include/xrpl/beast/unit_test/detail/const_container.h
install/include/xrpl/beast/unit_test/global_suites.h
install/include/xrpl/beast/unit_test/match.h
install/include/xrpl/beast/unit_test/recorder.h
install/include/xrpl/beast/unit_test/reporter.h
install/include/xrpl/beast/unit_test/results.h
install/include/xrpl/beast/unit_test/runner.h
install/include/xrpl/beast/unit_test/suite.h
install/include/xrpl/beast/unit_test/suite_info.h
install/include/xrpl/beast/unit_test/suite_list.h
install/include/xrpl/beast/unit_test/thread.h
install/include/xrpl/beast/unit_test.h
install/include/xrpl/beast/utility/Journal.h
install/include/xrpl/beast/utility/maybe_const.h
install/include/xrpl/beast/utility/PropertyStream.h
install/include/xrpl/beast/utility/rngfill.h
install/include/xrpl/beast/utility/temp_dir.h
install/include/xrpl/beast/utility/WrappedSink.h
install/include/xrpl/beast/utility/Zero.h
install/include/xrpl/beast/xor_shift_engine.h
install/include/xrpl/crypto/csprng.h
install/include/xrpl/crypto/README.md
install/include/xrpl/crypto/RFC1751.h
install/include/xrpl/crypto/secure_erase.h
install/include/xrpl/json/detail/json_assert.h
install/include/xrpl/json/JsonPropertyStream.h
install/include/xrpl/json/json_errors.h
install/include/xrpl/json/json_forwards.h
install/include/xrpl/json/json_reader.h
install/include/xrpl/json/json_value.h
install/include/xrpl/json/json_writer.h
install/include/xrpl/json/Object.h
install/include/xrpl/json/Output.h
install/include/xrpl/json/README.md
install/include/xrpl/json/to_string.h
install/include/xrpl/json/Writer.h
install/include/xrpl/proto/org/xrpl/rpc/v1/get_ledger.grpc.pb.h
install/include/xrpl/proto/org/xrpl/rpc/v1/get_ledger.pb.h
install/include/xrpl/proto/org/xrpl/rpc/v1/get_ledger.proto
install/include/xrpl/proto/org/xrpl/rpc/v1/get_ledger_data.grpc.pb.h
install/include/xrpl/proto/org/xrpl/rpc/v1/get_ledger_data.pb.h
install/include/xrpl/proto/org/xrpl/rpc/v1/get_ledger_data.proto
install/include/xrpl/proto/org/xrpl/rpc/v1/get_ledger_diff.grpc.pb.h
install/include/xrpl/proto/org/xrpl/rpc/v1/get_ledger_diff.pb.h
install/include/xrpl/proto/org/xrpl/rpc/v1/get_ledger_diff.proto
install/include/xrpl/proto/org/xrpl/rpc/v1/get_ledger_entry.grpc.pb.h
install/include/xrpl/proto/org/xrpl/rpc/v1/get_ledger_entry.pb.h
install/include/xrpl/proto/org/xrpl/rpc/v1/get_ledger_entry.proto
install/include/xrpl/proto/org/xrpl/rpc/v1/ledger.grpc.pb.h
install/include/xrpl/proto/org/xrpl/rpc/v1/ledger.pb.h
install/include/xrpl/proto/org/xrpl/rpc/v1/ledger.proto
install/include/xrpl/proto/org/xrpl/rpc/v1/README.md
install/include/xrpl/proto/org/xrpl/rpc/v1/xrp_ledger.grpc.pb.h
install/include/xrpl/proto/org/xrpl/rpc/v1/xrp_ledger.pb.h
install/include/xrpl/proto/org/xrpl/rpc/v1/xrp_ledger.proto
install/include/xrpl/proto/README.md
install/include/xrpl/proto/ripple.pb.h
install/include/xrpl/proto/ripple.proto
install/include/xrpl/protocol/AccountID.h
install/include/xrpl/protocol/AMMCore.h
install/include/xrpl/protocol/AmountConversions.h
install/include/xrpl/protocol/ApiVersion.h
install/include/xrpl/protocol/Asset.h
install/include/xrpl/protocol/Book.h
install/include/xrpl/protocol/BuildInfo.h
install/include/xrpl/protocol/detail/b58_utils.h
install/include/xrpl/protocol/detail/features.macro
install/include/xrpl/protocol/detail/ledger_entries.macro
install/include/xrpl/protocol/detail/secp256k1.h
install/include/xrpl/protocol/detail/sfields.macro
install/include/xrpl/protocol/detail/STVar.h
install/include/xrpl/protocol/detail/token_errors.h
install/include/xrpl/protocol/detail/transactions.macro
install/include/xrpl/protocol/digest.h
install/include/xrpl/protocol/ErrorCodes.h
install/include/xrpl/protocol/Feature.h
install/include/xrpl/protocol/Fees.h
install/include/xrpl/protocol/FeeUnits.h
install/include/xrpl/protocol/HashPrefix.h
install/include/xrpl/protocol/Indexes.h
install/include/xrpl/protocol/InnerObjectFormats.h
install/include/xrpl/protocol/IOUAmount.h
install/include/xrpl/protocol/Issue.h
install/include/xrpl/protocol/json_get_or_throw.h
install/include/xrpl/protocol/jss.h
install/include/xrpl/protocol/Keylet.h
install/include/xrpl/protocol/KeyType.h
install/include/xrpl/protocol/KnownFormats.h
install/include/xrpl/protocol/LedgerFormats.h
install/include/xrpl/protocol/LedgerHeader.h
install/include/xrpl/protocol/messages.h
install/include/xrpl/protocol/MPTAmount.h
install/include/xrpl/protocol/MPTIssue.h
install/include/xrpl/protocol/MultiApiJson.h
install/include/xrpl/protocol/nft.h
install/include/xrpl/protocol/NFTokenID.h
install/include/xrpl/protocol/NFTokenOfferID.h
install/include/xrpl/protocol/nftPageMask.h
install/include/xrpl/protocol/NFTSyntheticSerializer.h
install/include/xrpl/protocol/PayChan.h
install/include/xrpl/protocol/Protocol.h
install/include/xrpl/protocol/PublicKey.h
install/include/xrpl/protocol/Quality.h
install/include/xrpl/protocol/QualityFunction.h
install/include/xrpl/protocol/Rate.h
install/include/xrpl/protocol/README.md
install/include/xrpl/protocol/RippleLedgerHash.h
install/include/xrpl/protocol/RPCErr.h
install/include/xrpl/protocol/Rules.h
install/include/xrpl/protocol/SecretKey.h
install/include/xrpl/protocol/Seed.h
install/include/xrpl/protocol/SeqProxy.h
install/include/xrpl/protocol/serialize.h
install/include/xrpl/protocol/Serializer.h
install/include/xrpl/protocol/SField.h
install/include/xrpl/protocol/Sign.h
install/include/xrpl/protocol/SOTemplate.h
install/include/xrpl/protocol/st.h
install/include/xrpl/protocol/STAccount.h
install/include/xrpl/protocol/STAmount.h
install/include/xrpl/protocol/STArray.h
install/include/xrpl/protocol/STBase.h
install/include/xrpl/protocol/STBitString.h
install/include/xrpl/protocol/STBlob.h
install/include/xrpl/protocol/STCurrency.h
install/include/xrpl/protocol/STExchange.h
install/include/xrpl/protocol/STInteger.h
install/include/xrpl/protocol/STIssue.h
install/include/xrpl/protocol/STLedgerEntry.h
install/include/xrpl/protocol/STNumber.h
install/include/xrpl/protocol/STObject.h
install/include/xrpl/protocol/STParsedJSON.h
install/include/xrpl/protocol/STPathSet.h
install/include/xrpl/protocol/STTx.h
install/include/xrpl/protocol/STValidation.h
install/include/xrpl/protocol/STVector256.h
install/include/xrpl/protocol/STXChainBridge.h
install/include/xrpl/protocol/SystemParameters.h
install/include/xrpl/protocol/TER.h
install/include/xrpl/protocol/tokens.h
install/include/xrpl/protocol/TxFlags.h
install/include/xrpl/protocol/TxFormats.h
install/include/xrpl/protocol/TxMeta.h
install/include/xrpl/protocol/UintTypes.h
install/include/xrpl/protocol/XChainAttestations.h
install/include/xrpl/protocol/XRPAmount.h
install/include/xrpl/resource/Charge.h
install/include/xrpl/resource/Consumer.h
install/include/xrpl/resource/detail/Entry.h
install/include/xrpl/resource/detail/Import.h
install/include/xrpl/resource/detail/Key.h
install/include/xrpl/resource/detail/Kind.h
install/include/xrpl/resource/detail/Logic.h
install/include/xrpl/resource/detail/Tuning.h
install/include/xrpl/resource/Disposition.h
install/include/xrpl/resource/Fees.h
install/include/xrpl/resource/Gossip.h
install/include/xrpl/resource/README.md
install/include/xrpl/resource/ResourceManager.h
install/include/xrpl/resource/Types.h
install/include/xrpl/server/detail/BaseHTTPPeer.h
install/include/xrpl/server/detail/BasePeer.h
install/include/xrpl/server/detail/BaseWSPeer.h
install/include/xrpl/server/detail/Door.h
install/include/xrpl/server/detail/io_list.h
install/include/xrpl/server/detail/JSONRPCUtil.h
install/include/xrpl/server/detail/LowestLayer.h
install/include/xrpl/server/detail/PlainHTTPPeer.h
install/include/xrpl/server/detail/PlainWSPeer.h
install/include/xrpl/server/detail/ServerImpl.h
install/include/xrpl/server/detail/SSLHTTPPeer.h
install/include/xrpl/server/detail/SSLWSPeer.h
install/include/xrpl/server/Handoff.h
install/include/xrpl/server/Port.h
install/include/xrpl/server/Server.h
install/include/xrpl/server/Session.h
install/include/xrpl/server/SimpleWriter.h
install/include/xrpl/server/Writer.h
install/include/xrpl/server/WSSession.h
install/lib/cmake/ed25519/ed25519-targets-debug.cmake
install/lib/cmake/ed25519/ed25519-targets.cmake
install/lib/cmake/libsecp256k1/libsecp256k1-config-version.cmake
install/lib/cmake/libsecp256k1/libsecp256k1-config.cmake
install/lib/cmake/libsecp256k1/libsecp256k1-targets-debug.cmake
install/lib/cmake/libsecp256k1/libsecp256k1-targets.cmake
install/lib/cmake/ripple/RippleConfig.cmake
install/lib/cmake/ripple/RippleConfigVersion.cmake
install/lib/cmake/ripple/RippleTargets-debug.cmake
install/lib/cmake/ripple/RippleTargets.cmake
install/lib/ed25519.lib
install/lib/secp256k1.lib
install/lib/xrpl.lib
install/lib/xrpl.libpb.lib

$ find install -type l
install/bin/xrpld
install/include/ripple

@thejohnfreeman thejohnfreeman added the Passed Passed code review & PR owner thinks it's ready to merge. Perf sign-off may still be required. label Dec 5, 2024
@ximinez ximinez removed the Blocked label Dec 6, 2024
@ximinez ximinez merged commit ea1fffe into XRPLF:develop Dec 6, 2024
20 checks passed
@ximinez ximinez mentioned this pull request Dec 17, 2024
1 task
ximinez added a commit to ximinez/rippled that referenced this pull request Dec 19, 2024
* Resolves an issue introduced by XRPLF#5111, which inadvertently removed the
  -Wno-maybe-uninitialized compiler option from those modules. This
  resulted in new "may be used uninitialized" build warnings, first
  noticed in the "protocol" module. When compiling with derr=TRUE, those
  warnings became errors, which made the build fail.
ximinez added a commit to ximinez/rippled that referenced this pull request Jan 7, 2025
* Resolves an issue introduced by XRPLF#5111, which inadvertently
  removed the -Wno-maybe-uninitialized compiler option from some
  modules. This resulted in new "may be used uninitialized" build
  warnings, first noticed in the "protocol" module. When compiling with
  derr=TRUE, those warnings became errors, which made the build fail.
@gregtatcam
Copy link
Collaborator

This commit breaks CLion IDE. Refactoring, break-points in include files, file links to compile errors, intellisense stopped working completely or partially depending on the edited files because the include files copied to modules directory and CLion treats those copied include files as the project's includes as opposed to the actual includes. This degrades CLion usability.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Passed Passed code review & PR owner thinks it's ready to merge. Perf sign-off may still be required.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants