mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-05 04:15:51 +00:00
chore: Remove all conan options and use purely CMake targets (#2538)
Closes: https://github.com/XRPLF/clio/pull/2535
This commit is contained in:
1
.github/actions/cmake/action.yml
vendored
1
.github/actions/cmake/action.yml
vendored
@@ -64,6 +64,7 @@ runs:
|
||||
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \
|
||||
-DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
|
||||
"${SANITIZER_OPTION}" \
|
||||
-Dtests=ON \
|
||||
-Dintegration_tests="${INTEGRATION_TESTS}" \
|
||||
-Dbenchmark="${BENCHMARK}" \
|
||||
-Dcoverage="${COVERAGE}" \
|
||||
|
||||
7
.github/actions/conan/action.yml
vendored
7
.github/actions/conan/action.yml
vendored
@@ -17,10 +17,6 @@ inputs:
|
||||
description: Build type for third-party libraries and clio. Could be 'Release', 'Debug'
|
||||
required: true
|
||||
default: "Release"
|
||||
build_benchmark:
|
||||
description: Whether to build benchmark tests
|
||||
required: true
|
||||
default: "true"
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
@@ -33,13 +29,10 @@ runs:
|
||||
shell: bash
|
||||
env:
|
||||
CONAN_BUILD_OPTION: "${{ inputs.force_conan_source_build == 'true' && '*' || 'missing' }}"
|
||||
BUILD_BENCHMARK: "${{ inputs.build_benchmark == 'true' && 'True' || 'False' }}"
|
||||
run: |
|
||||
conan \
|
||||
install . \
|
||||
-of build \
|
||||
-b "$CONAN_BUILD_OPTION" \
|
||||
-s "build_type=${{ inputs.build_type }}" \
|
||||
-o "&:tests=True" \
|
||||
-o "&:benchmark=${BUILD_BENCHMARK}" \
|
||||
--profile:all "${{ inputs.conan_profile }}"
|
||||
|
||||
2
.github/workflows/check_libxrpl.yml
vendored
2
.github/workflows/check_libxrpl.yml
vendored
@@ -38,7 +38,7 @@ jobs:
|
||||
- name: Update conan lockfile
|
||||
shell: bash
|
||||
run: |
|
||||
conan lock create . -o '&:tests=True' -o '&:benchmark=True' --profile:all ${{ env.CONAN_PROFILE }}
|
||||
conan lock create . --profile:all ${{ env.CONAN_PROFILE }}
|
||||
|
||||
- name: Run conan
|
||||
uses: ./.github/actions/conan
|
||||
|
||||
12
conanfile.py
12
conanfile.py
@@ -9,10 +9,7 @@ class ClioConan(ConanFile):
|
||||
url = 'https://github.com/xrplf/clio'
|
||||
description = 'Clio RPC server'
|
||||
settings = 'os', 'compiler', 'build_type', 'arch'
|
||||
options = {
|
||||
'tests': [True, False],
|
||||
'benchmark': [True, False],
|
||||
}
|
||||
options = {}
|
||||
|
||||
requires = [
|
||||
'boost/1.83.0',
|
||||
@@ -28,9 +25,6 @@ class ClioConan(ConanFile):
|
||||
]
|
||||
|
||||
default_options = {
|
||||
'tests': False,
|
||||
'benchmark': False,
|
||||
|
||||
'xrpl/*:tests': False,
|
||||
'xrpl/*:rocksdb': False,
|
||||
'cassandra-cpp-driver/*:shared': False,
|
||||
@@ -51,9 +45,7 @@ class ClioConan(ConanFile):
|
||||
)
|
||||
|
||||
def requirements(self):
|
||||
if self.options.tests or self.options.integration_tests:
|
||||
self.requires('gtest/1.14.0')
|
||||
if self.options.benchmark:
|
||||
self.requires('benchmark/1.9.4')
|
||||
|
||||
def configure(self):
|
||||
@@ -70,8 +62,6 @@ class ClioConan(ConanFile):
|
||||
|
||||
def generate(self):
|
||||
tc = CMakeToolchain(self)
|
||||
for option_name, option_value in self.options.items():
|
||||
tc.variables[option_name] = option_value
|
||||
tc.generate()
|
||||
|
||||
def build(self):
|
||||
|
||||
@@ -107,62 +107,72 @@ You have to update this file every time you add a new dependency or change a rev
|
||||
To do that, run the following command in the repository root:
|
||||
|
||||
```bash
|
||||
conan lock create . -o '&:tests=True' -o '&:benchmark=True'
|
||||
conan lock create .
|
||||
```
|
||||
|
||||
## Building Clio
|
||||
|
||||
Navigate to Clio's root directory and run:
|
||||
1. Navigate to Clio's root directory and run:
|
||||
|
||||
```sh
|
||||
mkdir build && cd build
|
||||
# You can also specify profile explicitly by adding `--profile:all <PROFILE_NAME>`
|
||||
conan install .. --output-folder . --build missing --settings build_type=Release -o '&:tests=True'
|
||||
# You can also add -GNinja to use Ninja build system instead of Make
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release ..
|
||||
cmake --build . --parallel 8 # or without the number if you feel extra adventurous
|
||||
```
|
||||
```sh
|
||||
mkdir build && cd build
|
||||
```
|
||||
|
||||
> [!TIP]
|
||||
> You can omit the `-o '&:tests=True'` if you don't want to build `clio_tests`.
|
||||
2. Install dependencies through conan.
|
||||
|
||||
If successful, `conan install` will find the required packages and `cmake` will do the rest. You should see `clio_server` and `clio_tests` in the `build` directory (the current directory).
|
||||
```sh
|
||||
conan install .. --output-folder . --build missing --settings build_type=Release
|
||||
```
|
||||
|
||||
> [!TIP]
|
||||
> To generate a Code Coverage report, include `-o '&:coverage=True'` in the `conan install` command above, along with `-o '&:tests=True'` to enable tests.
|
||||
> After running the `cmake` commands, execute `make clio_tests-ccov`.
|
||||
> The coverage report will be found at `clio_tests-llvm-cov/index.html`.
|
||||
> You can add `--profile:all <PROFILE_NAME>` to choose a specific conan profile.
|
||||
|
||||
<!-- markdownlint-disable-line MD028 -->
|
||||
3. Configure and generate build files with CMake.
|
||||
|
||||
```sh
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release ..
|
||||
```
|
||||
|
||||
> You can add `-GNinja` to use the Ninja build system (instead of Make).
|
||||
|
||||
4. Now, you can build all targets or specific ones:
|
||||
|
||||
```sh
|
||||
# builds all targets
|
||||
cmake --build . --parallel 8
|
||||
# builds only clio_server target
|
||||
cmake --build . --parallel 8 --target clio_server
|
||||
```
|
||||
|
||||
You should see `clio_server` and `clio_tests` in the current directory.
|
||||
|
||||
> [!NOTE]
|
||||
> If you've built Clio before and the build is now failing, it's likely due to updated dependencies. Try deleting the build folder and then rerunning the Conan and CMake commands mentioned above.
|
||||
|
||||
### CMake options
|
||||
|
||||
There are several CMake options you can use to customize the build:
|
||||
|
||||
| CMake Option | Default | CMake Target | Description |
|
||||
| --------------------- | ------- | -------------------------------------------------------- | ------------------------------------- |
|
||||
| `-Dcoverage` | OFF | `clio_tests-ccov` | Enables code coverage generation |
|
||||
| `-Dtests` | OFF | `clio_tests` | Enables unit tests |
|
||||
| `-Dintegration_tests` | OFF | `clio_integration_tests` | Enables integration tests |
|
||||
| `-Dbenchmark` | OFF | `clio_benchmark` | Enables benchmark executable |
|
||||
| `-Ddocs` | OFF | `docs` | Enables API documentation generation |
|
||||
| `-Dlint` | OFF | See [#clang-tidy](#using-clang-tidy-for-static-analysis) | Enables `clang-tidy` static analysis |
|
||||
| `-Dsan` | N/A | N/A | Enables Sanitizer (asan, tsan, ubsan) |
|
||||
| `-Dpackage` | OFF | N/A | Creates a debian package |
|
||||
|
||||
### Generating API docs for Clio
|
||||
|
||||
The API documentation for Clio is generated by [Doxygen](https://www.doxygen.nl/index.html). If you want to generate the API documentation when building Clio, make sure to install Doxygen 1.12.0 on your system.
|
||||
|
||||
To generate the API docs:
|
||||
To generate the API docs, please use CMake option `-Ddocs=ON` as described above and build the `docs` target.
|
||||
|
||||
1. First, include `-o '&:docs=True'` in the conan install command. For example:
|
||||
To view the generated files, go to `build/docs/html`.
|
||||
Open the `index.html` file in your browser to see the documentation pages.
|
||||
|
||||
```sh
|
||||
mkdir build && cd build
|
||||
conan install .. --output-folder . --build missing --settings build_type=Release -o '&:tests=True' -o '&:docs=True'
|
||||
```
|
||||
|
||||
2. Once that has completed successfully, run the `cmake` command and add the `--target docs` option:
|
||||
|
||||
```sh
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release ..
|
||||
cmake --build . --parallel 8 --target docs
|
||||
```
|
||||
|
||||
3. Go to `build/docs/html` to view the generated files.
|
||||
|
||||
Open the `index.html` file in your browser to see the documentation pages.
|
||||
|
||||

|
||||

|
||||
|
||||
## Building Clio with Docker
|
||||
|
||||
@@ -171,12 +181,11 @@ It is also possible to build Clio using [Docker](https://www.docker.com/) if you
|
||||
```sh
|
||||
docker run -it ghcr.io/xrplf/clio-ci:384e79cd32f5f6c0ab9be3a1122ead41c5a7e67d
|
||||
git clone https://github.com/XRPLF/clio
|
||||
mkdir build && cd build
|
||||
conan install .. --output-folder . --build missing --settings build_type=Release -o '&:tests=True'
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release ..
|
||||
cmake --build . --parallel 8 # or without the number if you feel extra adventurous
|
||||
cd clio
|
||||
```
|
||||
|
||||
Follow the same steps in the [Building Clio](#building-clio) section. You can use `--profile:all gcc` or `--profile:all clang` with the `conan install` command to choose the desired compiler.
|
||||
|
||||
## Developing against `rippled` in standalone mode
|
||||
|
||||
If you wish to develop against a `rippled` instance running in standalone mode there are a few quirks of both Clio and `rippled` that you need to keep in mind. You must:
|
||||
@@ -229,10 +238,10 @@ Sometimes, during development, you need to build against a custom version of `li
|
||||
## Using `clang-tidy` for static analysis
|
||||
|
||||
Clang-tidy can be run by CMake when building the project.
|
||||
To achieve this, you just need to provide the option `-o '&:lint=True'` for the `conan install` command:
|
||||
To achieve this, you just need to provide the option `-Dlint=ON` when generating CMake files:
|
||||
|
||||
```sh
|
||||
conan install .. --output-folder . --build missing --settings build_type=Release -o '&:tests=True' -o '&:lint=True' --profile:all clang
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release -Dlint=ON ..
|
||||
```
|
||||
|
||||
By default CMake will try to find `clang-tidy` automatically in your system.
|
||||
|
||||
Reference in New Issue
Block a user