mirror of
https://github.com/Xahau/xahaud.git
synced 2025-11-17 00:55:49 +00:00
Compare commits
205 Commits
patch-payc
...
fix-online
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3e474882d6 | ||
|
|
6ca2c9a7fc | ||
|
|
05d9b9c1f2 | ||
|
|
8cb2feb816 | ||
|
|
529d77d4b7 | ||
|
|
1703574d50 | ||
|
|
23c7cd25a7 | ||
|
|
76b36fb308 | ||
|
|
be586db462 | ||
|
|
b01d78a25f | ||
|
|
a89c20ad5b | ||
|
|
dd2570e68a | ||
|
|
f6a9491230 | ||
|
|
48542b0e27 | ||
|
|
e4a6def5b5 | ||
|
|
1245611226 | ||
|
|
12a8194fdd | ||
|
|
688b66e1e3 | ||
|
|
7a790246fb | ||
|
|
1a3d2db8ef | ||
|
|
2fc912d54d | ||
|
|
849d447a20 | ||
|
|
ee27049687 | ||
|
|
60dec74baf | ||
|
|
9abea13649 | ||
|
|
810e15319c | ||
|
|
d593f3bef5 | ||
|
|
1233694b6c | ||
|
|
a1d42b7380 | ||
|
|
f6d2bf819d | ||
|
|
a5ea86fdfc | ||
|
|
615f56570a | ||
|
|
5e005cd6ee | ||
|
|
80a7197590 | ||
|
|
7b581443d1 | ||
|
|
5400f43359 | ||
|
|
8cf7d485ab | ||
|
|
372f25d09b | ||
|
|
401395a204 | ||
|
|
4221dcf568 | ||
|
|
989532702d | ||
|
|
f9cd2e0d21 | ||
|
|
59e334c099 | ||
|
|
9018596532 | ||
|
|
b827f0170d | ||
|
|
e4b7e8f0f2 | ||
|
|
1485078d91 | ||
|
|
6625d2be92 | ||
|
|
2fb5c92140 | ||
|
|
c4b5ae3787 | ||
|
|
d546d761ce | ||
|
|
e84a36867b | ||
|
|
0b675465b4 | ||
|
|
d088ad61a9 | ||
|
|
ef77b02d7f | ||
|
|
7385828983 | ||
|
|
88b01514c1 | ||
|
|
aeece15096 | ||
|
|
89cacb1258 | ||
|
|
8ccff44e8c | ||
|
|
420240a2ab | ||
|
|
230873f196 | ||
|
|
1fb1a99ea2 | ||
|
|
e0b63ac70e | ||
|
|
da8df63be3 | ||
|
|
317bd4bc6e | ||
|
|
2fd465bb3f | ||
|
|
fa71bda29c | ||
|
|
412593d7bc | ||
|
|
12d8342c34 | ||
|
|
d17f7151ab | ||
|
|
4466175231 | ||
|
|
621ca9c865 | ||
|
|
85a752235a | ||
|
|
d878fd4a6e | ||
|
|
532a471a35 | ||
|
|
e9468d8b4a | ||
|
|
9d54da3880 | ||
|
|
542172f0a1 | ||
|
|
e086724772 | ||
|
|
21863b05f3 | ||
|
|
61ac04aacc | ||
|
|
57a1329bff | ||
|
|
daf22b3b85 | ||
|
|
2b225977e2 | ||
|
|
58b22901cb | ||
|
|
8ba37a3138 | ||
|
|
8cffd3054d | ||
|
|
6b26045cbc | ||
|
|
08f13b7cfe | ||
|
|
766f5d7ee1 | ||
|
|
287c01ad04 | ||
|
|
4239124750 | ||
|
|
1e45d4120c | ||
|
|
9e446bcc85 | ||
|
|
376727d20c | ||
|
|
d921c87c88 | ||
|
|
7b94d3d99d | ||
|
|
79d83bd424 | ||
|
|
1a4d54f9d9 | ||
|
|
26cd629d28 | ||
|
|
2fb93f874b | ||
|
|
833df20fce | ||
|
|
5737c2b6e8 | ||
|
|
a15d0b2ecc | ||
|
|
18d76d3082 | ||
|
|
849a4435e0 | ||
|
|
247e9d98bf | ||
|
|
acd455f5df | ||
|
|
6636e3b6fd | ||
|
|
3c5f118b59 | ||
|
|
88308126cc | ||
|
|
497e52fcc6 | ||
|
|
a3852763e7 | ||
|
|
7cd8f0a03a | ||
|
|
d24c134612 | ||
|
|
cdac69a111 | ||
|
|
1500522427 | ||
|
|
75aba531d6 | ||
|
|
caa8b382d8 | ||
|
|
82e04073be | ||
|
|
e1b78f9682 | ||
|
|
901d1d4e8d | ||
|
|
aca5241515 | ||
|
|
780378c221 | ||
|
|
2dc5e670ac | ||
|
|
4dff5a5c8e | ||
|
|
f64e626a3f | ||
|
|
f21d3e1e97 | ||
|
|
858055c811 | ||
|
|
5d66f17574 | ||
|
|
00328cb782 | ||
|
|
fdf7ea4174 | ||
|
|
7877ed9704 | ||
|
|
17ccec9ac5 | ||
|
|
de522ac4ae | ||
|
|
74c83a9271 | ||
|
|
66ee96d456 | ||
|
|
b476aea55b | ||
|
|
4ad697069f | ||
|
|
97acfe9f97 | ||
|
|
475b6f7347 | ||
|
|
64a07e5539 | ||
|
|
c49b7a2301 | ||
|
|
ac694c7c90 | ||
|
|
3be6baded9 | ||
|
|
49798b1792 | ||
|
|
27f43ba9ee | ||
|
|
7881b7f69f | ||
|
|
d2c45bf560 | ||
|
|
c917977eb0 | ||
|
|
4cb93f943b | ||
|
|
5447c4010d | ||
|
|
b77b0e70e3 | ||
|
|
98833e4934 | ||
|
|
b74697ff9a | ||
|
|
ac1883bbf7 | ||
|
|
4ada3f85bb | ||
|
|
559b504c7d | ||
|
|
43cb255337 | ||
|
|
63bb1906ed | ||
|
|
ac6c102876 | ||
|
|
195904574c | ||
|
|
2a18ec563d | ||
|
|
91f9e424a3 | ||
|
|
c2e8bd2be1 | ||
|
|
4d2ec0004b | ||
|
|
b564fe3c92 | ||
|
|
04ceb5af9a | ||
|
|
7dee512991 | ||
|
|
70bd7c2ce7 | ||
|
|
1b9373e220 | ||
|
|
c3a0e1df44 | ||
|
|
c65ee9d7f9 | ||
|
|
090b64728e | ||
|
|
283ec19976 | ||
|
|
ee450926a7 | ||
|
|
9ae0a907f5 | ||
|
|
81b0bf8041 | ||
|
|
c54377eb7a | ||
|
|
1516900c4f | ||
|
|
ac5ff4ca32 | ||
|
|
e48e4db9e6 | ||
|
|
97cac67bba | ||
|
|
5c6a855ae3 | ||
|
|
5fcebdabc5 | ||
|
|
69d7d653be | ||
|
|
d5d29e319c | ||
|
|
1f052020cb | ||
|
|
263c6342cf | ||
|
|
fcd935cecf | ||
|
|
96cf8f089d | ||
|
|
adf30fb819 | ||
|
|
a2c41016b0 | ||
|
|
251a79e897 | ||
|
|
d734fe600b | ||
|
|
a6c86b5a9e | ||
|
|
dae172ba22 | ||
|
|
d716787378 | ||
|
|
7bfc60c6ad | ||
|
|
f341558735 | ||
|
|
9317562d8b | ||
|
|
3bf3010f50 | ||
|
|
b4022c35b3 | ||
|
|
428009c8ca |
@@ -1,5 +0,0 @@
|
|||||||
|
|
||||||
codecov:
|
|
||||||
ci:
|
|
||||||
- !appveyor
|
|
||||||
- travis
|
|
||||||
@@ -2,6 +2,6 @@
|
|||||||
*
|
*
|
||||||
|
|
||||||
# Allow files and directories
|
# Allow files and directories
|
||||||
!/build-inner.sh
|
!/build-core.sh
|
||||||
!/release-builder.sh
|
!/build-full.sh
|
||||||
|
!/release-builder.sh
|
||||||
12
.githooks/pre-commit
Executable file
12
.githooks/pre-commit
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Pre-commit hook that runs the suspicious patterns check on staged files
|
||||||
|
|
||||||
|
# Get the repository's root directory
|
||||||
|
repo_root=$(git rev-parse --show-toplevel)
|
||||||
|
|
||||||
|
# Run the suspicious patterns script in pre-commit mode
|
||||||
|
"$repo_root/suspicious_patterns.sh" --pre-commit
|
||||||
|
|
||||||
|
# Exit with the same code as the script
|
||||||
|
exit $?
|
||||||
4
.githooks/setup.sh
Normal file
4
.githooks/setup.sh
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Configuring git to use .githooks directory..."
|
||||||
|
git config core.hooksPath .githooks
|
||||||
31
.github/actions/xahau-configure-ccache/action.yml
vendored
Normal file
31
.github/actions/xahau-configure-ccache/action.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
name: 'Configure ccache'
|
||||||
|
description: 'Sets up ccache with consistent configuration'
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
max_size:
|
||||||
|
description: 'Maximum cache size'
|
||||||
|
required: false
|
||||||
|
default: '2G'
|
||||||
|
hash_dir:
|
||||||
|
description: 'Whether to include directory paths in hash'
|
||||||
|
required: false
|
||||||
|
default: 'true'
|
||||||
|
compiler_check:
|
||||||
|
description: 'How to check compiler for changes'
|
||||||
|
required: false
|
||||||
|
default: 'content'
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: 'composite'
|
||||||
|
steps:
|
||||||
|
- name: Configure ccache
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.ccache
|
||||||
|
export CONF_PATH="${CCACHE_CONFIGPATH:-${CCACHE_DIR:-$HOME/.ccache}/ccache.conf}"
|
||||||
|
mkdir -p $(dirname "$CONF_PATH")
|
||||||
|
echo "max_size = ${{ inputs.max_size }}" > "$CONF_PATH"
|
||||||
|
echo "hash_dir = ${{ inputs.hash_dir }}" >> "$CONF_PATH"
|
||||||
|
echo "compiler_check = ${{ inputs.compiler_check }}" >> "$CONF_PATH"
|
||||||
|
ccache -p # Print config for verification
|
||||||
|
ccache -z # Zero statistics before the build
|
||||||
107
.github/actions/xahau-ga-build/action.yml
vendored
Normal file
107
.github/actions/xahau-ga-build/action.yml
vendored
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
name: build
|
||||||
|
description: 'Builds the project with ccache integration'
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
generator:
|
||||||
|
description: 'CMake generator to use'
|
||||||
|
required: true
|
||||||
|
configuration:
|
||||||
|
description: 'Build configuration (Debug, Release, etc.)'
|
||||||
|
required: true
|
||||||
|
build_dir:
|
||||||
|
description: 'Directory to build in'
|
||||||
|
required: false
|
||||||
|
default: '.build'
|
||||||
|
cc:
|
||||||
|
description: 'C compiler to use'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
cxx:
|
||||||
|
description: 'C++ compiler to use'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
compiler-id:
|
||||||
|
description: 'Unique identifier for compiler/version combination used for cache keys'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
cache_version:
|
||||||
|
description: 'Cache version for invalidation'
|
||||||
|
required: false
|
||||||
|
default: '1'
|
||||||
|
ccache_enabled:
|
||||||
|
description: 'Whether to use ccache'
|
||||||
|
required: false
|
||||||
|
default: 'true'
|
||||||
|
main_branch:
|
||||||
|
description: 'Main branch name for restore keys'
|
||||||
|
required: false
|
||||||
|
default: 'dev'
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: 'composite'
|
||||||
|
steps:
|
||||||
|
- name: Generate safe branch name
|
||||||
|
if: inputs.ccache_enabled == 'true'
|
||||||
|
id: safe-branch
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
SAFE_BRANCH=$(echo "${{ github.ref_name }}" | tr -c 'a-zA-Z0-9_.-' '-')
|
||||||
|
echo "name=${SAFE_BRANCH}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Restore ccache directory
|
||||||
|
if: inputs.ccache_enabled == 'true'
|
||||||
|
id: ccache-restore
|
||||||
|
uses: actions/cache/restore@v4
|
||||||
|
with:
|
||||||
|
path: ~/.ccache
|
||||||
|
key: ${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.configuration }}-${{ steps.safe-branch.outputs.name }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.configuration }}-${{ inputs.main_branch }}
|
||||||
|
${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ inputs.configuration }}-
|
||||||
|
${{ runner.os }}-ccache-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-
|
||||||
|
|
||||||
|
- name: Configure project
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
mkdir -p ${{ inputs.build_dir }}
|
||||||
|
cd ${{ inputs.build_dir }}
|
||||||
|
|
||||||
|
# Set compiler environment variables if provided
|
||||||
|
if [ -n "${{ inputs.cc }}" ]; then
|
||||||
|
export CC="${{ inputs.cc }}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${{ inputs.cxx }}" ]; then
|
||||||
|
export CXX="${{ inputs.cxx }}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Configure ccache launcher args
|
||||||
|
CCACHE_ARGS=""
|
||||||
|
if [ "${{ inputs.ccache_enabled }}" = "true" ]; then
|
||||||
|
CCACHE_ARGS="-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run CMake configure
|
||||||
|
cmake .. \
|
||||||
|
-G "${{ inputs.generator }}" \
|
||||||
|
$CCACHE_ARGS \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=${{ inputs.configuration }}
|
||||||
|
|
||||||
|
- name: Build project
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
cd ${{ inputs.build_dir }}
|
||||||
|
cmake --build . --config ${{ inputs.configuration }} --parallel $(nproc)
|
||||||
|
|
||||||
|
- name: Show ccache statistics
|
||||||
|
if: inputs.ccache_enabled == 'true'
|
||||||
|
shell: bash
|
||||||
|
run: ccache -s
|
||||||
|
|
||||||
|
- name: Save ccache directory
|
||||||
|
if: inputs.ccache_enabled == 'true'
|
||||||
|
uses: actions/cache/save@v4
|
||||||
|
with:
|
||||||
|
path: ~/.ccache
|
||||||
|
key: ${{ steps.ccache-restore.outputs.cache-primary-key }}
|
||||||
85
.github/actions/xahau-ga-dependencies/action.yml
vendored
Normal file
85
.github/actions/xahau-ga-dependencies/action.yml
vendored
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
name: dependencies
|
||||||
|
description: 'Installs build dependencies with caching'
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
configuration:
|
||||||
|
description: 'Build configuration (Debug, Release, etc.)'
|
||||||
|
required: true
|
||||||
|
build_dir:
|
||||||
|
description: 'Directory to build dependencies in'
|
||||||
|
required: false
|
||||||
|
default: '.build'
|
||||||
|
compiler-id:
|
||||||
|
description: 'Unique identifier for compiler/version combination used for cache keys'
|
||||||
|
required: false
|
||||||
|
default: ''
|
||||||
|
cache_version:
|
||||||
|
description: 'Cache version for invalidation'
|
||||||
|
required: false
|
||||||
|
default: '1'
|
||||||
|
cache_enabled:
|
||||||
|
description: 'Whether to use caching'
|
||||||
|
required: false
|
||||||
|
default: 'true'
|
||||||
|
main_branch:
|
||||||
|
description: 'Main branch name for restore keys'
|
||||||
|
required: false
|
||||||
|
default: 'dev'
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
cache-hit:
|
||||||
|
description: 'Whether there was a cache hit'
|
||||||
|
value: ${{ steps.cache-restore-conan.outputs.cache-hit }}
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: 'composite'
|
||||||
|
steps:
|
||||||
|
- name: Generate safe branch name
|
||||||
|
if: inputs.cache_enabled == 'true'
|
||||||
|
id: safe-branch
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
SAFE_BRANCH=$(echo "${{ github.ref_name }}" | tr -c 'a-zA-Z0-9_.-' '-')
|
||||||
|
echo "name=${SAFE_BRANCH}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Restore Conan cache
|
||||||
|
if: inputs.cache_enabled == 'true'
|
||||||
|
id: cache-restore-conan
|
||||||
|
uses: actions/cache/restore@v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.conan
|
||||||
|
~/.conan2
|
||||||
|
key: ${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ hashFiles('**/conanfile.txt', '**/conanfile.py') }}-${{ inputs.configuration }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-${{ hashFiles('**/conanfile.txt', '**/conanfile.py') }}-
|
||||||
|
${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-
|
||||||
|
|
||||||
|
- name: Export custom recipes
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
conan export external/snappy snappy/1.1.10@xahaud/stable
|
||||||
|
conan export external/soci soci/4.0.3@xahaud/stable
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
# Create build directory
|
||||||
|
mkdir -p ${{ inputs.build_dir }}
|
||||||
|
cd ${{ inputs.build_dir }}
|
||||||
|
|
||||||
|
# Install dependencies using conan
|
||||||
|
conan install \
|
||||||
|
--output-folder . \
|
||||||
|
--build missing \
|
||||||
|
--settings build_type=${{ inputs.configuration }} \
|
||||||
|
..
|
||||||
|
|
||||||
|
- name: Save Conan cache
|
||||||
|
if: inputs.cache_enabled == 'true' && steps.cache-restore-conan.outputs.cache-hit != 'true'
|
||||||
|
uses: actions/cache/save@v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.conan
|
||||||
|
~/.conan2
|
||||||
|
key: ${{ steps.cache-restore-conan.outputs.cache-primary-key }}
|
||||||
23
.github/pull_request_template.md
vendored
23
.github/pull_request_template.md
vendored
@@ -33,10 +33,27 @@ Please check [x] relevant options, delete irrelevant ones.
|
|||||||
- [ ] New feature (non-breaking change which adds functionality)
|
- [ ] New feature (non-breaking change which adds functionality)
|
||||||
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
||||||
- [ ] Refactor (non-breaking change that only restructures code)
|
- [ ] Refactor (non-breaking change that only restructures code)
|
||||||
- [ ] Tests (You added tests for code that already exists, or your new feature included in this PR)
|
- [ ] Tests (you added tests for code that already exists, or your new feature included in this PR)
|
||||||
- [ ] Documentation Updates
|
- [ ] Documentation update
|
||||||
|
- [ ] Chore (no impact to binary, e.g. `.gitignore`, formatting, dropping support for older tooling)
|
||||||
- [ ] Release
|
- [ ] Release
|
||||||
|
|
||||||
|
### API Impact
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Please check [x] relevant options, delete irrelevant ones.
|
||||||
|
|
||||||
|
* If there is any impact to the public API methods (HTTP / WebSocket), please update https://github.com/xrplf/rippled/blob/develop/API-CHANGELOG.md
|
||||||
|
* Update API-CHANGELOG.md and add the change directly in this PR by pushing to your PR branch.
|
||||||
|
* libxrpl: See https://github.com/XRPLF/rippled/blob/develop/docs/build/depend.md
|
||||||
|
* Peer Protocol: See https://xrpl.org/peer-protocol.html
|
||||||
|
-->
|
||||||
|
|
||||||
|
- [ ] Public API: New feature (new methods and/or new fields)
|
||||||
|
- [ ] Public API: Breaking change (in general, breaking changes should only impact the next api_version)
|
||||||
|
- [ ] `libxrpl` change (any change that may affect `libxrpl` or dependents of `libxrpl`)
|
||||||
|
- [ ] Peer protocol change (must be backward compatible or bump the peer protocol version)
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
## Before / After
|
## Before / After
|
||||||
If relevant, use this section for an English description of the change at a technical level.
|
If relevant, use this section for an English description of the change at a technical level.
|
||||||
@@ -52,4 +69,4 @@ This section may not be needed if your change includes thoroughly commented unit
|
|||||||
<!--
|
<!--
|
||||||
## Future Tasks
|
## Future Tasks
|
||||||
For future tasks related to PR.
|
For future tasks related to PR.
|
||||||
-->
|
-->
|
||||||
110
.github/workflows/build-in-docker.yml
vendored
110
.github/workflows/build-in-docker.yml
vendored
@@ -2,34 +2,94 @@ name: Build using Docker
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ "dev", "test", "release" ]
|
branches: ["dev", "candidate", "release", "jshooks"]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ "dev", "release" ]
|
branches: ["dev", "candidate", "release", "jshooks"]
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
env:
|
||||||
|
DEBUG_BUILD_CONTAINERS_AFTER_CLEANUP: 1
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
builder:
|
checkout:
|
||||||
runs-on: [self-hosted, vanity]
|
runs-on: [self-hosted, vanity]
|
||||||
|
outputs:
|
||||||
|
checkout_path: ${{ steps.vars.outputs.checkout_path }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- name: Prepare checkout path
|
||||||
with:
|
id: vars
|
||||||
clean: false
|
run: |
|
||||||
- name: Build using Docker
|
SAFE_BRANCH=$(echo "${{ github.ref_name }}" | sed -e 's/[^a-zA-Z0-9._-]/-/g')
|
||||||
run: /bin/bash release-builder.sh
|
CHECKOUT_PATH="${SAFE_BRANCH}-${{ github.sha }}"
|
||||||
|
echo "checkout_path=${CHECKOUT_PATH}" >> "$GITHUB_OUTPUT"
|
||||||
unittests:
|
|
||||||
needs: builder
|
|
||||||
runs-on: [self-hosted, vanity]
|
|
||||||
steps:
|
|
||||||
- name: Unit tests
|
|
||||||
run: /bin/bash docker-unit-tests.sh
|
|
||||||
|
|
||||||
# publisher:
|
- uses: actions/checkout@v4
|
||||||
# needs: builder
|
with:
|
||||||
# runs-on: [self-hosted, vanity]
|
path: ${{ steps.vars.outputs.checkout_path }}
|
||||||
# steps:
|
clean: true
|
||||||
# - uses: actions/upload-artifact@v3
|
fetch-depth: 2 # Only get the last 2 commits, to avoid fetching all history
|
||||||
# with:
|
|
||||||
# name: build-${{ github.run_number }}
|
build:
|
||||||
# path: |
|
runs-on: [self-hosted, vanity]
|
||||||
# release-build/xahaud
|
needs: [checkout]
|
||||||
# release-build/release.info
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: ${{ needs.checkout.outputs.checkout_path }}
|
||||||
|
steps:
|
||||||
|
- name: Set Cleanup Script Path
|
||||||
|
run: |
|
||||||
|
echo "JOB_CLEANUP_SCRIPT=$(mktemp)" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Build using Docker
|
||||||
|
run: /bin/bash release-builder.sh
|
||||||
|
|
||||||
|
- name: Stop Container (Cleanup)
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
echo "Running cleanup script: $JOB_CLEANUP_SCRIPT"
|
||||||
|
/bin/bash -e -x "$JOB_CLEANUP_SCRIPT"
|
||||||
|
CLEANUP_EXIT_CODE=$?
|
||||||
|
|
||||||
|
if [[ "$CLEANUP_EXIT_CODE" -eq 0 ]]; then
|
||||||
|
echo "Cleanup script succeeded."
|
||||||
|
rm -f "$JOB_CLEANUP_SCRIPT"
|
||||||
|
echo "Cleanup script removed."
|
||||||
|
else
|
||||||
|
echo "⚠️ Cleanup script failed! Keeping for debugging: $JOB_CLEANUP_SCRIPT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${DEBUG_BUILD_CONTAINERS_AFTER_CLEANUP}" == "1" ]]; then
|
||||||
|
echo "🔍 Checking for leftover containers..."
|
||||||
|
BUILD_CONTAINERS=$(docker ps --format '{{.Names}}' | grep '^xahaud_cached_builder' || echo "")
|
||||||
|
|
||||||
|
if [[ -n "$BUILD_CONTAINERS" ]]; then
|
||||||
|
echo "⚠️ WARNING: Some build containers are still running"
|
||||||
|
echo "$BUILD_CONTAINERS"
|
||||||
|
else
|
||||||
|
echo "✅ No build containers found"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
tests:
|
||||||
|
runs-on: [self-hosted, vanity]
|
||||||
|
needs: [build, checkout]
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: ${{ needs.checkout.outputs.checkout_path }}
|
||||||
|
steps:
|
||||||
|
- name: Unit tests
|
||||||
|
run: /bin/bash docker-unit-tests.sh
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
runs-on: [self-hosted, vanity]
|
||||||
|
needs: [tests, checkout]
|
||||||
|
if: always()
|
||||||
|
steps:
|
||||||
|
- name: Cleanup workspace
|
||||||
|
run: |
|
||||||
|
CHECKOUT_PATH="${{ needs.checkout.outputs.checkout_path }}"
|
||||||
|
echo "Cleaning workspace for ${CHECKOUT_PATH}"
|
||||||
|
rm -rf "${{ github.workspace }}/${CHECKOUT_PATH}"
|
||||||
|
|||||||
37
.github/workflows/clang-format.yml
vendored
37
.github/workflows/clang-format.yml
vendored
@@ -4,21 +4,32 @@ on: [push, pull_request]
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check:
|
check:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
env:
|
env:
|
||||||
CLANG_VERSION: 10
|
CLANG_VERSION: 10
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- name: Install clang-format
|
# - name: Install clang-format
|
||||||
|
# run: |
|
||||||
|
# codename=$( lsb_release --codename --short )
|
||||||
|
# sudo tee /etc/apt/sources.list.d/llvm.list >/dev/null <<EOF
|
||||||
|
# deb http://apt.llvm.org/${codename}/ llvm-toolchain-${codename}-${CLANG_VERSION} main
|
||||||
|
# deb-src http://apt.llvm.org/${codename}/ llvm-toolchain-${codename}-${CLANG_VERSION} main
|
||||||
|
# EOF
|
||||||
|
# wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add
|
||||||
|
# sudo apt-get update -y
|
||||||
|
# sudo apt-get install -y clang-format-${CLANG_VERSION}
|
||||||
|
|
||||||
|
# Temporary fix until this commit is merged
|
||||||
|
# https://github.com/XRPLF/rippled/commit/552377c76f55b403a1c876df873a23d780fcc81c
|
||||||
|
- name: Download and install clang-format
|
||||||
run: |
|
run: |
|
||||||
codename=$( lsb_release --codename --short )
|
sudo apt-get update -y
|
||||||
sudo tee /etc/apt/sources.list.d/llvm.list >/dev/null <<EOF
|
sudo apt-get install -y libtinfo5
|
||||||
deb http://apt.llvm.org/${codename}/ llvm-toolchain-${codename}-${CLANG_VERSION} main
|
curl -LO https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.1/clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz
|
||||||
deb-src http://apt.llvm.org/${codename}/ llvm-toolchain-${codename}-${CLANG_VERSION} main
|
tar -xf clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz
|
||||||
EOF
|
sudo mv clang+llvm-10.0.1-x86_64-linux-gnu-ubuntu-16.04 /opt/clang-10
|
||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add
|
sudo ln -s /opt/clang-10/bin/clang-format /usr/local/bin/clang-format-10
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install clang-format-${CLANG_VERSION}
|
|
||||||
- name: Format src/ripple
|
- name: Format src/ripple
|
||||||
run: find src/ripple -type f \( -name '*.cpp' -o -name '*.h' -o -name '*.ipp' \) -print0 | xargs -0 clang-format-${CLANG_VERSION} -i
|
run: find src/ripple -type f \( -name '*.cpp' -o -name '*.h' -o -name '*.ipp' \) -print0 | xargs -0 clang-format-${CLANG_VERSION} -i
|
||||||
- name: Format src/test
|
- name: Format src/test
|
||||||
@@ -30,7 +41,7 @@ jobs:
|
|||||||
git diff --exit-code | tee "clang-format.patch"
|
git diff --exit-code | tee "clang-format.patch"
|
||||||
- name: Upload patch
|
- name: Upload patch
|
||||||
if: failure() && steps.assert.outcome == 'failure'
|
if: failure() && steps.assert.outcome == 'failure'
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v4
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
with:
|
with:
|
||||||
name: clang-format.patch
|
name: clang-format.patch
|
||||||
@@ -52,7 +63,7 @@ jobs:
|
|||||||
To fix it, you can do one of two things:
|
To fix it, you can do one of two things:
|
||||||
1. Download and apply the patch generated as an artifact of this
|
1. Download and apply the patch generated as an artifact of this
|
||||||
job to your repo, commit, and push.
|
job to your repo, commit, and push.
|
||||||
2. Run 'git-clang-format --extensions c,cpp,h,cxx,ipp develop'
|
2. Run 'git-clang-format --extensions c,cpp,h,cxx,ipp dev'
|
||||||
in your repo, commit, and push.
|
in your repo, commit, and push.
|
||||||
run: |
|
run: |
|
||||||
echo "${PREAMBLE}"
|
echo "${PREAMBLE}"
|
||||||
|
|||||||
25
.github/workflows/doxygen.yml
vendored
25
.github/workflows/doxygen.yml
vendored
@@ -1,25 +0,0 @@
|
|||||||
name: Build and publish Doxygen documentation
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- develop
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
job:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
container:
|
|
||||||
image: docker://rippleci/rippled-ci-builder:2944b78d22db
|
|
||||||
steps:
|
|
||||||
- name: checkout
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: build
|
|
||||||
run: |
|
|
||||||
mkdir build
|
|
||||||
cd build
|
|
||||||
cmake -DBoost_NO_BOOST_CMAKE=ON ..
|
|
||||||
cmake --build . --target docs --parallel $(nproc)
|
|
||||||
- name: publish
|
|
||||||
uses: peaceiris/actions-gh-pages@v3
|
|
||||||
with:
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
publish_dir: build/docs/html
|
|
||||||
4
.github/workflows/levelization.yml
vendored
4
.github/workflows/levelization.yml
vendored
@@ -8,7 +8,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
CLANG_VERSION: 10
|
CLANG_VERSION: 10
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- name: Check levelization
|
- name: Check levelization
|
||||||
run: Builds/levelization/levelization.sh
|
run: Builds/levelization/levelization.sh
|
||||||
- name: Check for differences
|
- name: Check for differences
|
||||||
@@ -18,7 +18,7 @@ jobs:
|
|||||||
git diff --exit-code | tee "levelization.patch"
|
git diff --exit-code | tee "levelization.patch"
|
||||||
- name: Upload patch
|
- name: Upload patch
|
||||||
if: failure() && steps.assert.outcome == 'failure'
|
if: failure() && steps.assert.outcome == 'failure'
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v4
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
with:
|
with:
|
||||||
name: levelization.patch
|
name: levelization.patch
|
||||||
|
|||||||
116
.github/workflows/xahau-ga-macos.yml
vendored
Normal file
116
.github/workflows/xahau-ga-macos.yml
vendored
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
name: MacOS - GA Runner
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ["dev", "candidate", "release"]
|
||||||
|
pull_request:
|
||||||
|
branches: ["dev", "candidate", "release"]
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
generator:
|
||||||
|
- Ninja
|
||||||
|
configuration:
|
||||||
|
- Debug
|
||||||
|
runs-on: macos-15
|
||||||
|
env:
|
||||||
|
build_dir: .build
|
||||||
|
# Bump this number to invalidate all caches globally.
|
||||||
|
CACHE_VERSION: 1
|
||||||
|
MAIN_BRANCH_NAME: dev
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install Conan
|
||||||
|
run: |
|
||||||
|
brew install conan@1
|
||||||
|
# Add Conan 1 to the PATH for this job
|
||||||
|
echo "$(brew --prefix conan@1)/bin" >> $GITHUB_PATH
|
||||||
|
|
||||||
|
- name: Install Coreutils
|
||||||
|
run: |
|
||||||
|
brew install coreutils
|
||||||
|
echo "Num proc: $(nproc)"
|
||||||
|
|
||||||
|
- name: Install Ninja
|
||||||
|
if: matrix.generator == 'Ninja'
|
||||||
|
run: brew install ninja
|
||||||
|
|
||||||
|
- name: Install Python
|
||||||
|
run: |
|
||||||
|
if which python3 > /dev/null 2>&1; then
|
||||||
|
echo "Python 3 executable exists"
|
||||||
|
python3 --version
|
||||||
|
else
|
||||||
|
brew install python@3.12
|
||||||
|
fi
|
||||||
|
# Create 'python' symlink if it doesn't exist (for tools expecting 'python')
|
||||||
|
if ! which python > /dev/null 2>&1; then
|
||||||
|
sudo ln -sf $(which python3) /usr/local/bin/python
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Install CMake
|
||||||
|
run: |
|
||||||
|
if which cmake > /dev/null 2>&1; then
|
||||||
|
echo "cmake executable exists"
|
||||||
|
cmake --version
|
||||||
|
else
|
||||||
|
brew install cmake
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Install ccache
|
||||||
|
run: brew install ccache
|
||||||
|
|
||||||
|
- name: Configure ccache
|
||||||
|
uses: ./.github/actions/xahau-configure-ccache
|
||||||
|
with:
|
||||||
|
max_size: 2G
|
||||||
|
hash_dir: true
|
||||||
|
compiler_check: content
|
||||||
|
|
||||||
|
- name: Check environment
|
||||||
|
run: |
|
||||||
|
echo "PATH:"
|
||||||
|
echo "${PATH}" | tr ':' '\n'
|
||||||
|
which python && python --version || echo "Python not found"
|
||||||
|
which conan && conan --version || echo "Conan not found"
|
||||||
|
which cmake && cmake --version || echo "CMake not found"
|
||||||
|
clang --version
|
||||||
|
ccache --version
|
||||||
|
echo "---- Full Environment ----"
|
||||||
|
env
|
||||||
|
|
||||||
|
- name: Configure Conan
|
||||||
|
run: |
|
||||||
|
conan profile new default --detect || true # Ignore error if profile exists
|
||||||
|
conan profile update settings.compiler.cppstd=20 default
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
uses: ./.github/actions/xahau-ga-dependencies
|
||||||
|
with:
|
||||||
|
configuration: ${{ matrix.configuration }}
|
||||||
|
build_dir: ${{ env.build_dir }}
|
||||||
|
compiler-id: clang
|
||||||
|
cache_version: ${{ env.CACHE_VERSION }}
|
||||||
|
main_branch: ${{ env.MAIN_BRANCH_NAME }}
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
uses: ./.github/actions/xahau-ga-build
|
||||||
|
with:
|
||||||
|
generator: ${{ matrix.generator }}
|
||||||
|
configuration: ${{ matrix.configuration }}
|
||||||
|
build_dir: ${{ env.build_dir }}
|
||||||
|
compiler-id: clang
|
||||||
|
cache_version: ${{ env.CACHE_VERSION }}
|
||||||
|
main_branch: ${{ env.MAIN_BRANCH_NAME }}
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: |
|
||||||
|
${{ env.build_dir }}/rippled --unittest --unittest-jobs $(nproc)
|
||||||
120
.github/workflows/xahau-ga-nix.yml
vendored
Normal file
120
.github/workflows/xahau-ga-nix.yml
vendored
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
name: Nix - GA Runner
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ["dev", "candidate", "release"]
|
||||||
|
pull_request:
|
||||||
|
branches: ["dev", "candidate", "release"]
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-job:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
artifact_name: ${{ steps.set-artifact-name.outputs.artifact_name }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
compiler: [gcc]
|
||||||
|
configuration: [Debug]
|
||||||
|
include:
|
||||||
|
- compiler: gcc
|
||||||
|
cc: gcc-13
|
||||||
|
cxx: g++-13
|
||||||
|
compiler_id: gcc-13
|
||||||
|
compiler_version: 13
|
||||||
|
env:
|
||||||
|
build_dir: .build
|
||||||
|
# Bump this number to invalidate all caches globally.
|
||||||
|
CACHE_VERSION: 2
|
||||||
|
MAIN_BRANCH_NAME: dev
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install build dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y ninja-build ${{ matrix.cc }} ${{ matrix.cxx }} ccache
|
||||||
|
# Install specific Conan version needed
|
||||||
|
pip install --upgrade "conan<2"
|
||||||
|
|
||||||
|
- name: Configure ccache
|
||||||
|
uses: ./.github/actions/xahau-configure-ccache
|
||||||
|
with:
|
||||||
|
max_size: 2G
|
||||||
|
hash_dir: true
|
||||||
|
compiler_check: content
|
||||||
|
|
||||||
|
- name: Configure Conan
|
||||||
|
run: |
|
||||||
|
conan profile new default --detect || true # Ignore error if profile exists
|
||||||
|
conan profile update settings.compiler.cppstd=20 default
|
||||||
|
conan profile update settings.compiler=${{ matrix.compiler }} default
|
||||||
|
conan profile update settings.compiler.libcxx=libstdc++11 default
|
||||||
|
conan profile update env.CC=/usr/bin/${{ matrix.cc }} default
|
||||||
|
conan profile update env.CXX=/usr/bin/${{ matrix.cxx }} default
|
||||||
|
conan profile update conf.tools.build:compiler_executables='{"c": "/usr/bin/${{ matrix.cc }}", "cpp": "/usr/bin/${{ matrix.cxx }}"}' default
|
||||||
|
|
||||||
|
# Set compiler version from matrix
|
||||||
|
conan profile update settings.compiler.version=${{ matrix.compiler_version }} default
|
||||||
|
# Display profile for verification
|
||||||
|
conan profile show default
|
||||||
|
|
||||||
|
- name: Check environment
|
||||||
|
run: |
|
||||||
|
echo "PATH:"
|
||||||
|
echo "${PATH}" | tr ':' '\n'
|
||||||
|
which conan && conan --version || echo "Conan not found"
|
||||||
|
which cmake && cmake --version || echo "CMake not found"
|
||||||
|
which ${{ matrix.cc }} && ${{ matrix.cc }} --version || echo "${{ matrix.cc }} not found"
|
||||||
|
which ${{ matrix.cxx }} && ${{ matrix.cxx }} --version || echo "${{ matrix.cxx }} not found"
|
||||||
|
which ccache && ccache --version || echo "ccache not found"
|
||||||
|
echo "---- Full Environment ----"
|
||||||
|
env
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
uses: ./.github/actions/xahau-ga-dependencies
|
||||||
|
with:
|
||||||
|
configuration: ${{ matrix.configuration }}
|
||||||
|
build_dir: ${{ env.build_dir }}
|
||||||
|
compiler-id: ${{ matrix.compiler_id }}
|
||||||
|
cache_version: ${{ env.CACHE_VERSION }}
|
||||||
|
main_branch: ${{ env.MAIN_BRANCH_NAME }}
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
uses: ./.github/actions/xahau-ga-build
|
||||||
|
with:
|
||||||
|
generator: Ninja
|
||||||
|
configuration: ${{ matrix.configuration }}
|
||||||
|
build_dir: ${{ env.build_dir }}
|
||||||
|
cc: ${{ matrix.cc }}
|
||||||
|
cxx: ${{ matrix.cxx }}
|
||||||
|
compiler-id: ${{ matrix.compiler_id }}
|
||||||
|
cache_version: ${{ env.CACHE_VERSION }}
|
||||||
|
main_branch: ${{ env.MAIN_BRANCH_NAME }}
|
||||||
|
|
||||||
|
- name: Set artifact name
|
||||||
|
id: set-artifact-name
|
||||||
|
run: |
|
||||||
|
ARTIFACT_NAME="build-output-nix-${{ github.run_id }}-${{ matrix.compiler }}-${{ matrix.configuration }}"
|
||||||
|
echo "artifact_name=${ARTIFACT_NAME}" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "Using artifact name: ${ARTIFACT_NAME}"
|
||||||
|
|
||||||
|
- name: Debug build directory
|
||||||
|
run: |
|
||||||
|
echo "Checking build directory contents: ${{ env.build_dir }}"
|
||||||
|
ls -la ${{ env.build_dir }} || echo "Build directory not found or empty"
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: |
|
||||||
|
# Ensure the binary exists before trying to run
|
||||||
|
if [ -f "${{ env.build_dir }}/rippled" ]; then
|
||||||
|
${{ env.build_dir }}/rippled --unittest --unittest-jobs $(nproc)
|
||||||
|
else
|
||||||
|
echo "Error: rippled executable not found in ${{ env.build_dir }}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -24,6 +24,11 @@ bin/project-cache.jam
|
|||||||
|
|
||||||
build/docker
|
build/docker
|
||||||
|
|
||||||
|
# Ignore release builder files
|
||||||
|
.env
|
||||||
|
release-build
|
||||||
|
cmake-*.tar.gz
|
||||||
|
|
||||||
# Ignore object files.
|
# Ignore object files.
|
||||||
*.o
|
*.o
|
||||||
build
|
build
|
||||||
@@ -114,3 +119,5 @@ pkg_out
|
|||||||
pkg
|
pkg
|
||||||
CMakeUserPresets.json
|
CMakeUserPresets.json
|
||||||
bld.rippled/
|
bld.rippled/
|
||||||
|
|
||||||
|
generated
|
||||||
|
|||||||
169
.gitlab-ci.yml
169
.gitlab-ci.yml
@@ -1,169 +0,0 @@
|
|||||||
# I don't know what the minimum size is, but we cannot build on t3.micro.
|
|
||||||
|
|
||||||
# TODO: Factor common builds between different tests.
|
|
||||||
|
|
||||||
# The parameters for our job matrix:
|
|
||||||
#
|
|
||||||
# 1. Generator (Make, Ninja, MSBuild)
|
|
||||||
# 2. Compiler (GCC, Clang, MSVC)
|
|
||||||
# 3. Build type (Debug, Release)
|
|
||||||
# 4. Definitions (-Dunity=OFF, -Dassert=ON, ...)
|
|
||||||
|
|
||||||
|
|
||||||
.job_linux_build_test:
|
|
||||||
only:
|
|
||||||
variables:
|
|
||||||
- $CI_PROJECT_URL =~ /^https?:\/\/gitlab.com\//
|
|
||||||
stage: build
|
|
||||||
tags:
|
|
||||||
- linux
|
|
||||||
- c5.2xlarge
|
|
||||||
image: thejohnfreeman/rippled-build-ubuntu:4b73694e07f0
|
|
||||||
script:
|
|
||||||
- bin/ci/build.sh
|
|
||||||
- bin/ci/test.sh
|
|
||||||
cache:
|
|
||||||
# Use a different key for each unique combination of (generator, compiler,
|
|
||||||
# build type). Caches are stored as `.zip` files; they are not merged.
|
|
||||||
# Generate a new key whenever you want to bust the cache, e.g. when the
|
|
||||||
# dependency versions have been bumped.
|
|
||||||
# By default, jobs pull the cache. Only a few specially chosen jobs update
|
|
||||||
# the cache (with policy `pull-push`); one for each unique combination of
|
|
||||||
# (generator, compiler, build type).
|
|
||||||
policy: pull
|
|
||||||
paths:
|
|
||||||
- .nih_c/
|
|
||||||
|
|
||||||
'build+test Make GCC Debug':
|
|
||||||
extends: .job_linux_build_test
|
|
||||||
variables:
|
|
||||||
GENERATOR: Unix Makefiles
|
|
||||||
COMPILER: gcc
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
cache:
|
|
||||||
key: 62ada41c-fc9e-4949-9533-736d4d6512b6
|
|
||||||
policy: pull-push
|
|
||||||
|
|
||||||
'build+test Ninja GCC Debug':
|
|
||||||
extends: .job_linux_build_test
|
|
||||||
variables:
|
|
||||||
GENERATOR: Ninja
|
|
||||||
COMPILER: gcc
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
cache:
|
|
||||||
key: 1665d3eb-6233-4eef-9f57-172636899faa
|
|
||||||
policy: pull-push
|
|
||||||
|
|
||||||
'build+test Ninja GCC Debug -Dstatic=OFF':
|
|
||||||
extends: .job_linux_build_test
|
|
||||||
variables:
|
|
||||||
GENERATOR: Ninja
|
|
||||||
COMPILER: gcc
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
CMAKE_ARGS: '-Dstatic=OFF'
|
|
||||||
cache:
|
|
||||||
key: 1665d3eb-6233-4eef-9f57-172636899faa
|
|
||||||
|
|
||||||
'build+test Ninja GCC Debug -Dstatic=OFF -DBUILD_SHARED_LIBS=ON':
|
|
||||||
extends: .job_linux_build_test
|
|
||||||
variables:
|
|
||||||
GENERATOR: Ninja
|
|
||||||
COMPILER: gcc
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
CMAKE_ARGS: '-Dstatic=OFF -DBUILD_SHARED_LIBS=ON'
|
|
||||||
cache:
|
|
||||||
key: 1665d3eb-6233-4eef-9f57-172636899faa
|
|
||||||
|
|
||||||
'build+test Ninja GCC Debug -Dunity=OFF':
|
|
||||||
extends: .job_linux_build_test
|
|
||||||
variables:
|
|
||||||
GENERATOR: Ninja
|
|
||||||
COMPILER: gcc
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
CMAKE_ARGS: '-Dunity=OFF'
|
|
||||||
cache:
|
|
||||||
key: 1665d3eb-6233-4eef-9f57-172636899faa
|
|
||||||
|
|
||||||
'build+test Ninja GCC Release -Dassert=ON':
|
|
||||||
extends: .job_linux_build_test
|
|
||||||
variables:
|
|
||||||
GENERATOR: Ninja
|
|
||||||
COMPILER: gcc
|
|
||||||
BUILD_TYPE: Release
|
|
||||||
CMAKE_ARGS: '-Dassert=ON'
|
|
||||||
cache:
|
|
||||||
key: c45ec125-9625-4c19-acf7-4e889d5f90bd
|
|
||||||
policy: pull-push
|
|
||||||
|
|
||||||
'build+test(manual) Ninja GCC Release -Dassert=ON':
|
|
||||||
extends: .job_linux_build_test
|
|
||||||
variables:
|
|
||||||
GENERATOR: Ninja
|
|
||||||
COMPILER: gcc
|
|
||||||
BUILD_TYPE: Release
|
|
||||||
CMAKE_ARGS: '-Dassert=ON'
|
|
||||||
MANUAL_TEST: 'true'
|
|
||||||
cache:
|
|
||||||
key: c45ec125-9625-4c19-acf7-4e889d5f90bd
|
|
||||||
|
|
||||||
'build+test Make clang Debug':
|
|
||||||
extends: .job_linux_build_test
|
|
||||||
variables:
|
|
||||||
GENERATOR: Unix Makefiles
|
|
||||||
COMPILER: clang
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
cache:
|
|
||||||
key: bf578dc2-5277-4580-8de5-6b9523118b19
|
|
||||||
policy: pull-push
|
|
||||||
|
|
||||||
'build+test Ninja clang Debug':
|
|
||||||
extends: .job_linux_build_test
|
|
||||||
variables:
|
|
||||||
GENERATOR: Ninja
|
|
||||||
COMPILER: clang
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
cache:
|
|
||||||
key: 762514c5-3d4c-4c7c-8da2-2df9d8839cbe
|
|
||||||
policy: pull-push
|
|
||||||
|
|
||||||
'build+test Ninja clang Debug -Dunity=OFF':
|
|
||||||
extends: .job_linux_build_test
|
|
||||||
variables:
|
|
||||||
GENERATOR: Ninja
|
|
||||||
COMPILER: clang
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
CMAKE_ARGS: '-Dunity=OFF'
|
|
||||||
cache:
|
|
||||||
key: 762514c5-3d4c-4c7c-8da2-2df9d8839cbe
|
|
||||||
|
|
||||||
'build+test Ninja clang Debug -Dunity=OFF -Dsan=address':
|
|
||||||
extends: .job_linux_build_test
|
|
||||||
variables:
|
|
||||||
GENERATOR: Ninja
|
|
||||||
COMPILER: clang
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
CMAKE_ARGS: '-Dunity=OFF -Dsan=address'
|
|
||||||
CONCURRENT_TESTS: 1
|
|
||||||
cache:
|
|
||||||
key: 762514c5-3d4c-4c7c-8da2-2df9d8839cbe
|
|
||||||
|
|
||||||
'build+test Ninja clang Debug -Dunity=OFF -Dsan=undefined':
|
|
||||||
extends: .job_linux_build_test
|
|
||||||
variables:
|
|
||||||
GENERATOR: Ninja
|
|
||||||
COMPILER: clang
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
CMAKE_ARGS: '-Dunity=OFF -Dsan=undefined'
|
|
||||||
cache:
|
|
||||||
key: 762514c5-3d4c-4c7c-8da2-2df9d8839cbe
|
|
||||||
|
|
||||||
'build+test Ninja clang Release -Dassert=ON':
|
|
||||||
extends: .job_linux_build_test
|
|
||||||
variables:
|
|
||||||
GENERATOR: Ninja
|
|
||||||
COMPILER: clang
|
|
||||||
BUILD_TYPE: Release
|
|
||||||
CMAKE_ARGS: '-Dassert=ON'
|
|
||||||
cache:
|
|
||||||
key: 7751be37-2358-4f08-b1d0-7e72e0ad266d
|
|
||||||
policy: pull-push
|
|
||||||
6
.pre-commit-config.yaml
Normal file
6
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# .pre-commit-config.yaml
|
||||||
|
repos:
|
||||||
|
- repo: https://github.com/pre-commit/mirrors-clang-format
|
||||||
|
rev: v10.0.1
|
||||||
|
hooks:
|
||||||
|
- id: clang-format
|
||||||
460
.travis.yml
460
.travis.yml
@@ -1,460 +0,0 @@
|
|||||||
# There is a known issue where Travis will have trouble fetching the cache,
|
|
||||||
# particularly on non-linux builds. Try restarting the individual build
|
|
||||||
# (probably will not be necessary in the "windep" stages) if the end of the
|
|
||||||
# log looks like:
|
|
||||||
#
|
|
||||||
#---------------------------------------
|
|
||||||
# attempting to download cache archive
|
|
||||||
# fetching travisorder/cache--windows-1809-containers-f2bf1c76c7fb4095c897a4999bd7c9b3fb830414dfe91f33d665443b52416d39--compiler-gpp.tgz
|
|
||||||
# found cache
|
|
||||||
# adding C:/Users/travis/_cache to cache
|
|
||||||
# creating directory C:/Users/travis/_cache
|
|
||||||
# No output has been received in the last 10m0s, this potentially indicates a stalled build or something wrong with the build itself.
|
|
||||||
# Check the details on how to adjust your build configuration on: https://docs.travis-ci.com/user/common-build-problems/#build-times-out-because-no-output-was-received
|
|
||||||
# The build has been terminated
|
|
||||||
#---------------------------------------
|
|
||||||
|
|
||||||
language: cpp
|
|
||||||
dist: bionic
|
|
||||||
|
|
||||||
services:
|
|
||||||
- docker
|
|
||||||
|
|
||||||
stages:
|
|
||||||
- windep-vcpkg
|
|
||||||
- windep-boost
|
|
||||||
- build
|
|
||||||
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- DOCKER_IMAGE="rippleci/rippled-ci-builder:2020-01-08"
|
|
||||||
- CMAKE_EXTRA_ARGS="-Dwerr=ON -Dwextra=ON"
|
|
||||||
- NINJA_BUILD=true
|
|
||||||
# change this if we get more VM capacity
|
|
||||||
- MAX_TIME_MIN=80
|
|
||||||
- CACHE_DIR=${TRAVIS_HOME}/_cache
|
|
||||||
- NIH_CACHE_ROOT=${CACHE_DIR}/nih_c
|
|
||||||
- PARALLEL_TESTS=true
|
|
||||||
# this is NOT used by linux container based builds (which already have boost installed)
|
|
||||||
- BOOST_URL='https://boostorg.jfrog.io/artifactory/main/release/1.75.0/source/boost_1_75_0.tar.gz'
|
|
||||||
# Alternate dowload location
|
|
||||||
- BOOST_URL2='https://downloads.sourceforge.net/project/boost/boost/1.75.0/boost_1_75_0.tar.bz2?r=&ts=1594393912&use_mirror=newcontinuum'
|
|
||||||
# Travis downloader doesn't seem to have updated certs. Using this option
|
|
||||||
# introduces obvious security risks, but they're Travis's risks.
|
|
||||||
# Note that this option is only used if the "normal" build fails.
|
|
||||||
- BOOST_WGET_OPTIONS='--no-check-certificate'
|
|
||||||
- VCPKG_DIR=${CACHE_DIR}/vcpkg
|
|
||||||
- USE_CCACHE=true
|
|
||||||
- CCACHE_BASEDIR=${TRAVIS_HOME}"
|
|
||||||
- CCACHE_NOHASHDIR=true
|
|
||||||
- CCACHE_DIR=${CACHE_DIR}/ccache
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- export NUM_PROCESSORS=$(nproc)
|
|
||||||
- echo "NUM PROC is ${NUM_PROCESSORS}"
|
|
||||||
- if [ "$(uname)" = "Linux" ] ; then docker pull ${DOCKER_IMAGE}; fi
|
|
||||||
- if [ "${MATRIX_EVAL}" != "" ] ; then eval "${MATRIX_EVAL}"; fi
|
|
||||||
- if [ "${CMAKE_ADD}" != "" ] ; then export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} ${CMAKE_ADD}"; fi
|
|
||||||
- bin/ci/ubuntu/travis-cache-start.sh
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
fast_finish: true
|
|
||||||
allow_failures:
|
|
||||||
# TODO these need more investigation
|
|
||||||
#
|
|
||||||
# there are a number of UBs caught currently that need triage
|
|
||||||
- name: ubsan, clang-8
|
|
||||||
# this one often runs out of memory:
|
|
||||||
- name: manual tests, gcc-8, release
|
|
||||||
# The Windows build may fail if any of the dependencies fail, but
|
|
||||||
# allow the rest of the builds to continue. They may succeed if the
|
|
||||||
# dependency is already cached. These do not need to be retried if
|
|
||||||
# _any_ of the Windows builds succeed.
|
|
||||||
- stage: windep-vcpkg
|
|
||||||
- stage: windep-boost
|
|
||||||
|
|
||||||
# https://docs.travis-ci.com/user/build-config-yaml#usage-of-yaml-anchors-and-aliases
|
|
||||||
include:
|
|
||||||
# debug builds
|
|
||||||
- &linux
|
|
||||||
stage: build
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/
|
|
||||||
compiler: gcc-8
|
|
||||||
name: gcc-8, debug
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
script:
|
|
||||||
- sudo chmod -R a+rw ${CACHE_DIR}
|
|
||||||
- ccache -s
|
|
||||||
- travis_wait ${MAX_TIME_MIN} bin/ci/ubuntu/build-in-docker.sh
|
|
||||||
- ccache -s
|
|
||||||
- <<: *linux
|
|
||||||
compiler: clang-8
|
|
||||||
name: clang-8, debug
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- <<: *linux
|
|
||||||
compiler: clang-8
|
|
||||||
name: reporting, clang-8, debug
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- CMAKE_ADD="-Dreporting=ON"
|
|
||||||
# coverage builds
|
|
||||||
- <<: *linux
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_cov/
|
|
||||||
compiler: gcc-8
|
|
||||||
name: coverage, gcc-8
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- CMAKE_ADD="-Dcoverage=ON"
|
|
||||||
- TARGET=coverage_report
|
|
||||||
- SKIP_TESTS=true
|
|
||||||
- <<: *linux
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_cov/
|
|
||||||
compiler: clang-8
|
|
||||||
name: coverage, clang-8
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- CMAKE_ADD="-Dcoverage=ON"
|
|
||||||
- TARGET=coverage_report
|
|
||||||
- SKIP_TESTS=true
|
|
||||||
# test-free builds
|
|
||||||
- <<: *linux
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/
|
|
||||||
compiler: gcc-8
|
|
||||||
name: no-tests-unity, gcc-8
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- CMAKE_ADD="-Dtests=OFF"
|
|
||||||
- SKIP_TESTS=true
|
|
||||||
- <<: *linux
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/
|
|
||||||
compiler: clang-8
|
|
||||||
name: no-tests-non-unity, clang-8
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- CMAKE_ADD="-Dtests=OFF -Dunity=OFF"
|
|
||||||
- SKIP_TESTS=true
|
|
||||||
# nounity
|
|
||||||
- <<: *linux
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_nounity/
|
|
||||||
compiler: gcc-8
|
|
||||||
name: non-unity, gcc-8
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- CMAKE_ADD="-Dunity=OFF"
|
|
||||||
- <<: *linux
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_nounity/
|
|
||||||
compiler: clang-8
|
|
||||||
name: non-unity, clang-8
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- CMAKE_ADD="-Dunity=OFF"
|
|
||||||
# manual tests
|
|
||||||
- <<: *linux
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_man/
|
|
||||||
compiler: gcc-8
|
|
||||||
name: manual tests, gcc-8, debug
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- MANUAL_TESTS=true
|
|
||||||
# manual tests
|
|
||||||
- <<: *linux
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_man/
|
|
||||||
compiler: gcc-8
|
|
||||||
name: manual tests, gcc-8, release
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
||||||
- BUILD_TYPE=Release
|
|
||||||
- CMAKE_ADD="-Dassert=ON -Dunity=OFF"
|
|
||||||
- MANUAL_TESTS=true
|
|
||||||
# release builds
|
|
||||||
- <<: *linux
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_release/
|
|
||||||
compiler: gcc-8
|
|
||||||
name: gcc-8, release
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
||||||
- BUILD_TYPE=Release
|
|
||||||
- CMAKE_ADD="-Dassert=ON -Dunity=OFF"
|
|
||||||
- <<: *linux
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_release/
|
|
||||||
compiler: clang-8
|
|
||||||
name: clang-8, release
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
||||||
- BUILD_TYPE=Release
|
|
||||||
- CMAKE_ADD="-Dassert=ON"
|
|
||||||
# asan
|
|
||||||
- <<: *linux
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_san/
|
|
||||||
compiler: clang-8
|
|
||||||
name: asan, clang-8
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
||||||
- BUILD_TYPE=Release
|
|
||||||
- CMAKE_ADD="-Dsan=address"
|
|
||||||
- ASAN_OPTIONS="print_stats=true:atexit=true"
|
|
||||||
#- LSAN_OPTIONS="verbosity=1:log_threads=1"
|
|
||||||
- PARALLEL_TESTS=false
|
|
||||||
# ubsan
|
|
||||||
- <<: *linux
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_san/
|
|
||||||
compiler: clang-8
|
|
||||||
name: ubsan, clang-8
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
||||||
- BUILD_TYPE=Release
|
|
||||||
- CMAKE_ADD="-Dsan=undefined"
|
|
||||||
# once we can run clean under ubsan, add halt_on_error=1 to options below
|
|
||||||
- UBSAN_OPTIONS="print_stacktrace=1:report_error_type=1"
|
|
||||||
- PARALLEL_TESTS=false
|
|
||||||
# tsan
|
|
||||||
# current tsan failure *might* be related to:
|
|
||||||
# https://github.com/google/sanitizers/issues/1104
|
|
||||||
# but we can't get it to run, so leave it disabled for now
|
|
||||||
# - <<: *linux
|
|
||||||
# if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_linux/ OR commit_message =~ /travis_run_san/
|
|
||||||
# compiler: clang-8
|
|
||||||
# name: tsan, clang-8
|
|
||||||
# env:
|
|
||||||
# - MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
|
|
||||||
# - BUILD_TYPE=Release
|
|
||||||
# - CMAKE_ADD="-Dsan=thread"
|
|
||||||
# - TSAN_OPTIONS="history_size=3 external_symbolizer_path=/usr/bin/llvm-symbolizer verbosity=1"
|
|
||||||
# - PARALLEL_TESTS=false
|
|
||||||
# dynamic lib builds
|
|
||||||
- <<: *linux
|
|
||||||
compiler: gcc-8
|
|
||||||
name: non-static, gcc-8
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- CMAKE_ADD="-Dstatic=OFF"
|
|
||||||
- <<: *linux
|
|
||||||
compiler: gcc-8
|
|
||||||
name: non-static + BUILD_SHARED_LIBS, gcc-8
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- CMAKE_ADD="-Dstatic=OFF -DBUILD_SHARED_LIBS=ON"
|
|
||||||
# makefile
|
|
||||||
- <<: *linux
|
|
||||||
compiler: gcc-8
|
|
||||||
name: makefile generator, gcc-8
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- NINJA_BUILD=false
|
|
||||||
# misc alternative compilers
|
|
||||||
- <<: *linux
|
|
||||||
compiler: gcc-9
|
|
||||||
name: gcc-9
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-9 && CXX=g++-9"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- <<: *linux
|
|
||||||
compiler: clang-9
|
|
||||||
name: clang-9, debug
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=clang-9 && CXX=clang++-9"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- <<: *linux
|
|
||||||
compiler: clang-9
|
|
||||||
name: clang-9, release
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=clang-9 && CXX=clang++-9"
|
|
||||||
- BUILD_TYPE=Release
|
|
||||||
# verify build with min version of cmake
|
|
||||||
- <<: *linux
|
|
||||||
compiler: gcc-8
|
|
||||||
name: min cmake version
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- CMAKE_EXE=/opt/local/cmake/bin/cmake
|
|
||||||
- SKIP_TESTS=true
|
|
||||||
# validator keys project as subproj of rippled
|
|
||||||
- <<: *linux
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_vkeys/
|
|
||||||
compiler: gcc-8
|
|
||||||
name: validator-keys
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
||||||
- BUILD_TYPE=Debug
|
|
||||||
- CMAKE_ADD="-Dvalidator_keys=ON"
|
|
||||||
- TARGET=validator-keys
|
|
||||||
# macos
|
|
||||||
- &macos
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_mac/
|
|
||||||
stage: build
|
|
||||||
os: osx
|
|
||||||
osx_image: xcode13.1
|
|
||||||
name: xcode13.1, debug
|
|
||||||
env:
|
|
||||||
# put NIH in non-cache location since it seems to
|
|
||||||
# cause failures when homebrew updates
|
|
||||||
- NIH_CACHE_ROOT=${TRAVIS_BUILD_DIR}/nih_c
|
|
||||||
- BLD_CONFIG=Debug
|
|
||||||
- TEST_EXTRA_ARGS=""
|
|
||||||
- BOOST_ROOT=${CACHE_DIR}/boost_1_75_0
|
|
||||||
- >-
|
|
||||||
CMAKE_ADD="
|
|
||||||
-DBOOST_ROOT=${BOOST_ROOT}/_INSTALLED_
|
|
||||||
-DBoost_ARCHITECTURE=-x64
|
|
||||||
-DBoost_NO_SYSTEM_PATHS=ON
|
|
||||||
-DCMAKE_VERBOSE_MAKEFILE=ON"
|
|
||||||
addons:
|
|
||||||
homebrew:
|
|
||||||
packages:
|
|
||||||
- protobuf
|
|
||||||
- grpc
|
|
||||||
- pkg-config
|
|
||||||
- bash
|
|
||||||
- ninja
|
|
||||||
- cmake
|
|
||||||
- wget
|
|
||||||
- zstd
|
|
||||||
- libarchive
|
|
||||||
- openssl@1.1
|
|
||||||
update: true
|
|
||||||
install:
|
|
||||||
- export OPENSSL_ROOT=$(brew --prefix openssl@1.1)
|
|
||||||
- travis_wait ${MAX_TIME_MIN} Builds/containers/shared/install_boost.sh
|
|
||||||
- brew uninstall --ignore-dependencies boost
|
|
||||||
script:
|
|
||||||
- mkdir -p build.macos && cd build.macos
|
|
||||||
- cmake -G Ninja ${CMAKE_EXTRA_ARGS} -DCMAKE_BUILD_TYPE=${BLD_CONFIG} ..
|
|
||||||
- travis_wait ${MAX_TIME_MIN} cmake --build . --parallel --verbose
|
|
||||||
- ./rippled --unittest --quiet --unittest-log --unittest-jobs ${NUM_PROCESSORS} ${TEST_EXTRA_ARGS}
|
|
||||||
- <<: *macos
|
|
||||||
name: xcode13.1, release
|
|
||||||
before_script:
|
|
||||||
- export BLD_CONFIG=Release
|
|
||||||
- export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -Dassert=ON"
|
|
||||||
- <<: *macos
|
|
||||||
name: ipv6 (macos)
|
|
||||||
before_script:
|
|
||||||
- export TEST_EXTRA_ARGS="--unittest-ipv6"
|
|
||||||
- <<: *macos
|
|
||||||
osx_image: xcode13.1
|
|
||||||
name: xcode13.1, debug
|
|
||||||
# windows
|
|
||||||
- &windows
|
|
||||||
if: commit_message !~ /travis_run_/ OR commit_message =~ /travis_run_win/
|
|
||||||
os: windows
|
|
||||||
env:
|
|
||||||
# put NIH in a non-cached location until
|
|
||||||
# we come up with a way to stabilize that
|
|
||||||
# cache on windows (minimize incremental changes)
|
|
||||||
- CACHE_NAME=win_01
|
|
||||||
- NIH_CACHE_ROOT=${TRAVIS_BUILD_DIR}/nih_c
|
|
||||||
- VCPKG_DEFAULT_TRIPLET="x64-windows-static"
|
|
||||||
- MATRIX_EVAL="CC=cl.exe && CXX=cl.exe"
|
|
||||||
- BOOST_ROOT=${CACHE_DIR}/boost_1_75
|
|
||||||
- >-
|
|
||||||
CMAKE_ADD="
|
|
||||||
-DCMAKE_PREFIX_PATH=${BOOST_ROOT}/_INSTALLED_
|
|
||||||
-DBOOST_ROOT=${BOOST_ROOT}/_INSTALLED_
|
|
||||||
-DBoost_ROOT=${BOOST_ROOT}/_INSTALLED_
|
|
||||||
-DBoost_DIR=${BOOST_ROOT}/_INSTALLED_/lib/cmake/Boost-1.75.0
|
|
||||||
-DBoost_COMPILER=vc141
|
|
||||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
|
||||||
-DCMAKE_TOOLCHAIN_FILE=${VCPKG_DIR}/scripts/buildsystems/vcpkg.cmake
|
|
||||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static"
|
|
||||||
stage: windep-vcpkg
|
|
||||||
name: prereq-vcpkg
|
|
||||||
install:
|
|
||||||
- choco upgrade cmake.install
|
|
||||||
- choco install ninja visualstudio2017-workload-vctools -y
|
|
||||||
script:
|
|
||||||
- df -h
|
|
||||||
- env
|
|
||||||
- travis_wait ${MAX_TIME_MIN} bin/sh/install-vcpkg.sh openssl
|
|
||||||
- travis_wait ${MAX_TIME_MIN} bin/sh/install-vcpkg.sh grpc
|
|
||||||
- travis_wait ${MAX_TIME_MIN} bin/sh/install-vcpkg.sh libarchive[lz4]
|
|
||||||
# TBD consider rocksdb via vcpkg if/when we can build with the
|
|
||||||
# vcpkg version
|
|
||||||
# - travis_wait ${MAX_TIME_MIN} bin/sh/install-vcpkg.sh rocksdb[snappy,lz4,zlib]
|
|
||||||
- <<: *windows
|
|
||||||
stage: windep-boost
|
|
||||||
name: prereq-keep-boost
|
|
||||||
install:
|
|
||||||
- choco upgrade cmake.install
|
|
||||||
- choco install ninja visualstudio2017-workload-vctools -y
|
|
||||||
- choco install visualstudio2019buildtools visualstudio2019community visualstudio2019-workload-vctools -y
|
|
||||||
script:
|
|
||||||
- export BOOST_TOOLSET=msvc-14.1
|
|
||||||
- travis_wait ${MAX_TIME_MIN} Builds/containers/shared/install_boost.sh
|
|
||||||
- &windows-bld
|
|
||||||
<<: *windows
|
|
||||||
stage: build
|
|
||||||
name: windows, debug
|
|
||||||
before_script:
|
|
||||||
- export BLD_CONFIG=Debug
|
|
||||||
script:
|
|
||||||
- df -h
|
|
||||||
- . ./bin/sh/setup-msvc.sh
|
|
||||||
- mkdir -p build.ms && cd build.ms
|
|
||||||
- cmake -G Ninja ${CMAKE_EXTRA_ARGS} -DCMAKE_BUILD_TYPE=${BLD_CONFIG} ..
|
|
||||||
- travis_wait ${MAX_TIME_MIN} cmake --build . --parallel --verbose
|
|
||||||
# override num procs to force fewer unit test jobs
|
|
||||||
- export NUM_PROCESSORS=2
|
|
||||||
- travis_wait ${MAX_TIME_MIN} ./rippled.exe --unittest --quiet --unittest-log --unittest-jobs ${NUM_PROCESSORS}
|
|
||||||
- <<: *windows-bld
|
|
||||||
name: windows, release
|
|
||||||
before_script:
|
|
||||||
- export BLD_CONFIG=Release
|
|
||||||
- <<: *windows-bld
|
|
||||||
name: windows, visual studio, debug
|
|
||||||
script:
|
|
||||||
- mkdir -p build.ms && cd build.ms
|
|
||||||
- export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DCMAKE_GENERATOR_TOOLSET=host=x64"
|
|
||||||
- cmake -G "Visual Studio 15 2017 Win64" ${CMAKE_EXTRA_ARGS} ..
|
|
||||||
- export DESTDIR=${PWD}/_installed_
|
|
||||||
- travis_wait ${MAX_TIME_MIN} cmake --build . --parallel --verbose --config ${BLD_CONFIG} --target install
|
|
||||||
# override num procs to force fewer unit test jobs
|
|
||||||
- export NUM_PROCESSORS=2
|
|
||||||
- >-
|
|
||||||
travis_wait ${MAX_TIME_MIN} "./_installed_/Program Files/rippled/bin/rippled.exe" --unittest --quiet --unittest-log --unittest-jobs ${NUM_PROCESSORS}
|
|
||||||
- <<: *windows-bld
|
|
||||||
name: windows, vc2019
|
|
||||||
install:
|
|
||||||
- choco upgrade cmake.install
|
|
||||||
- choco install ninja -y
|
|
||||||
- choco install visualstudio2019buildtools visualstudio2019community visualstudio2019-workload-vctools -y
|
|
||||||
before_script:
|
|
||||||
- export BLD_CONFIG=Release
|
|
||||||
# we want to use the boost build from cache, which was built using the
|
|
||||||
# vs2017 compiler so we need to specify the Boost_COMPILER. BUT, we
|
|
||||||
# can't use the cmake config files generated by boost b/c they are
|
|
||||||
# broken for Boost_COMPILER override, so we need to specify both
|
|
||||||
# Boost_NO_BOOST_CMAKE and a slightly different Boost_COMPILER string
|
|
||||||
# to make the legacy find module work for us. If the cmake configs are
|
|
||||||
# fixed in the future, it should be possible to remove these
|
|
||||||
# workarounds.
|
|
||||||
- export CMAKE_EXTRA_ARGS="${CMAKE_EXTRA_ARGS} -DBoost_NO_BOOST_CMAKE=ON -DBoost_COMPILER=-vc141"
|
|
||||||
|
|
||||||
before_cache:
|
|
||||||
- if [ $(uname) = "Linux" ] ; then SUDO="sudo"; else SUDO=""; fi
|
|
||||||
- cd ${TRAVIS_HOME}
|
|
||||||
- if [ -f cache_ignore.tar ] ; then $SUDO tar xvf cache_ignore.tar; fi
|
|
||||||
- cd ${TRAVIS_BUILD_DIR}
|
|
||||||
|
|
||||||
cache:
|
|
||||||
timeout: 900
|
|
||||||
directories:
|
|
||||||
- $CACHE_DIR
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
email: false
|
|
||||||
6
.vscode/settings.json
vendored
6
.vscode/settings.json
vendored
@@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"C_Cpp.formatting": "clangFormat",
|
"C_Cpp.formatting": "clangFormat",
|
||||||
"C_Cpp.clang_format_path": "/Users/dustedfloor/projects/transia-rnd/rippled-icv2/.clang-format",
|
"C_Cpp.clang_format_path": ".clang-format",
|
||||||
"C_Cpp.clang_format_fallbackStyle": "{ ColumnLimit: 0 }",
|
"C_Cpp.clang_format_fallbackStyle": "{ ColumnLimit: 0 }",
|
||||||
"[cpp]":{
|
"[cpp]":{
|
||||||
"editor.wordBasedSuggestions": false,
|
"editor.wordBasedSuggestions": "off",
|
||||||
"editor.suggest.insertMode": "replace",
|
"editor.suggest.insertMode": "replace",
|
||||||
"editor.semanticHighlighting.enabled": true,
|
"editor.semanticHighlighting.enabled": true,
|
||||||
"editor.tabSize": 4,
|
"editor.tabSize": 4,
|
||||||
"editor.defaultFormatter": "xaver.clang-format",
|
"editor.defaultFormatter": "xaver.clang-format",
|
||||||
"editor.formatOnSave": false
|
"editor.formatOnSave": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
442
BUILD.md
Normal file
442
BUILD.md
Normal file
@@ -0,0 +1,442 @@
|
|||||||
|
> These instructions assume you have a C++ development environment ready
|
||||||
|
> with Git, Python, Conan, CMake, and a C++ compiler. For help setting one up
|
||||||
|
> on Linux, macOS, or Windows, see [our guide](./docs/build/environment.md).
|
||||||
|
>
|
||||||
|
> These instructions also assume a basic familiarity with Conan and CMake.
|
||||||
|
> If you are unfamiliar with Conan,
|
||||||
|
> you can read our [crash course](./docs/build/conan.md)
|
||||||
|
> or the official [Getting Started][3] walkthrough.
|
||||||
|
|
||||||
|
## Branches
|
||||||
|
|
||||||
|
For a stable release, choose the `master` branch or one of the [tagged
|
||||||
|
releases](https://github.com/ripple/rippled/releases).
|
||||||
|
|
||||||
|
```
|
||||||
|
git checkout master
|
||||||
|
```
|
||||||
|
|
||||||
|
For the latest release candidate, choose the `release` branch.
|
||||||
|
|
||||||
|
```
|
||||||
|
git checkout release
|
||||||
|
```
|
||||||
|
|
||||||
|
For the latest set of untested features, or to contribute, choose the `develop`
|
||||||
|
branch.
|
||||||
|
|
||||||
|
```
|
||||||
|
git checkout develop
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Minimum Requirements
|
||||||
|
|
||||||
|
- [Python 3.7](https://www.python.org/downloads/)
|
||||||
|
- [Conan 1.55](https://conan.io/downloads.html)
|
||||||
|
- [CMake 3.16](https://cmake.org/download/)
|
||||||
|
|
||||||
|
`rippled` is written in the C++20 dialect and includes the `<concepts>` header.
|
||||||
|
The [minimum compiler versions][2] required are:
|
||||||
|
|
||||||
|
| Compiler | Version |
|
||||||
|
|-------------|---------|
|
||||||
|
| GCC | 10 |
|
||||||
|
| Clang | 13 |
|
||||||
|
| Apple Clang | 13.1.6 |
|
||||||
|
| MSVC | 19.23 |
|
||||||
|
|
||||||
|
We don't recommend Windows for `rippled` production at this time. As of
|
||||||
|
January 2023, Ubuntu has the highest level of quality assurance, testing,
|
||||||
|
and support.
|
||||||
|
|
||||||
|
Windows developers should use Visual Studio 2019. `rippled` isn't
|
||||||
|
compatible with [Boost](https://www.boost.org/) 1.78 or 1.79, and Conan
|
||||||
|
can't build earlier Boost versions.
|
||||||
|
|
||||||
|
**Note:** 32-bit Windows development isn't supported.
|
||||||
|
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
|
||||||
|
### Set Up Conan
|
||||||
|
|
||||||
|
1. (Optional) If you've never used Conan, use autodetect to set up a default profile.
|
||||||
|
|
||||||
|
```
|
||||||
|
conan profile new default --detect
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Update the compiler settings.
|
||||||
|
|
||||||
|
```
|
||||||
|
conan profile update settings.compiler.cppstd=20 default
|
||||||
|
```
|
||||||
|
|
||||||
|
Linux developers will commonly have a default Conan [profile][] that compiles
|
||||||
|
with GCC and links with libstdc++.
|
||||||
|
If you are linking with libstdc++ (see profile setting `compiler.libcxx`),
|
||||||
|
then you will need to choose the `libstdc++11` ABI.
|
||||||
|
|
||||||
|
```
|
||||||
|
conan profile update settings.compiler.libcxx=libstdc++11 default
|
||||||
|
```
|
||||||
|
|
||||||
|
On Windows, you should use the x64 native build tools.
|
||||||
|
An easy way to do that is to run the shortcut "x64 Native Tools Command
|
||||||
|
Prompt" for the version of Visual Studio that you have installed.
|
||||||
|
|
||||||
|
Windows developers must also build `rippled` and its dependencies for the x64
|
||||||
|
architecture.
|
||||||
|
|
||||||
|
```
|
||||||
|
conan profile update settings.arch=x86_64 default
|
||||||
|
```
|
||||||
|
|
||||||
|
3. (Optional) If you have multiple compilers installed on your platform,
|
||||||
|
make sure that Conan and CMake select the one you want to use.
|
||||||
|
This setting will set the correct variables (`CMAKE_<LANG>_COMPILER`)
|
||||||
|
in the generated CMake toolchain file.
|
||||||
|
|
||||||
|
```
|
||||||
|
conan profile update 'conf.tools.build:compiler_executables={"c": "<path>", "cpp": "<path>"}' default
|
||||||
|
```
|
||||||
|
|
||||||
|
It should choose the compiler for dependencies as well,
|
||||||
|
but not all of them have a Conan recipe that respects this setting (yet).
|
||||||
|
For the rest, you can set these environment variables:
|
||||||
|
|
||||||
|
```
|
||||||
|
conan profile update env.CC=<path> default
|
||||||
|
conan profile update env.CXX=<path> default
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Export our [Conan recipe for Snappy](./external/snappy).
|
||||||
|
It doesn't explicitly link the C++ standard library,
|
||||||
|
which allows you to statically link it with GCC, if you want.
|
||||||
|
|
||||||
|
```
|
||||||
|
conan export external/snappy snappy/1.1.10@xahaud/stable
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Export our [Conan recipe for SOCI](./external/soci).
|
||||||
|
It patches their CMake to correctly import its dependencies.
|
||||||
|
|
||||||
|
```
|
||||||
|
conan export external/soci soci/4.0.3@xahaud/stable
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build and Test
|
||||||
|
|
||||||
|
1. Create a build directory and move into it.
|
||||||
|
|
||||||
|
```
|
||||||
|
mkdir .build
|
||||||
|
cd .build
|
||||||
|
```
|
||||||
|
|
||||||
|
You can use any directory name. Conan treats your working directory as an
|
||||||
|
install folder and generates files with implementation details.
|
||||||
|
You don't need to worry about these files, but make sure to change
|
||||||
|
your working directory to your build directory before calling Conan.
|
||||||
|
|
||||||
|
**Note:** You can specify a directory for the installation files by adding
|
||||||
|
the `install-folder` or `-if` option to every `conan install` command
|
||||||
|
in the next step.
|
||||||
|
|
||||||
|
2. Generate CMake files for every configuration you want to build.
|
||||||
|
|
||||||
|
```
|
||||||
|
conan install .. --output-folder . --build missing --settings build_type=Release
|
||||||
|
conan install .. --output-folder . --build missing --settings build_type=Debug
|
||||||
|
```
|
||||||
|
|
||||||
|
For a single-configuration generator, e.g. `Unix Makefiles` or `Ninja`,
|
||||||
|
you only need to run this command once.
|
||||||
|
For a multi-configuration generator, e.g. `Visual Studio`, you may want to
|
||||||
|
run it more than once.
|
||||||
|
|
||||||
|
Each of these commands should also have a different `build_type` setting.
|
||||||
|
A second command with the same `build_type` setting will overwrite the files
|
||||||
|
generated by the first. You can pass the build type on the command line with
|
||||||
|
`--settings build_type=$BUILD_TYPE` or in the profile itself,
|
||||||
|
under the section `[settings]` with the key `build_type`.
|
||||||
|
|
||||||
|
If you are using a Microsoft Visual C++ compiler,
|
||||||
|
then you will need to ensure consistency between the `build_type` setting
|
||||||
|
and the `compiler.runtime` setting.
|
||||||
|
|
||||||
|
When `build_type` is `Release`, `compiler.runtime` should be `MT`.
|
||||||
|
|
||||||
|
When `build_type` is `Debug`, `compiler.runtime` should be `MTd`.
|
||||||
|
|
||||||
|
```
|
||||||
|
conan install .. --output-folder . --build missing --settings build_type=Release --settings compiler.runtime=MT
|
||||||
|
conan install .. --output-folder . --build missing --settings build_type=Debug --settings compiler.runtime=MTd
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Configure CMake and pass the toolchain file generated by Conan, located at
|
||||||
|
`$OUTPUT_FOLDER/build/generators/conan_toolchain.cmake`.
|
||||||
|
|
||||||
|
Single-config generators:
|
||||||
|
|
||||||
|
```
|
||||||
|
cmake -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release ..
|
||||||
|
```
|
||||||
|
|
||||||
|
Pass the CMake variable [`CMAKE_BUILD_TYPE`][build_type]
|
||||||
|
and make sure it matches the `build_type` setting you chose in the previous
|
||||||
|
step.
|
||||||
|
|
||||||
|
Multi-config gnerators:
|
||||||
|
|
||||||
|
```
|
||||||
|
cmake -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake ..
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note:** You can pass build options for `rippled` in this step.
|
||||||
|
|
||||||
|
4. Build `rippled`.
|
||||||
|
|
||||||
|
For a single-configuration generator, it will build whatever configuration
|
||||||
|
you passed for `CMAKE_BUILD_TYPE`. For a multi-configuration generator,
|
||||||
|
you must pass the option `--config` to select the build configuration.
|
||||||
|
|
||||||
|
Single-config generators:
|
||||||
|
|
||||||
|
```
|
||||||
|
cmake --build .
|
||||||
|
```
|
||||||
|
|
||||||
|
Multi-config generators:
|
||||||
|
|
||||||
|
```
|
||||||
|
cmake --build . --config Release
|
||||||
|
cmake --build . --config Debug
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Test rippled.
|
||||||
|
|
||||||
|
Single-config generators:
|
||||||
|
|
||||||
|
```
|
||||||
|
./rippled --unittest
|
||||||
|
```
|
||||||
|
|
||||||
|
Multi-config generators:
|
||||||
|
|
||||||
|
```
|
||||||
|
./Release/rippled --unittest
|
||||||
|
./Debug/rippled --unittest
|
||||||
|
```
|
||||||
|
|
||||||
|
The location of `rippled` in your build directory depends on your CMake
|
||||||
|
generator. Pass `--help` to see the rest of the command line options.
|
||||||
|
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
| Option | Default Value | Description |
|
||||||
|
| --- | ---| ---|
|
||||||
|
| `assert` | OFF | Enable assertions.
|
||||||
|
| `reporting` | OFF | Build the reporting mode feature. |
|
||||||
|
| `tests` | ON | Build tests. |
|
||||||
|
| `unity` | ON | Configure a unity build. |
|
||||||
|
| `san` | N/A | Enable a sanitizer with Clang. Choices are `thread` and `address`. |
|
||||||
|
|
||||||
|
[Unity builds][5] may be faster for the first build
|
||||||
|
(at the cost of much more memory) since they concatenate sources into fewer
|
||||||
|
translation units. Non-unity builds may be faster for incremental builds,
|
||||||
|
and can be helpful for detecting `#include` omissions.
|
||||||
|
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
|
||||||
|
### Conan
|
||||||
|
|
||||||
|
If you have trouble building dependencies after changing Conan settings,
|
||||||
|
try removing the Conan cache.
|
||||||
|
|
||||||
|
```
|
||||||
|
rm -rf ~/.conan/data
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### no std::result_of
|
||||||
|
|
||||||
|
If your compiler version is recent enough to have removed `std::result_of` as
|
||||||
|
part of C++20, e.g. Apple Clang 15.0, then you might need to add a preprocessor
|
||||||
|
definition to your build.
|
||||||
|
|
||||||
|
```
|
||||||
|
conan profile update 'options.boost:extra_b2_flags="define=BOOST_ASIO_HAS_STD_INVOKE_RESULT"' default
|
||||||
|
conan profile update 'env.CFLAGS="-DBOOST_ASIO_HAS_STD_INVOKE_RESULT"' default
|
||||||
|
conan profile update 'env.CXXFLAGS="-DBOOST_ASIO_HAS_STD_INVOKE_RESULT"' default
|
||||||
|
conan profile update 'conf.tools.build:cflags+=["-DBOOST_ASIO_HAS_STD_INVOKE_RESULT"]' default
|
||||||
|
conan profile update 'conf.tools.build:cxxflags+=["-DBOOST_ASIO_HAS_STD_INVOKE_RESULT"]' default
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### recompile with -fPIC
|
||||||
|
|
||||||
|
If you get a linker error suggesting that you recompile Boost with
|
||||||
|
position-independent code, such as:
|
||||||
|
|
||||||
|
```
|
||||||
|
/usr/bin/ld.gold: error: /home/username/.conan/data/boost/1.77.0/_/_/package/.../lib/libboost_container.a(alloc_lib.o):
|
||||||
|
requires unsupported dynamic reloc 11; recompile with -fPIC
|
||||||
|
```
|
||||||
|
|
||||||
|
Conan most likely downloaded a bad binary distribution of the dependency.
|
||||||
|
This seems to be a [bug][1] in Conan just for Boost 1.77.0 compiled with GCC
|
||||||
|
for Linux. The solution is to build the dependency locally by passing
|
||||||
|
`--build boost` when calling `conan install`.
|
||||||
|
|
||||||
|
```
|
||||||
|
/usr/bin/ld.gold: error: /home/username/.conan/data/boost/1.77.0/_/_/package/dc8aedd23a0f0a773a5fcdcfe1ae3e89c4205978/lib/libboost_container.a(alloc_lib.o): requires unsupported dynamic reloc 11; recompile with -fPIC
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Add a Dependency
|
||||||
|
|
||||||
|
If you want to experiment with a new package, follow these steps:
|
||||||
|
|
||||||
|
1. Search for the package on [Conan Center](https://conan.io/center/).
|
||||||
|
2. Modify [`conanfile.py`](./conanfile.py):
|
||||||
|
- Add a version of the package to the `requires` property.
|
||||||
|
- Change any default options for the package by adding them to the
|
||||||
|
`default_options` property (with syntax `'$package:$option': $value`).
|
||||||
|
3. Modify [`CMakeLists.txt`](./CMakeLists.txt):
|
||||||
|
- Add a call to `find_package($package REQUIRED)`.
|
||||||
|
- Link a library from the package to the target `ripple_libs`
|
||||||
|
(search for the existing call to `target_link_libraries(ripple_libs INTERFACE ...)`).
|
||||||
|
4. Start coding! Don't forget to include whatever headers you need from the package.
|
||||||
|
|
||||||
|
|
||||||
|
## A crash course in CMake and Conan
|
||||||
|
|
||||||
|
To better understand how to use Conan,
|
||||||
|
we should first understand _why_ we use Conan,
|
||||||
|
and to understand that,
|
||||||
|
we need to understand how we use CMake.
|
||||||
|
|
||||||
|
|
||||||
|
### CMake
|
||||||
|
|
||||||
|
Technically, you don't need CMake to build this project.
|
||||||
|
You could manually compile every translation unit into an object file,
|
||||||
|
using the right compiler options,
|
||||||
|
and then manually link all those objects together,
|
||||||
|
using the right linker options.
|
||||||
|
However, that is very tedious and error-prone,
|
||||||
|
which is why we lean on tools like CMake.
|
||||||
|
|
||||||
|
We have written CMake configuration files
|
||||||
|
([`CMakeLists.txt`](./CMakeLists.txt) and friends)
|
||||||
|
for this project so that CMake can be used to correctly compile and link
|
||||||
|
all of the translation units in it.
|
||||||
|
Or rather, CMake will generate files for a separate build system
|
||||||
|
(e.g. Make, Ninja, Visual Studio, Xcode, etc.)
|
||||||
|
that compile and link all of the translation units.
|
||||||
|
Even then, CMake has parameters, some of which are platform-specific.
|
||||||
|
In CMake's parlance, parameters are specially-named **variables** like
|
||||||
|
[`CMAKE_BUILD_TYPE`][build_type] or
|
||||||
|
[`CMAKE_MSVC_RUNTIME_LIBRARY`][runtime].
|
||||||
|
Parameters include:
|
||||||
|
|
||||||
|
- what build system to generate files for
|
||||||
|
- where to find the compiler and linker
|
||||||
|
- where to find dependencies, e.g. libraries and headers
|
||||||
|
- how to link dependencies, e.g. any special compiler or linker flags that
|
||||||
|
need to be used with them, including preprocessor definitions
|
||||||
|
- how to compile translation units, e.g. with optimizations, debug symbols,
|
||||||
|
position-independent code, etc.
|
||||||
|
- on Windows, which runtime library to link with
|
||||||
|
|
||||||
|
For some of these parameters, like the build system and compiler,
|
||||||
|
CMake goes through a complicated search process to choose default values.
|
||||||
|
For others, like the dependencies,
|
||||||
|
_we_ had written in the CMake configuration files of this project
|
||||||
|
our own complicated process to choose defaults.
|
||||||
|
For most developers, things "just worked"... until they didn't, and then
|
||||||
|
you were left trying to debug one of these complicated processes, instead of
|
||||||
|
choosing and manually passing the parameter values yourself.
|
||||||
|
|
||||||
|
You can pass every parameter to CMake on the command line,
|
||||||
|
but writing out these parameters every time we want to configure CMake is
|
||||||
|
a pain.
|
||||||
|
Most humans prefer to put them into a configuration file, once, that
|
||||||
|
CMake can read every time it is configured.
|
||||||
|
For CMake, that file is a [toolchain file][toolchain].
|
||||||
|
|
||||||
|
|
||||||
|
### Conan
|
||||||
|
|
||||||
|
These next few paragraphs on Conan are going to read much like the ones above
|
||||||
|
for CMake.
|
||||||
|
|
||||||
|
Technically, you don't need Conan to build this project.
|
||||||
|
You could manually download, configure, build, and install all of the
|
||||||
|
dependencies yourself, and then pass all of the parameters necessary for
|
||||||
|
CMake to link to those dependencies.
|
||||||
|
To guarantee ABI compatibility, you must be sure to use the same set of
|
||||||
|
compiler and linker options for all dependencies _and_ this project.
|
||||||
|
However, that is very tedious and error-prone, which is why we lean on tools
|
||||||
|
like Conan.
|
||||||
|
|
||||||
|
We have written a Conan configuration file ([`conanfile.py`](./conanfile.py))
|
||||||
|
so that Conan can be used to correctly download, configure, build, and install
|
||||||
|
all of the dependencies for this project,
|
||||||
|
using a single set of compiler and linker options for all of them.
|
||||||
|
It generates files that contain almost all of the parameters that CMake
|
||||||
|
expects.
|
||||||
|
Those files include:
|
||||||
|
|
||||||
|
- A single toolchain file.
|
||||||
|
- For every dependency, a CMake [package configuration file][pcf],
|
||||||
|
[package version file][pvf], and for every build type, a package
|
||||||
|
targets file.
|
||||||
|
Together, these files implement version checking and define `IMPORTED`
|
||||||
|
targets for the dependencies.
|
||||||
|
|
||||||
|
The toolchain file itself amends the search path
|
||||||
|
([`CMAKE_PREFIX_PATH`][prefix_path]) so that [`find_package()`][find_package]
|
||||||
|
will [discover][search] the generated package configuration files.
|
||||||
|
|
||||||
|
**Nearly all we must do to properly configure CMake is pass the toolchain
|
||||||
|
file.**
|
||||||
|
What CMake parameters are left out?
|
||||||
|
You'll still need to pick a build system generator,
|
||||||
|
and if you choose a single-configuration generator,
|
||||||
|
you'll need to pass the `CMAKE_BUILD_TYPE`,
|
||||||
|
which should match the `build_type` setting you gave to Conan.
|
||||||
|
|
||||||
|
Even then, Conan has parameters, some of which are platform-specific.
|
||||||
|
In Conan's parlance, parameters are either settings or options.
|
||||||
|
**Settings** are shared by all packages, e.g. the build type.
|
||||||
|
**Options** are specific to a given package, e.g. whether to build and link
|
||||||
|
OpenSSL as a shared library.
|
||||||
|
|
||||||
|
For settings, Conan goes through a complicated search process to choose
|
||||||
|
defaults.
|
||||||
|
For options, each package recipe defines its own defaults.
|
||||||
|
|
||||||
|
You can pass every parameter to Conan on the command line,
|
||||||
|
but it is more convenient to put them in a [profile][profile].
|
||||||
|
**All we must do to properly configure Conan is edit and pass the profile.**
|
||||||
|
|
||||||
|
|
||||||
|
[1]: https://github.com/conan-io/conan-center-index/issues/13168
|
||||||
|
[5]: https://en.wikipedia.org/wiki/Unity_build
|
||||||
|
[build_type]: https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html
|
||||||
|
[runtime]: https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_RUNTIME_LIBRARY.html
|
||||||
|
[toolchain]: https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html
|
||||||
|
[pcf]: https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#package-configuration-file
|
||||||
|
[pvf]: https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#package-version-file
|
||||||
|
[find_package]: https://cmake.org/cmake/help/latest/command/find_package.html
|
||||||
|
[search]: https://cmake.org/cmake/help/latest/command/find_package.html#search-procedure
|
||||||
|
[prefix_path]: https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html
|
||||||
|
[profile]: https://docs.conan.io/en/latest/reference/profiles.html
|
||||||
|
|
||||||
@@ -23,6 +23,11 @@ else()
|
|||||||
message(STATUS "ACL not found, continuing without ACL support")
|
message(STATUS "ACL not found, continuing without ACL support")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
add_library(libxrpl INTERFACE)
|
||||||
|
target_link_libraries(libxrpl INTERFACE xrpl_core)
|
||||||
|
add_library(xrpl::libxrpl ALIAS libxrpl)
|
||||||
|
|
||||||
|
|
||||||
#[===============================[
|
#[===============================[
|
||||||
beast/legacy FILES:
|
beast/legacy FILES:
|
||||||
TODO: review these sources for removal or replacement
|
TODO: review these sources for removal or replacement
|
||||||
@@ -144,10 +149,10 @@ target_link_libraries (xrpl_core
|
|||||||
PUBLIC
|
PUBLIC
|
||||||
OpenSSL::Crypto
|
OpenSSL::Crypto
|
||||||
Ripple::boost
|
Ripple::boost
|
||||||
NIH::WasmEdge
|
wasmedge::wasmedge
|
||||||
Ripple::syslibs
|
Ripple::syslibs
|
||||||
NIH::secp256k1
|
secp256k1::secp256k1
|
||||||
NIH::ed25519-donna
|
ed25519::ed25519
|
||||||
date::date
|
date::date
|
||||||
Ripple::opts)
|
Ripple::opts)
|
||||||
#[=================================[
|
#[=================================[
|
||||||
@@ -392,6 +397,7 @@ target_sources (rippled PRIVATE
|
|||||||
src/ripple/app/misc/NegativeUNLVote.cpp
|
src/ripple/app/misc/NegativeUNLVote.cpp
|
||||||
src/ripple/app/misc/NetworkOPs.cpp
|
src/ripple/app/misc/NetworkOPs.cpp
|
||||||
src/ripple/app/misc/SHAMapStoreImp.cpp
|
src/ripple/app/misc/SHAMapStoreImp.cpp
|
||||||
|
src/ripple/app/misc/StateAccounting.cpp
|
||||||
src/ripple/app/misc/detail/impl/WorkSSL.cpp
|
src/ripple/app/misc/detail/impl/WorkSSL.cpp
|
||||||
src/ripple/app/misc/impl/AccountTxPaging.cpp
|
src/ripple/app/misc/impl/AccountTxPaging.cpp
|
||||||
src/ripple/app/misc/impl/AmendmentTable.cpp
|
src/ripple/app/misc/impl/AmendmentTable.cpp
|
||||||
@@ -433,13 +439,18 @@ target_sources (rippled PRIVATE
|
|||||||
src/ripple/app/tx/impl/CancelOffer.cpp
|
src/ripple/app/tx/impl/CancelOffer.cpp
|
||||||
src/ripple/app/tx/impl/CashCheck.cpp
|
src/ripple/app/tx/impl/CashCheck.cpp
|
||||||
src/ripple/app/tx/impl/Change.cpp
|
src/ripple/app/tx/impl/Change.cpp
|
||||||
|
src/ripple/app/tx/impl/ClaimReward.cpp
|
||||||
|
src/ripple/app/tx/impl/Clawback.cpp
|
||||||
src/ripple/app/tx/impl/CreateCheck.cpp
|
src/ripple/app/tx/impl/CreateCheck.cpp
|
||||||
src/ripple/app/tx/impl/CreateOffer.cpp
|
src/ripple/app/tx/impl/CreateOffer.cpp
|
||||||
src/ripple/app/tx/impl/CreateTicket.cpp
|
src/ripple/app/tx/impl/CreateTicket.cpp
|
||||||
src/ripple/app/tx/impl/DeleteAccount.cpp
|
src/ripple/app/tx/impl/DeleteAccount.cpp
|
||||||
src/ripple/app/tx/impl/DepositPreauth.cpp
|
src/ripple/app/tx/impl/DepositPreauth.cpp
|
||||||
src/ripple/app/tx/impl/Escrow.cpp
|
src/ripple/app/tx/impl/Escrow.cpp
|
||||||
|
src/ripple/app/tx/impl/GenesisMint.cpp
|
||||||
|
src/ripple/app/tx/impl/Import.cpp
|
||||||
src/ripple/app/tx/impl/InvariantCheck.cpp
|
src/ripple/app/tx/impl/InvariantCheck.cpp
|
||||||
|
src/ripple/app/tx/impl/Invoke.cpp
|
||||||
src/ripple/app/tx/impl/NFTokenAcceptOffer.cpp
|
src/ripple/app/tx/impl/NFTokenAcceptOffer.cpp
|
||||||
src/ripple/app/tx/impl/NFTokenBurn.cpp
|
src/ripple/app/tx/impl/NFTokenBurn.cpp
|
||||||
src/ripple/app/tx/impl/NFTokenCancelOffer.cpp
|
src/ripple/app/tx/impl/NFTokenCancelOffer.cpp
|
||||||
@@ -448,13 +459,11 @@ target_sources (rippled PRIVATE
|
|||||||
src/ripple/app/tx/impl/OfferStream.cpp
|
src/ripple/app/tx/impl/OfferStream.cpp
|
||||||
src/ripple/app/tx/impl/PayChan.cpp
|
src/ripple/app/tx/impl/PayChan.cpp
|
||||||
src/ripple/app/tx/impl/Payment.cpp
|
src/ripple/app/tx/impl/Payment.cpp
|
||||||
|
src/ripple/app/tx/impl/Remit.cpp
|
||||||
src/ripple/app/tx/impl/SetAccount.cpp
|
src/ripple/app/tx/impl/SetAccount.cpp
|
||||||
src/ripple/app/tx/impl/SetRegularKey.cpp
|
|
||||||
src/ripple/app/tx/impl/SetHook.cpp
|
src/ripple/app/tx/impl/SetHook.cpp
|
||||||
src/ripple/app/tx/impl/ClaimReward.cpp
|
src/ripple/app/tx/impl/SetRemarks.cpp
|
||||||
src/ripple/app/tx/impl/GenesisMint.cpp
|
src/ripple/app/tx/impl/SetRegularKey.cpp
|
||||||
src/ripple/app/tx/impl/Import.cpp
|
|
||||||
src/ripple/app/tx/impl/Invoke.cpp
|
|
||||||
src/ripple/app/tx/impl/SetSignerList.cpp
|
src/ripple/app/tx/impl/SetSignerList.cpp
|
||||||
src/ripple/app/tx/impl/SetTrust.cpp
|
src/ripple/app/tx/impl/SetTrust.cpp
|
||||||
src/ripple/app/tx/impl/SignerEntries.cpp
|
src/ripple/app/tx/impl/SignerEntries.cpp
|
||||||
@@ -537,6 +546,7 @@ target_sources (rippled PRIVATE
|
|||||||
subdir: nodestore
|
subdir: nodestore
|
||||||
#]===============================]
|
#]===============================]
|
||||||
src/ripple/nodestore/backend/CassandraFactory.cpp
|
src/ripple/nodestore/backend/CassandraFactory.cpp
|
||||||
|
src/ripple/nodestore/backend/RWDBFactory.cpp
|
||||||
src/ripple/nodestore/backend/MemoryFactory.cpp
|
src/ripple/nodestore/backend/MemoryFactory.cpp
|
||||||
src/ripple/nodestore/backend/NuDBFactory.cpp
|
src/ripple/nodestore/backend/NuDBFactory.cpp
|
||||||
src/ripple/nodestore/backend/NullFactory.cpp
|
src/ripple/nodestore/backend/NullFactory.cpp
|
||||||
@@ -602,6 +612,7 @@ target_sources (rippled PRIVATE
|
|||||||
src/ripple/rpc/handlers/BlackList.cpp
|
src/ripple/rpc/handlers/BlackList.cpp
|
||||||
src/ripple/rpc/handlers/BookOffers.cpp
|
src/ripple/rpc/handlers/BookOffers.cpp
|
||||||
src/ripple/rpc/handlers/CanDelete.cpp
|
src/ripple/rpc/handlers/CanDelete.cpp
|
||||||
|
src/ripple/rpc/handlers/Catalogue.cpp
|
||||||
src/ripple/rpc/handlers/Connect.cpp
|
src/ripple/rpc/handlers/Connect.cpp
|
||||||
src/ripple/rpc/handlers/ConsensusInfo.cpp
|
src/ripple/rpc/handlers/ConsensusInfo.cpp
|
||||||
src/ripple/rpc/handlers/CrawlShards.cpp
|
src/ripple/rpc/handlers/CrawlShards.cpp
|
||||||
@@ -637,6 +648,7 @@ target_sources (rippled PRIVATE
|
|||||||
src/ripple/rpc/handlers/Random.cpp
|
src/ripple/rpc/handlers/Random.cpp
|
||||||
src/ripple/rpc/handlers/Reservations.cpp
|
src/ripple/rpc/handlers/Reservations.cpp
|
||||||
src/ripple/rpc/handlers/RipplePathFind.cpp
|
src/ripple/rpc/handlers/RipplePathFind.cpp
|
||||||
|
src/ripple/rpc/handlers/ServerDefinitions.cpp
|
||||||
src/ripple/rpc/handlers/ServerInfo.cpp
|
src/ripple/rpc/handlers/ServerInfo.cpp
|
||||||
src/ripple/rpc/handlers/ServerState.cpp
|
src/ripple/rpc/handlers/ServerState.cpp
|
||||||
src/ripple/rpc/handlers/SignFor.cpp
|
src/ripple/rpc/handlers/SignFor.cpp
|
||||||
@@ -656,6 +668,7 @@ target_sources (rippled PRIVATE
|
|||||||
src/ripple/rpc/handlers/ValidatorListSites.cpp
|
src/ripple/rpc/handlers/ValidatorListSites.cpp
|
||||||
src/ripple/rpc/handlers/Validators.cpp
|
src/ripple/rpc/handlers/Validators.cpp
|
||||||
src/ripple/rpc/handlers/WalletPropose.cpp
|
src/ripple/rpc/handlers/WalletPropose.cpp
|
||||||
|
src/ripple/rpc/handlers/Catalogue.cpp
|
||||||
src/ripple/rpc/impl/DeliveredAmount.cpp
|
src/ripple/rpc/impl/DeliveredAmount.cpp
|
||||||
src/ripple/rpc/impl/Handler.cpp
|
src/ripple/rpc/impl/Handler.cpp
|
||||||
src/ripple/rpc/impl/LegacyPathFind.cpp
|
src/ripple/rpc/impl/LegacyPathFind.cpp
|
||||||
@@ -667,6 +680,9 @@ target_sources (rippled PRIVATE
|
|||||||
src/ripple/rpc/impl/ShardVerificationScheduler.cpp
|
src/ripple/rpc/impl/ShardVerificationScheduler.cpp
|
||||||
src/ripple/rpc/impl/Status.cpp
|
src/ripple/rpc/impl/Status.cpp
|
||||||
src/ripple/rpc/impl/TransactionSign.cpp
|
src/ripple/rpc/impl/TransactionSign.cpp
|
||||||
|
src/ripple/rpc/impl/NFTokenID.cpp
|
||||||
|
src/ripple/rpc/impl/NFTokenOfferID.cpp
|
||||||
|
src/ripple/rpc/impl/NFTSyntheticSerializer.cpp
|
||||||
#[===============================[
|
#[===============================[
|
||||||
main sources:
|
main sources:
|
||||||
subdir: perflog
|
subdir: perflog
|
||||||
@@ -702,8 +718,10 @@ if (tests)
|
|||||||
src/test/app/AccountDelete_test.cpp
|
src/test/app/AccountDelete_test.cpp
|
||||||
src/test/app/AccountTxPaging_test.cpp
|
src/test/app/AccountTxPaging_test.cpp
|
||||||
src/test/app/AmendmentTable_test.cpp
|
src/test/app/AmendmentTable_test.cpp
|
||||||
|
src/test/app/BaseFee_test.cpp
|
||||||
src/test/app/Check_test.cpp
|
src/test/app/Check_test.cpp
|
||||||
src/test/app/ClaimReward_test.cpp
|
src/test/app/ClaimReward_test.cpp
|
||||||
|
src/test/app/Clawback_test.cpp
|
||||||
src/test/app/CrossingLimits_test.cpp
|
src/test/app/CrossingLimits_test.cpp
|
||||||
src/test/app/DeliverMin_test.cpp
|
src/test/app/DeliverMin_test.cpp
|
||||||
src/test/app/DepositAuth_test.cpp
|
src/test/app/DepositAuth_test.cpp
|
||||||
@@ -734,17 +752,23 @@ if (tests)
|
|||||||
src/test/app/Path_test.cpp
|
src/test/app/Path_test.cpp
|
||||||
src/test/app/PayChan_test.cpp
|
src/test/app/PayChan_test.cpp
|
||||||
src/test/app/PayStrand_test.cpp
|
src/test/app/PayStrand_test.cpp
|
||||||
|
src/test/app/PreviousTxn_test.cpp
|
||||||
src/test/app/PseudoTx_test.cpp
|
src/test/app/PseudoTx_test.cpp
|
||||||
src/test/app/RCLCensorshipDetector_test.cpp
|
src/test/app/RCLCensorshipDetector_test.cpp
|
||||||
src/test/app/RCLValidations_test.cpp
|
src/test/app/RCLValidations_test.cpp
|
||||||
src/test/app/Regression_test.cpp
|
src/test/app/Regression_test.cpp
|
||||||
|
src/test/app/Remit_test.cpp
|
||||||
src/test/app/SHAMapStore_test.cpp
|
src/test/app/SHAMapStore_test.cpp
|
||||||
src/test/app/SetAuth_test.cpp
|
src/test/app/SetAuth_test.cpp
|
||||||
|
src/test/app/SetHook_test.cpp
|
||||||
|
src/test/app/SetHookTSH_test.cpp
|
||||||
src/test/app/SetRegularKey_test.cpp
|
src/test/app/SetRegularKey_test.cpp
|
||||||
|
src/test/app/SetRemarks_test.cpp
|
||||||
src/test/app/SetTrust_test.cpp
|
src/test/app/SetTrust_test.cpp
|
||||||
src/test/app/Taker_test.cpp
|
src/test/app/Taker_test.cpp
|
||||||
src/test/app/TheoreticalQuality_test.cpp
|
src/test/app/TheoreticalQuality_test.cpp
|
||||||
src/test/app/Ticket_test.cpp
|
src/test/app/Ticket_test.cpp
|
||||||
|
src/test/app/Touch_test.cpp
|
||||||
src/test/app/Transaction_ordering_test.cpp
|
src/test/app/Transaction_ordering_test.cpp
|
||||||
src/test/app/TrustAndBalance_test.cpp
|
src/test/app/TrustAndBalance_test.cpp
|
||||||
src/test/app/TxQ_test.cpp
|
src/test/app/TxQ_test.cpp
|
||||||
@@ -752,7 +776,7 @@ if (tests)
|
|||||||
src/test/app/ValidatorKeys_test.cpp
|
src/test/app/ValidatorKeys_test.cpp
|
||||||
src/test/app/ValidatorList_test.cpp
|
src/test/app/ValidatorList_test.cpp
|
||||||
src/test/app/ValidatorSite_test.cpp
|
src/test/app/ValidatorSite_test.cpp
|
||||||
src/test/app/SetHook_test.cpp
|
src/test/app/Wildcard_test.cpp
|
||||||
src/test/app/XahauGenesis_test.cpp
|
src/test/app/XahauGenesis_test.cpp
|
||||||
src/test/app/tx/apply_test.cpp
|
src/test/app/tx/apply_test.cpp
|
||||||
#[===============================[
|
#[===============================[
|
||||||
@@ -864,28 +888,40 @@ if (tests)
|
|||||||
src/test/jtx/impl/delivermin.cpp
|
src/test/jtx/impl/delivermin.cpp
|
||||||
src/test/jtx/impl/deposit.cpp
|
src/test/jtx/impl/deposit.cpp
|
||||||
src/test/jtx/impl/envconfig.cpp
|
src/test/jtx/impl/envconfig.cpp
|
||||||
|
src/test/jtx/impl/escrow.cpp
|
||||||
src/test/jtx/impl/fee.cpp
|
src/test/jtx/impl/fee.cpp
|
||||||
src/test/jtx/impl/flags.cpp
|
src/test/jtx/impl/flags.cpp
|
||||||
|
src/test/jtx/impl/genesis.cpp
|
||||||
|
src/test/jtx/impl/import.cpp
|
||||||
src/test/jtx/impl/invoice_id.cpp
|
src/test/jtx/impl/invoice_id.cpp
|
||||||
|
src/test/jtx/impl/invoke.cpp
|
||||||
src/test/jtx/impl/jtx_json.cpp
|
src/test/jtx/impl/jtx_json.cpp
|
||||||
src/test/jtx/impl/last_ledger_sequence.cpp
|
src/test/jtx/impl/last_ledger_sequence.cpp
|
||||||
src/test/jtx/impl/memo.cpp
|
src/test/jtx/impl/memo.cpp
|
||||||
src/test/jtx/impl/multisign.cpp
|
src/test/jtx/impl/multisign.cpp
|
||||||
|
src/test/jtx/impl/network.cpp
|
||||||
src/test/jtx/impl/offer.cpp
|
src/test/jtx/impl/offer.cpp
|
||||||
src/test/jtx/impl/owners.cpp
|
src/test/jtx/impl/owners.cpp
|
||||||
src/test/jtx/impl/paths.cpp
|
src/test/jtx/impl/paths.cpp
|
||||||
src/test/jtx/impl/pay.cpp
|
src/test/jtx/impl/pay.cpp
|
||||||
|
src/test/jtx/impl/paychan.cpp
|
||||||
src/test/jtx/impl/quality2.cpp
|
src/test/jtx/impl/quality2.cpp
|
||||||
src/test/jtx/impl/rate.cpp
|
src/test/jtx/impl/rate.cpp
|
||||||
src/test/jtx/impl/regkey.cpp
|
src/test/jtx/impl/regkey.cpp
|
||||||
|
src/test/jtx/impl/reward.cpp
|
||||||
|
src/test/jtx/impl/remarks.cpp
|
||||||
|
src/test/jtx/impl/remit.cpp
|
||||||
src/test/jtx/impl/sendmax.cpp
|
src/test/jtx/impl/sendmax.cpp
|
||||||
src/test/jtx/impl/seq.cpp
|
src/test/jtx/impl/seq.cpp
|
||||||
src/test/jtx/impl/sig.cpp
|
src/test/jtx/impl/sig.cpp
|
||||||
src/test/jtx/impl/tag.cpp
|
src/test/jtx/impl/tag.cpp
|
||||||
|
src/test/jtx/impl/TestHelpers.cpp
|
||||||
src/test/jtx/impl/ticket.cpp
|
src/test/jtx/impl/ticket.cpp
|
||||||
src/test/jtx/impl/token.cpp
|
src/test/jtx/impl/token.cpp
|
||||||
src/test/jtx/impl/trust.cpp
|
src/test/jtx/impl/trust.cpp
|
||||||
src/test/jtx/impl/txflags.cpp
|
src/test/jtx/impl/txflags.cpp
|
||||||
|
src/test/jtx/impl/unl.cpp
|
||||||
|
src/test/jtx/impl/uritoken.cpp
|
||||||
src/test/jtx/impl/utility.cpp
|
src/test/jtx/impl/utility.cpp
|
||||||
|
|
||||||
#[===============================[
|
#[===============================[
|
||||||
@@ -958,6 +994,11 @@ if (tests)
|
|||||||
subdir: resource
|
subdir: resource
|
||||||
#]===============================]
|
#]===============================]
|
||||||
src/test/resource/Logic_test.cpp
|
src/test/resource/Logic_test.cpp
|
||||||
|
#[===============================[
|
||||||
|
test sources:
|
||||||
|
subdir: rdb
|
||||||
|
#]===============================]
|
||||||
|
src/test/rdb/RelationalDatabase_test.cpp
|
||||||
#[===============================[
|
#[===============================[
|
||||||
test sources:
|
test sources:
|
||||||
subdir: rpc
|
subdir: rpc
|
||||||
@@ -967,10 +1008,12 @@ if (tests)
|
|||||||
src/test/rpc/AccountLinesRPC_test.cpp
|
src/test/rpc/AccountLinesRPC_test.cpp
|
||||||
src/test/rpc/AccountObjects_test.cpp
|
src/test/rpc/AccountObjects_test.cpp
|
||||||
src/test/rpc/AccountOffers_test.cpp
|
src/test/rpc/AccountOffers_test.cpp
|
||||||
|
src/test/rpc/AccountNamespace_test.cpp
|
||||||
src/test/rpc/AccountSet_test.cpp
|
src/test/rpc/AccountSet_test.cpp
|
||||||
src/test/rpc/AccountTx_test.cpp
|
src/test/rpc/AccountTx_test.cpp
|
||||||
src/test/rpc/AmendmentBlocked_test.cpp
|
src/test/rpc/AmendmentBlocked_test.cpp
|
||||||
src/test/rpc/Book_test.cpp
|
src/test/rpc/Book_test.cpp
|
||||||
|
src/test/rpc/Catalogue_test.cpp
|
||||||
src/test/rpc/DepositAuthorized_test.cpp
|
src/test/rpc/DepositAuthorized_test.cpp
|
||||||
src/test/rpc/DeliveredAmount_test.cpp
|
src/test/rpc/DeliveredAmount_test.cpp
|
||||||
src/test/rpc/Feature_test.cpp
|
src/test/rpc/Feature_test.cpp
|
||||||
@@ -993,6 +1036,7 @@ if (tests)
|
|||||||
src/test/rpc/RPCCall_test.cpp
|
src/test/rpc/RPCCall_test.cpp
|
||||||
src/test/rpc/RPCOverload_test.cpp
|
src/test/rpc/RPCOverload_test.cpp
|
||||||
src/test/rpc/RobustTransaction_test.cpp
|
src/test/rpc/RobustTransaction_test.cpp
|
||||||
|
src/test/rpc/ServerDefinitions_test.cpp
|
||||||
src/test/rpc/ServerInfo_test.cpp
|
src/test/rpc/ServerInfo_test.cpp
|
||||||
src/test/rpc/ShardArchiveHandler_test.cpp
|
src/test/rpc/ShardArchiveHandler_test.cpp
|
||||||
src/test/rpc/Status_test.cpp
|
src/test/rpc/Status_test.cpp
|
||||||
@@ -1028,6 +1072,11 @@ target_link_libraries (rippled
|
|||||||
Ripple::opts
|
Ripple::opts
|
||||||
Ripple::libs
|
Ripple::libs
|
||||||
Ripple::xrpl_core
|
Ripple::xrpl_core
|
||||||
|
# Workaround for a Conan 1.x bug that prevents static linking of libstdc++
|
||||||
|
# when a dependency (snappy) modifies system_libs. See the comment in
|
||||||
|
# external/snappy/conanfile.py for a full explanation.
|
||||||
|
# This is likely not strictly necessary, but listed explicitly as a good practice.
|
||||||
|
m
|
||||||
)
|
)
|
||||||
exclude_if_included (rippled)
|
exclude_if_included (rippled)
|
||||||
# define a macro for tests that might need to
|
# define a macro for tests that might need to
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
#[===================================================================[
|
#[===================================================================[
|
||||||
docs target (optional)
|
docs target (optional)
|
||||||
#]===================================================================]
|
#]===================================================================]
|
||||||
|
|
||||||
|
# Early return if the `docs` directory is missing,
|
||||||
|
# e.g. when we are building a Conan package.
|
||||||
|
if(NOT EXISTS docs)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
if (tests)
|
if (tests)
|
||||||
find_package (Doxygen)
|
find_package (Doxygen)
|
||||||
if (NOT TARGET Doxygen::doxygen)
|
if (NOT TARGET Doxygen::doxygen)
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
install (
|
install (
|
||||||
TARGETS
|
TARGETS
|
||||||
ed25519-donna
|
|
||||||
common
|
common
|
||||||
opts
|
opts
|
||||||
ripple_syslibs
|
ripple_syslibs
|
||||||
@@ -16,17 +15,6 @@ install (
|
|||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION bin
|
||||||
INCLUDES DESTINATION include)
|
INCLUDES DESTINATION include)
|
||||||
|
|
||||||
if(${INSTALL_SECP256K1})
|
|
||||||
install (
|
|
||||||
TARGETS
|
|
||||||
secp256k1
|
|
||||||
EXPORT RippleExports
|
|
||||||
LIBRARY DESTINATION lib
|
|
||||||
ARCHIVE DESTINATION lib
|
|
||||||
RUNTIME DESTINATION bin
|
|
||||||
INCLUDES DESTINATION include)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
install (EXPORT RippleExports
|
install (EXPORT RippleExports
|
||||||
FILE RippleTargets.cmake
|
FILE RippleTargets.cmake
|
||||||
NAMESPACE Ripple::
|
NAMESPACE Ripple::
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ if (is_multiconfig)
|
|||||||
file(GLOB md_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS
|
file(GLOB md_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS
|
||||||
*.md)
|
*.md)
|
||||||
LIST(APPEND all_sources ${md_files})
|
LIST(APPEND all_sources ${md_files})
|
||||||
foreach (_target secp256k1 ed25519-donna pbufs xrpl_core rippled)
|
foreach (_target secp256k1::secp256k1 ed25519::ed25519 pbufs xrpl_core rippled)
|
||||||
get_target_property (_type ${_target} TYPE)
|
get_target_property (_type ${_target} TYPE)
|
||||||
if(_type STREQUAL "INTERFACE_LIBRARY")
|
if(_type STREQUAL "INTERFACE_LIBRARY")
|
||||||
continue()
|
continue()
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH prefix path..this is where we will download
|
|
||||||
and build any ExternalProjects, and they will hopefully
|
|
||||||
survive across build directory deletion (manual cleans)
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
string (REGEX REPLACE "[ \\/%]+" "_" gen_for_path ${CMAKE_GENERATOR})
|
|
||||||
string (TOLOWER ${gen_for_path} gen_for_path)
|
|
||||||
# HACK: trying to shorten paths for windows CI (which hits 260 MAXPATH easily)
|
|
||||||
# @see: https://issues.jenkins-ci.org/browse/JENKINS-38706?focusedCommentId=339847
|
|
||||||
string (REPLACE "visual_studio" "vs" gen_for_path ${gen_for_path})
|
|
||||||
if (NOT DEFINED NIH_CACHE_ROOT)
|
|
||||||
if (DEFINED ENV{NIH_CACHE_ROOT})
|
|
||||||
set (NIH_CACHE_ROOT $ENV{NIH_CACHE_ROOT})
|
|
||||||
else ()
|
|
||||||
set (NIH_CACHE_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/.nih_c")
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
set (nih_cache_path
|
|
||||||
"${NIH_CACHE_ROOT}/${gen_for_path}/${CMAKE_CXX_COMPILER_ID}_${CMAKE_CXX_COMPILER_VERSION}")
|
|
||||||
if (NOT is_multiconfig)
|
|
||||||
set (nih_cache_path "${nih_cache_path}/${CMAKE_BUILD_TYPE}")
|
|
||||||
endif ()
|
|
||||||
file(TO_CMAKE_PATH "${nih_cache_path}" nih_cache_path)
|
|
||||||
message (STATUS "NIH-EP cache path: ${nih_cache_path}")
|
|
||||||
## two convenience variables:
|
|
||||||
set (ep_lib_prefix ${CMAKE_STATIC_LIBRARY_PREFIX})
|
|
||||||
set (ep_lib_suffix ${CMAKE_STATIC_LIBRARY_SUFFIX})
|
|
||||||
|
|
||||||
# this is a setting for FetchContent and needs to be
|
|
||||||
# a cache variable
|
|
||||||
# https://cmake.org/cmake/help/latest/module/FetchContent.html#populating-the-content
|
|
||||||
set (FETCHCONTENT_BASE_DIR ${nih_cache_path} CACHE STRING "" FORCE)
|
|
||||||
@@ -1,197 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
package/container targets - (optional)
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
if (is_root_project)
|
|
||||||
if (NOT DOCKER)
|
|
||||||
find_program (DOCKER docker)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (DOCKER)
|
|
||||||
# if no container label is provided, use current git hash
|
|
||||||
git_hash (commit_hash)
|
|
||||||
if (NOT container_label)
|
|
||||||
set (container_label ${commit_hash})
|
|
||||||
endif ()
|
|
||||||
message (STATUS "using [${container_label}] as build container tag...")
|
|
||||||
|
|
||||||
file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/packages)
|
|
||||||
file (MAKE_DIRECTORY ${NIH_CACHE_ROOT}/pkgbuild)
|
|
||||||
if (is_linux)
|
|
||||||
execute_process (COMMAND id -u
|
|
||||||
OUTPUT_VARIABLE DOCKER_USER_ID
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
message (STATUS "docker local user id: ${DOCKER_USER_ID}")
|
|
||||||
execute_process (COMMAND id -g
|
|
||||||
OUTPUT_VARIABLE DOCKER_GROUP_ID
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
message (STATUS "docker local group id: ${DOCKER_GROUP_ID}")
|
|
||||||
endif ()
|
|
||||||
if (DOCKER_USER_ID AND DOCKER_GROUP_ID)
|
|
||||||
set(map_user TRUE)
|
|
||||||
endif ()
|
|
||||||
#[===================================================================[
|
|
||||||
rpm
|
|
||||||
#]===================================================================]
|
|
||||||
add_custom_target (rpm_container
|
|
||||||
docker build
|
|
||||||
--pull
|
|
||||||
--build-arg GIT_COMMIT=${commit_hash}
|
|
||||||
-t rippleci/rippled-rpm-builder:${container_label}
|
|
||||||
$<$<BOOL:${rpm_cache_from}>:--cache-from=${rpm_cache_from}>
|
|
||||||
-f centos-builder/Dockerfile .
|
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Builds/containers
|
|
||||||
VERBATIM
|
|
||||||
USES_TERMINAL
|
|
||||||
COMMAND_EXPAND_LISTS
|
|
||||||
SOURCES
|
|
||||||
Builds/containers/centos-builder/Dockerfile
|
|
||||||
Builds/containers/centos-builder/centos_setup.sh
|
|
||||||
Builds/containers/shared/update-rippled.sh
|
|
||||||
Builds/containers/shared/update_sources.sh
|
|
||||||
Builds/containers/shared/rippled.service
|
|
||||||
Builds/containers/shared/rippled-reporting.service
|
|
||||||
Builds/containers/packaging/rpm/rippled.spec
|
|
||||||
Builds/containers/packaging/rpm/build_rpm.sh
|
|
||||||
Builds/containers/packaging/rpm/50-rippled.preset
|
|
||||||
Builds/containers/packaging/rpm/50-rippled-reporting.preset
|
|
||||||
bin/getRippledInfo
|
|
||||||
)
|
|
||||||
exclude_from_default (rpm_container)
|
|
||||||
add_custom_target (rpm
|
|
||||||
docker run
|
|
||||||
-e NIH_CACHE_ROOT=/opt/rippled_bld/pkg/.nih_c
|
|
||||||
-v ${NIH_CACHE_ROOT}/pkgbuild:/opt/rippled_bld/pkg/.nih_c
|
|
||||||
-v ${CMAKE_CURRENT_SOURCE_DIR}:/opt/rippled_bld/pkg/rippled
|
|
||||||
-v ${CMAKE_CURRENT_BINARY_DIR}/packages:/opt/rippled_bld/pkg/out
|
|
||||||
-t rippleci/rippled-rpm-builder:${container_label}
|
|
||||||
/bin/bash -c "cp -fpu rippled/Builds/containers/packaging/rpm/build_rpm.sh . && ./build_rpm.sh"
|
|
||||||
VERBATIM
|
|
||||||
USES_TERMINAL
|
|
||||||
COMMAND_EXPAND_LISTS
|
|
||||||
SOURCES
|
|
||||||
Builds/containers/packaging/rpm/rippled.spec
|
|
||||||
)
|
|
||||||
exclude_from_default (rpm)
|
|
||||||
if (NOT have_package_container)
|
|
||||||
add_dependencies(rpm rpm_container)
|
|
||||||
endif ()
|
|
||||||
#[===================================================================[
|
|
||||||
dpkg
|
|
||||||
#]===================================================================]
|
|
||||||
# currently use ubuntu 18.04 as a base b/c it has one of
|
|
||||||
# the lower versions of libc among ubuntu and debian releases.
|
|
||||||
# we could change this in the future and build with some other deb
|
|
||||||
# based system.
|
|
||||||
add_custom_target (dpkg_container
|
|
||||||
docker build
|
|
||||||
--pull
|
|
||||||
--build-arg DIST_TAG=18.04
|
|
||||||
--build-arg GIT_COMMIT=${commit_hash}
|
|
||||||
-t rippled-dpkg-builder:${container_label}
|
|
||||||
$<$<BOOL:${dpkg_cache_from}>:--cache-from=${dpkg_cache_from}>
|
|
||||||
-f ubuntu-builder/Dockerfile .
|
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Builds/containers
|
|
||||||
VERBATIM
|
|
||||||
USES_TERMINAL
|
|
||||||
COMMAND_EXPAND_LISTS
|
|
||||||
SOURCES
|
|
||||||
Builds/containers/packaging/dpkg/debian/rippled-reporting.links
|
|
||||||
Builds/containers/packaging/dpkg/debian/copyright
|
|
||||||
Builds/containers/packaging/dpkg/debian/rules
|
|
||||||
Builds/containers/packaging/dpkg/debian/rippled-reporting.install
|
|
||||||
Builds/containers/packaging/dpkg/debian/rippled-reporting.postinst
|
|
||||||
Builds/containers/packaging/dpkg/debian/rippled.links
|
|
||||||
Builds/containers/packaging/dpkg/debian/rippled.prerm
|
|
||||||
Builds/containers/packaging/dpkg/debian/rippled.postinst
|
|
||||||
Builds/containers/packaging/dpkg/debian/rippled-dev.install
|
|
||||||
Builds/containers/packaging/dpkg/debian/dirs
|
|
||||||
Builds/containers/packaging/dpkg/debian/rippled.postrm
|
|
||||||
Builds/containers/packaging/dpkg/debian/rippled.conffiles
|
|
||||||
Builds/containers/packaging/dpkg/debian/compat
|
|
||||||
Builds/containers/packaging/dpkg/debian/source/format
|
|
||||||
Builds/containers/packaging/dpkg/debian/source/local-options
|
|
||||||
Builds/containers/packaging/dpkg/debian/README.Debian
|
|
||||||
Builds/containers/packaging/dpkg/debian/rippled.install
|
|
||||||
Builds/containers/packaging/dpkg/debian/rippled.preinst
|
|
||||||
Builds/containers/packaging/dpkg/debian/docs
|
|
||||||
Builds/containers/packaging/dpkg/debian/control
|
|
||||||
Builds/containers/packaging/dpkg/debian/rippled-reporting.dirs
|
|
||||||
Builds/containers/packaging/dpkg/build_dpkg.sh
|
|
||||||
Builds/containers/ubuntu-builder/Dockerfile
|
|
||||||
Builds/containers/ubuntu-builder/ubuntu_setup.sh
|
|
||||||
bin/getRippledInfo
|
|
||||||
Builds/containers/shared/install_cmake.sh
|
|
||||||
Builds/containers/shared/update-rippled.sh
|
|
||||||
Builds/containers/shared/update_sources.sh
|
|
||||||
Builds/containers/shared/rippled.service
|
|
||||||
Builds/containers/shared/rippled-reporting.service
|
|
||||||
Builds/containers/shared/rippled-logrotate
|
|
||||||
Builds/containers/shared/update-rippled-cron
|
|
||||||
)
|
|
||||||
exclude_from_default (dpkg_container)
|
|
||||||
add_custom_target (dpkg
|
|
||||||
docker run
|
|
||||||
-e NIH_CACHE_ROOT=/opt/rippled_bld/pkg/.nih_c
|
|
||||||
-v ${NIH_CACHE_ROOT}/pkgbuild:/opt/rippled_bld/pkg/.nih_c
|
|
||||||
-v ${CMAKE_CURRENT_SOURCE_DIR}:/opt/rippled_bld/pkg/rippled
|
|
||||||
-v ${CMAKE_CURRENT_BINARY_DIR}/packages:/opt/rippled_bld/pkg/out
|
|
||||||
-t rippled-dpkg-builder:${container_label}
|
|
||||||
/bin/bash -c "cp -fpu rippled/Builds/containers/packaging/dpkg/build_dpkg.sh . && ./build_dpkg.sh"
|
|
||||||
VERBATIM
|
|
||||||
USES_TERMINAL
|
|
||||||
COMMAND_EXPAND_LISTS
|
|
||||||
SOURCES
|
|
||||||
Builds/containers/packaging/dpkg/debian/control
|
|
||||||
)
|
|
||||||
exclude_from_default (dpkg)
|
|
||||||
if (NOT have_package_container)
|
|
||||||
add_dependencies(dpkg dpkg_container)
|
|
||||||
endif ()
|
|
||||||
#[===================================================================[
|
|
||||||
ci container
|
|
||||||
#]===================================================================]
|
|
||||||
# now use the same ubuntu image for our travis-ci docker images,
|
|
||||||
# but we use a newer distro (18.04 vs 16.04).
|
|
||||||
#
|
|
||||||
# the following steps assume the github pkg repo, but it's possible to
|
|
||||||
# adapt these for other docker hub repositories.
|
|
||||||
#
|
|
||||||
# steps for publishing a new CI image when you make changes:
|
|
||||||
#
|
|
||||||
# mkdir bld.ci && cd bld.ci && cmake -Dpackages_only=ON -Dcontainer_label=CI_LATEST
|
|
||||||
# cmake --build . --target ci_container --verbose
|
|
||||||
# docker tag rippled-ci-builder:CI_LATEST <HUB REPO PATH>/rippled-ci-builder:YYYY-MM-DD
|
|
||||||
# (NOTE: change YYYY-MM-DD to match current date, or use a different
|
|
||||||
# tag/version scheme if you prefer)
|
|
||||||
# docker push <HUB REPO PATH>/rippled-ci-builder:YYYY-MM-DD
|
|
||||||
# (NOTE: <HUB REPO PATH> is probably your user or org name if using
|
|
||||||
# docker hub, or it might be something like
|
|
||||||
# docker.pkg.github.com/ripple/rippled if using the github pkg
|
|
||||||
# registry. for any registry, you will need to be logged-in via
|
|
||||||
# docker and have push access.)
|
|
||||||
#
|
|
||||||
# ...then change the DOCKER_IMAGE line in .travis.yml :
|
|
||||||
# - DOCKER_IMAGE="<HUB REPO PATH>/rippled-ci-builder:YYYY-MM-DD"
|
|
||||||
add_custom_target (ci_container
|
|
||||||
docker build
|
|
||||||
--pull
|
|
||||||
--build-arg DIST_TAG=18.04
|
|
||||||
--build-arg GIT_COMMIT=${commit_hash}
|
|
||||||
--build-arg CI_USE=true
|
|
||||||
-t rippled-ci-builder:${container_label}
|
|
||||||
$<$<BOOL:${ci_cache_from}>:--cache-from=${ci_cache_from}>
|
|
||||||
-f ubuntu-builder/Dockerfile .
|
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Builds/containers
|
|
||||||
VERBATIM
|
|
||||||
USES_TERMINAL
|
|
||||||
COMMAND_EXPAND_LISTS
|
|
||||||
SOURCES
|
|
||||||
Builds/containers/ubuntu-builder/Dockerfile
|
|
||||||
Builds/containers/ubuntu-builder/ubuntu_setup.sh
|
|
||||||
)
|
|
||||||
exclude_from_default (ci_container)
|
|
||||||
else ()
|
|
||||||
message (STATUS "docker NOT found -- won't be able to build containers for packaging")
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
@@ -1,50 +1,4 @@
|
|||||||
#[===================================================================[
|
find_package(Boost 1.86 REQUIRED
|
||||||
NIH dep: boost
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
if((NOT DEFINED BOOST_ROOT) AND(DEFINED ENV{BOOST_ROOT}))
|
|
||||||
set(BOOST_ROOT $ENV{BOOST_ROOT})
|
|
||||||
endif()
|
|
||||||
file(TO_CMAKE_PATH "${BOOST_ROOT}" BOOST_ROOT)
|
|
||||||
if(WIN32 OR CYGWIN)
|
|
||||||
# Workaround for MSVC having two boost versions - x86 and x64 on same PC in stage folders
|
|
||||||
if(DEFINED BOOST_ROOT)
|
|
||||||
if(IS_DIRECTORY ${BOOST_ROOT}/stage64/lib)
|
|
||||||
set(BOOST_LIBRARYDIR ${BOOST_ROOT}/stage64/lib)
|
|
||||||
elseif(IS_DIRECTORY ${BOOST_ROOT}/stage/lib)
|
|
||||||
set(BOOST_LIBRARYDIR ${BOOST_ROOT}/stage/lib)
|
|
||||||
elseif(IS_DIRECTORY ${BOOST_ROOT}/lib)
|
|
||||||
set(BOOST_LIBRARYDIR ${BOOST_ROOT}/lib)
|
|
||||||
else()
|
|
||||||
message(WARNING "Did not find expected boost library dir. "
|
|
||||||
"Defaulting to ${BOOST_ROOT}")
|
|
||||||
set(BOOST_LIBRARYDIR ${BOOST_ROOT})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
message(STATUS "BOOST_ROOT: ${BOOST_ROOT}")
|
|
||||||
message(STATUS "BOOST_LIBRARYDIR: ${BOOST_LIBRARYDIR}")
|
|
||||||
|
|
||||||
# uncomment the following as needed to debug FindBoost issues:
|
|
||||||
#set(Boost_DEBUG ON)
|
|
||||||
|
|
||||||
#[=========================================================[
|
|
||||||
boost dynamic libraries don't trivially support @rpath
|
|
||||||
linking right now (cmake's default), so just force
|
|
||||||
static linking for macos, or if requested on linux by flag
|
|
||||||
#]=========================================================]
|
|
||||||
if(static)
|
|
||||||
set(Boost_USE_STATIC_LIBS ON)
|
|
||||||
endif()
|
|
||||||
set(Boost_USE_MULTITHREADED ON)
|
|
||||||
if(static AND NOT APPLE)
|
|
||||||
set(Boost_USE_STATIC_RUNTIME ON)
|
|
||||||
else()
|
|
||||||
set(Boost_USE_STATIC_RUNTIME OFF)
|
|
||||||
endif()
|
|
||||||
# TBD:
|
|
||||||
# Boost_USE_DEBUG_RUNTIME: When ON, uses Boost libraries linked against the
|
|
||||||
find_package(Boost 1.70 REQUIRED
|
|
||||||
COMPONENTS
|
COMPONENTS
|
||||||
chrono
|
chrono
|
||||||
container
|
container
|
||||||
@@ -55,11 +9,12 @@ find_package(Boost 1.70 REQUIRED
|
|||||||
program_options
|
program_options
|
||||||
regex
|
regex
|
||||||
system
|
system
|
||||||
thread)
|
thread
|
||||||
|
)
|
||||||
|
|
||||||
add_library(ripple_boost INTERFACE)
|
add_library(ripple_boost INTERFACE)
|
||||||
add_library(Ripple::boost ALIAS ripple_boost)
|
add_library(Ripple::boost ALIAS ripple_boost)
|
||||||
if(is_xcode)
|
if(XCODE)
|
||||||
target_include_directories(ripple_boost BEFORE INTERFACE ${Boost_INCLUDE_DIRS})
|
target_include_directories(ripple_boost BEFORE INTERFACE ${Boost_INCLUDE_DIRS})
|
||||||
target_compile_options(ripple_boost INTERFACE --system-header-prefix="boost/")
|
target_compile_options(ripple_boost INTERFACE --system-header-prefix="boost/")
|
||||||
else()
|
else()
|
||||||
@@ -77,6 +32,7 @@ target_link_libraries(ripple_boost
|
|||||||
Boost::program_options
|
Boost::program_options
|
||||||
Boost::regex
|
Boost::regex
|
||||||
Boost::system
|
Boost::system
|
||||||
|
Boost::iostreams
|
||||||
Boost::thread)
|
Boost::thread)
|
||||||
if(Boost_COMPILER)
|
if(Boost_COMPILER)
|
||||||
target_link_libraries(ripple_boost INTERFACE Boost::disable_autolinking)
|
target_link_libraries(ripple_boost INTERFACE Boost::disable_autolinking)
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: ed25519-donna
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
add_library (ed25519-donna STATIC
|
|
||||||
src/ed25519-donna/ed25519.c)
|
|
||||||
target_include_directories (ed25519-donna
|
|
||||||
PUBLIC
|
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
|
|
||||||
$<INSTALL_INTERFACE:include>
|
|
||||||
PRIVATE
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/ed25519-donna)
|
|
||||||
#[=========================================================[
|
|
||||||
NOTE for macos:
|
|
||||||
https://github.com/floodyberry/ed25519-donna/issues/29
|
|
||||||
our source for ed25519-donna-portable.h has been
|
|
||||||
patched to workaround this.
|
|
||||||
#]=========================================================]
|
|
||||||
target_link_libraries (ed25519-donna PUBLIC OpenSSL::SSL)
|
|
||||||
add_library (NIH::ed25519-donna ALIAS ed25519-donna)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE NIH::ed25519-donna)
|
|
||||||
#[===========================[
|
|
||||||
headers installation
|
|
||||||
#]===========================]
|
|
||||||
install (
|
|
||||||
FILES
|
|
||||||
src/ed25519-donna/ed25519.h
|
|
||||||
DESTINATION include/ed25519-donna)
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,47 +0,0 @@
|
|||||||
# - Try to find jemalloc
|
|
||||||
# Once done this will define
|
|
||||||
# JEMALLOC_FOUND - System has jemalloc
|
|
||||||
# JEMALLOC_INCLUDE_DIRS - The jemalloc include directories
|
|
||||||
# JEMALLOC_LIBRARIES - The libraries needed to use jemalloc
|
|
||||||
|
|
||||||
if(NOT USE_BUNDLED_JEMALLOC)
|
|
||||||
find_package(PkgConfig)
|
|
||||||
if (PKG_CONFIG_FOUND)
|
|
||||||
pkg_check_modules(PC_JEMALLOC QUIET jemalloc)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
set(PC_JEMALLOC_INCLUDEDIR)
|
|
||||||
set(PC_JEMALLOC_INCLUDE_DIRS)
|
|
||||||
set(PC_JEMALLOC_LIBDIR)
|
|
||||||
set(PC_JEMALLOC_LIBRARY_DIRS)
|
|
||||||
set(LIMIT_SEARCH NO_DEFAULT_PATH)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(JEMALLOC_DEFINITIONS ${PC_JEMALLOC_CFLAGS_OTHER})
|
|
||||||
|
|
||||||
find_path(JEMALLOC_INCLUDE_DIR jemalloc/jemalloc.h
|
|
||||||
PATHS ${PC_JEMALLOC_INCLUDEDIR} ${PC_JEMALLOC_INCLUDE_DIRS}
|
|
||||||
${LIMIT_SEARCH})
|
|
||||||
|
|
||||||
# If we're asked to use static linkage, add libjemalloc.a as a preferred library name.
|
|
||||||
if(JEMALLOC_USE_STATIC)
|
|
||||||
list(APPEND JEMALLOC_NAMES
|
|
||||||
"${CMAKE_STATIC_LIBRARY_PREFIX}jemalloc${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(APPEND JEMALLOC_NAMES jemalloc)
|
|
||||||
|
|
||||||
find_library(JEMALLOC_LIBRARY NAMES ${JEMALLOC_NAMES}
|
|
||||||
HINTS ${PC_JEMALLOC_LIBDIR} ${PC_JEMALLOC_LIBRARY_DIRS}
|
|
||||||
${LIMIT_SEARCH})
|
|
||||||
|
|
||||||
set(JEMALLOC_LIBRARIES ${JEMALLOC_LIBRARY})
|
|
||||||
set(JEMALLOC_INCLUDE_DIRS ${JEMALLOC_INCLUDE_DIR})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set JEMALLOC_FOUND to TRUE
|
|
||||||
# if all listed variables are TRUE
|
|
||||||
find_package_handle_standard_args(JeMalloc DEFAULT_MSG
|
|
||||||
JEMALLOC_LIBRARY JEMALLOC_INCLUDE_DIR)
|
|
||||||
|
|
||||||
mark_as_advanced(JEMALLOC_INCLUDE_DIR JEMALLOC_LIBRARY)
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
find_package (PkgConfig REQUIRED)
|
|
||||||
pkg_search_module (libarchive_PC QUIET libarchive>=3.4.3)
|
|
||||||
|
|
||||||
if(static)
|
|
||||||
set(LIBARCHIVE_LIB libarchive.a)
|
|
||||||
else()
|
|
||||||
set(LIBARCHIVE_LIB archive)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library (archive
|
|
||||||
NAMES ${LIBARCHIVE_LIB}
|
|
||||||
HINTS
|
|
||||||
${libarchive_PC_LIBDIR}
|
|
||||||
${libarchive_PC_LIBRARY_DIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
|
|
||||||
find_path (LIBARCHIVE_INCLUDE_DIR
|
|
||||||
NAMES archive.h
|
|
||||||
HINTS
|
|
||||||
${libarchive_PC_INCLUDEDIR}
|
|
||||||
${libarchive_PC_INCLUDEDIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
find_package (PkgConfig)
|
|
||||||
if (PKG_CONFIG_FOUND)
|
|
||||||
pkg_search_module (lz4_PC QUIET liblz4>=1.9)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if(static)
|
|
||||||
set(LZ4_LIB liblz4.a)
|
|
||||||
else()
|
|
||||||
set(LZ4_LIB lz4.so)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library (lz4
|
|
||||||
NAMES ${LZ4_LIB}
|
|
||||||
HINTS
|
|
||||||
${lz4_PC_LIBDIR}
|
|
||||||
${lz4_PC_LIBRARY_DIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
|
|
||||||
find_path (LZ4_INCLUDE_DIR
|
|
||||||
NAMES lz4.h
|
|
||||||
HINTS
|
|
||||||
${lz4_PC_INCLUDEDIR}
|
|
||||||
${lz4_PC_INCLUDEDIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
find_package (PkgConfig)
|
|
||||||
if (PKG_CONFIG_FOUND)
|
|
||||||
pkg_search_module (secp256k1_PC QUIET libsecp256k1)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if(static)
|
|
||||||
set(SECP256K1_LIB libsecp256k1.a)
|
|
||||||
else()
|
|
||||||
set(SECP256K1_LIB secp256k1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library(secp256k1
|
|
||||||
NAMES ${SECP256K1_LIB}
|
|
||||||
HINTS
|
|
||||||
${secp256k1_PC_LIBDIR}
|
|
||||||
${secp256k1_PC_LIBRARY_PATHS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
|
|
||||||
find_path (SECP256K1_INCLUDE_DIR
|
|
||||||
NAMES secp256k1.h
|
|
||||||
HINTS
|
|
||||||
${secp256k1_PC_INCLUDEDIR}
|
|
||||||
${secp256k1_PC_INCLUDEDIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
find_package (PkgConfig)
|
|
||||||
if (PKG_CONFIG_FOUND)
|
|
||||||
pkg_search_module (snappy_PC QUIET snappy>=1.1.7)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if(static)
|
|
||||||
set(SNAPPY_LIB libsnappy.a)
|
|
||||||
else()
|
|
||||||
set(SNAPPY_LIB libsnappy.so)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library (snappy
|
|
||||||
NAMES ${SNAPPY_LIB}
|
|
||||||
HINTS
|
|
||||||
${snappy_PC_LIBDIR}
|
|
||||||
${snappy_PC_LIBRARY_DIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
|
|
||||||
find_path (SNAPPY_INCLUDE_DIR
|
|
||||||
NAMES snappy.h
|
|
||||||
HINTS
|
|
||||||
${snappy_PC_INCLUDEDIR}
|
|
||||||
${snappy_PC_INCLUDEDIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
find_package (PkgConfig)
|
|
||||||
if (PKG_CONFIG_FOUND)
|
|
||||||
# TBD - currently no soci pkgconfig
|
|
||||||
#pkg_search_module (soci_PC QUIET libsoci_core>=3.2)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if(static)
|
|
||||||
set(SOCI_LIB libsoci.a)
|
|
||||||
else()
|
|
||||||
set(SOCI_LIB libsoci_core.so)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library (soci
|
|
||||||
NAMES ${SOCI_LIB})
|
|
||||||
|
|
||||||
find_path (SOCI_INCLUDE_DIR
|
|
||||||
NAMES soci/soci.h)
|
|
||||||
|
|
||||||
message("SOCI FOUND AT: ${SOCI_LIB}")
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
find_package (PkgConfig)
|
|
||||||
if (PKG_CONFIG_FOUND)
|
|
||||||
pkg_search_module (sqlite_PC QUIET sqlite3>=3.26.0)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if(static)
|
|
||||||
set(SQLITE_LIB libsqlite3.a)
|
|
||||||
else()
|
|
||||||
set(SQLITE_LIB sqlite3.so)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library (sqlite3
|
|
||||||
NAMES ${SQLITE_LIB}
|
|
||||||
HINTS
|
|
||||||
${sqlite_PC_LIBDIR}
|
|
||||||
${sqlite_PC_LIBRARY_DIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
|
|
||||||
find_path (SQLITE_INCLUDE_DIR
|
|
||||||
NAMES sqlite3.h
|
|
||||||
HINTS
|
|
||||||
${sqlite_PC_INCLUDEDIR}
|
|
||||||
${sqlite_PC_INCLUDEDIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
@@ -1,163 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: libarchive
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
option (local_libarchive "use local build of libarchive." OFF)
|
|
||||||
add_library (archive_lib UNKNOWN IMPORTED GLOBAL)
|
|
||||||
|
|
||||||
if (NOT local_libarchive)
|
|
||||||
if (NOT WIN32)
|
|
||||||
find_package(libarchive_pc REQUIRED)
|
|
||||||
endif ()
|
|
||||||
if (archive)
|
|
||||||
message (STATUS "Found libarchive using pkg-config. Using ${archive}.")
|
|
||||||
set_target_properties (archive_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${archive}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${archive}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${LIBARCHIVE_INCLUDE_DIR})
|
|
||||||
# pkg-config can return extra info for static lib linking
|
|
||||||
# this is probably needed/useful generally, but apply
|
|
||||||
# to APPLE for now (mostly for homebrew)
|
|
||||||
if (APPLE AND static AND libarchive_PC_STATIC_LIBRARIES)
|
|
||||||
message(STATUS "NOTE: libarchive static libs: ${libarchive_PC_STATIC_LIBRARIES}")
|
|
||||||
# also, APPLE seems to need iconv...maybe linux does too (TBD)
|
|
||||||
target_link_libraries (archive_lib
|
|
||||||
INTERFACE iconv ${libarchive_PC_STATIC_LIBRARIES})
|
|
||||||
endif ()
|
|
||||||
else ()
|
|
||||||
## now try searching using the minimal find module that cmake provides
|
|
||||||
find_package(LibArchive 3.4.3 QUIET)
|
|
||||||
if (LibArchive_FOUND)
|
|
||||||
if (static)
|
|
||||||
# find module doesn't find static libs currently, so we re-search
|
|
||||||
get_filename_component(_loc ${LibArchive_LIBRARY} DIRECTORY)
|
|
||||||
find_library(_la_static
|
|
||||||
NAMES libarchive.a archive_static.lib archive.lib
|
|
||||||
PATHS ${_loc})
|
|
||||||
if (_la_static)
|
|
||||||
set (_la_lib ${_la_static})
|
|
||||||
else ()
|
|
||||||
message (WARNING "unable to find libarchive static lib - switching to local build")
|
|
||||||
set (local_libarchive ON CACHE BOOL "" FORCE)
|
|
||||||
endif ()
|
|
||||||
else ()
|
|
||||||
set (_la_lib ${LibArchive_LIBRARY})
|
|
||||||
endif ()
|
|
||||||
if (NOT local_libarchive)
|
|
||||||
message (STATUS "Found libarchive using module/config. Using ${_la_lib}.")
|
|
||||||
set_target_properties (archive_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${_la_lib}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${_la_lib}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${LibArchive_INCLUDE_DIRS})
|
|
||||||
endif ()
|
|
||||||
else ()
|
|
||||||
set (local_libarchive ON CACHE BOOL "" FORCE)
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (local_libarchive)
|
|
||||||
set (lib_post "")
|
|
||||||
if (MSVC)
|
|
||||||
set (lib_post "_static")
|
|
||||||
endif ()
|
|
||||||
ExternalProject_Add (libarchive
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/libarchive/libarchive.git
|
|
||||||
GIT_TAG v3.4.3
|
|
||||||
CMAKE_ARGS
|
|
||||||
# passing the compiler seems to be needed for windows CI, sadly
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DENABLE_LZ4=ON
|
|
||||||
-ULZ4_*
|
|
||||||
-DLZ4_INCLUDE_DIR=$<JOIN:$<TARGET_PROPERTY:lz4_lib,INTERFACE_INCLUDE_DIRECTORIES>,::>
|
|
||||||
# because we are building a static lib, this lz4 library doesn't
|
|
||||||
# actually matter since you can't generally link static libs to other static
|
|
||||||
# libs. The include files are needed, but the library itself is not (until
|
|
||||||
# we link our application, at which point we use the lz4 we built above).
|
|
||||||
# nonetheless, we need to provide a library to libarchive else it will
|
|
||||||
# NOT include lz4 support when configuring
|
|
||||||
-DLZ4_LIBRARY=$<IF:$<CONFIG:Debug>,$<TARGET_PROPERTY:lz4_lib,IMPORTED_LOCATION_DEBUG>,$<TARGET_PROPERTY:lz4_lib,IMPORTED_LOCATION_RELEASE>>
|
|
||||||
-DENABLE_WERROR=OFF
|
|
||||||
-DENABLE_TAR=OFF
|
|
||||||
-DENABLE_TAR_SHARED=OFF
|
|
||||||
-DENABLE_INSTALL=ON
|
|
||||||
-DENABLE_NETTLE=OFF
|
|
||||||
-DENABLE_OPENSSL=OFF
|
|
||||||
-DENABLE_LZO=OFF
|
|
||||||
-DENABLE_LZMA=OFF
|
|
||||||
-DENABLE_ZLIB=OFF
|
|
||||||
-DENABLE_BZip2=OFF
|
|
||||||
-DENABLE_LIBXML2=OFF
|
|
||||||
-DENABLE_EXPAT=OFF
|
|
||||||
-DENABLE_PCREPOSIX=OFF
|
|
||||||
-DENABLE_LibGCC=OFF
|
|
||||||
-DENABLE_CNG=OFF
|
|
||||||
-DENABLE_CPIO=OFF
|
|
||||||
-DENABLE_CPIO_SHARED=OFF
|
|
||||||
-DENABLE_CAT=OFF
|
|
||||||
-DENABLE_CAT_SHARED=OFF
|
|
||||||
-DENABLE_XATTR=OFF
|
|
||||||
-DENABLE_ACL=OFF
|
|
||||||
-DENABLE_ICONV=OFF
|
|
||||||
-DENABLE_TEST=OFF
|
|
||||||
-DENABLE_COVERAGE=OFF
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP"
|
|
||||||
"-DCMAKE_C_FLAGS_DEBUG=-MTd"
|
|
||||||
"-DCMAKE_C_FLAGS_RELEASE=-MT"
|
|
||||||
>
|
|
||||||
LIST_SEPARATOR ::
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--target archive_static
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
$<$<BOOL:${is_multiconfig}>:
|
|
||||||
COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy
|
|
||||||
<BINARY_DIR>/libarchive/$<CONFIG>/${ep_lib_prefix}archive${lib_post}$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/libarchive
|
|
||||||
>
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
DEPENDS lz4_lib
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/libarchive/${ep_lib_prefix}archive${lib_post}${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/libarchive/${ep_lib_prefix}archive${lib_post}_d${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (libarchive BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (libarchive SOURCE_DIR)
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (libarchive)
|
|
||||||
endif ()
|
|
||||||
file (MAKE_DIRECTORY ${SOURCE_DIR}/libarchive)
|
|
||||||
set_target_properties (archive_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/libarchive/${ep_lib_prefix}archive${lib_post}_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/libarchive/${ep_lib_prefix}archive${lib_post}${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR}/libarchive
|
|
||||||
INTERFACE_COMPILE_DEFINITIONS
|
|
||||||
LIBARCHIVE_STATIC)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_dependencies (archive_lib libarchive)
|
|
||||||
target_link_libraries (archive_lib INTERFACE lz4_lib)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE archive_lib)
|
|
||||||
exclude_if_included (libarchive)
|
|
||||||
exclude_if_included (archive_lib)
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: lz4
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
add_library (lz4_lib STATIC IMPORTED GLOBAL)
|
|
||||||
|
|
||||||
if (NOT WIN32)
|
|
||||||
find_package(lz4)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(lz4)
|
|
||||||
set_target_properties (lz4_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${lz4}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${lz4}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${LZ4_INCLUDE_DIR})
|
|
||||||
|
|
||||||
else()
|
|
||||||
ExternalProject_Add (lz4
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/lz4/lz4.git
|
|
||||||
GIT_TAG v1.9.2
|
|
||||||
SOURCE_SUBDIR contrib/cmake_unofficial
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DBUILD_STATIC_LIBS=ON
|
|
||||||
-DBUILD_SHARED_LIBS=OFF
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP"
|
|
||||||
"-DCMAKE_C_FLAGS_DEBUG=-MTd"
|
|
||||||
"-DCMAKE_C_FLAGS_RELEASE=-MT"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--target lz4_static
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
$<$<BOOL:${is_multiconfig}>:
|
|
||||||
COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}lz4$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>
|
|
||||||
>
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}lz4${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}lz4_d${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (lz4 BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (lz4 SOURCE_DIR)
|
|
||||||
|
|
||||||
file (MAKE_DIRECTORY ${SOURCE_DIR}/lz4)
|
|
||||||
set_target_properties (lz4_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}lz4_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}lz4${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR}/lib)
|
|
||||||
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (lz4)
|
|
||||||
endif ()
|
|
||||||
add_dependencies (lz4_lib lz4)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE lz4_lib)
|
|
||||||
exclude_if_included (lz4)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
exclude_if_included (lz4_lib)
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: nudb
|
|
||||||
|
|
||||||
NuDB is header-only, thus is an INTERFACE lib in CMake.
|
|
||||||
TODO: move the library definition into NuDB repo and add
|
|
||||||
proper targets and export/install
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
if (is_root_project) # NuDB not needed in the case of xrpl_core inclusion build
|
|
||||||
add_library (nudb INTERFACE)
|
|
||||||
FetchContent_Declare(
|
|
||||||
nudb_src
|
|
||||||
GIT_REPOSITORY https://github.com/CPPAlliance/NuDB.git
|
|
||||||
GIT_TAG 2.0.5
|
|
||||||
)
|
|
||||||
FetchContent_GetProperties(nudb_src)
|
|
||||||
if(NOT nudb_src_POPULATED)
|
|
||||||
message (STATUS "Pausing to download NuDB...")
|
|
||||||
FetchContent_Populate(nudb_src)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
file(TO_CMAKE_PATH "${nudb_src_SOURCE_DIR}" nudb_src_SOURCE_DIR)
|
|
||||||
# specify as system includes so as to avoid warnings
|
|
||||||
target_include_directories (nudb SYSTEM INTERFACE ${nudb_src_SOURCE_DIR}/include)
|
|
||||||
target_link_libraries (nudb
|
|
||||||
INTERFACE
|
|
||||||
Boost::thread
|
|
||||||
Boost::system)
|
|
||||||
add_library (NIH::nudb ALIAS nudb)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE NIH::nudb)
|
|
||||||
endif ()
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: openssl
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
#[===============================================[
|
|
||||||
OPENSSL_ROOT_DIR is the only variable that
|
|
||||||
FindOpenSSL honors for locating, so convert any
|
|
||||||
OPENSSL_ROOT vars to this
|
|
||||||
#]===============================================]
|
|
||||||
if (NOT DEFINED OPENSSL_ROOT_DIR)
|
|
||||||
if (DEFINED ENV{OPENSSL_ROOT})
|
|
||||||
set (OPENSSL_ROOT_DIR $ENV{OPENSSL_ROOT})
|
|
||||||
elseif (HOMEBREW)
|
|
||||||
execute_process (COMMAND ${HOMEBREW} --prefix openssl
|
|
||||||
OUTPUT_VARIABLE OPENSSL_ROOT_DIR
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
endif ()
|
|
||||||
file (TO_CMAKE_PATH "${OPENSSL_ROOT_DIR}" OPENSSL_ROOT_DIR)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (static)
|
|
||||||
set (OPENSSL_USE_STATIC_LIBS ON)
|
|
||||||
endif ()
|
|
||||||
set (OPENSSL_MSVC_STATIC_RT ON)
|
|
||||||
find_package (OpenSSL 1.1.1 REQUIRED)
|
|
||||||
target_link_libraries (ripple_libs
|
|
||||||
INTERFACE
|
|
||||||
OpenSSL::SSL
|
|
||||||
OpenSSL::Crypto)
|
|
||||||
# disable SSLv2...this can also be done when building/configuring OpenSSL
|
|
||||||
set_target_properties(OpenSSL::SSL PROPERTIES
|
|
||||||
INTERFACE_COMPILE_DEFINITIONS OPENSSL_NO_SSL2)
|
|
||||||
#[=========================================================[
|
|
||||||
https://gitlab.kitware.com/cmake/cmake/issues/16885
|
|
||||||
depending on how openssl is built, it might depend
|
|
||||||
on zlib. In fact, the openssl find package should
|
|
||||||
figure this out for us, but it does not currently...
|
|
||||||
so let's add zlib ourselves to the lib list
|
|
||||||
TODO: investigate linking to static zlib for static
|
|
||||||
build option
|
|
||||||
#]=========================================================]
|
|
||||||
find_package (ZLIB)
|
|
||||||
set (has_zlib FALSE)
|
|
||||||
if (TARGET ZLIB::ZLIB)
|
|
||||||
set_target_properties(OpenSSL::Crypto PROPERTIES
|
|
||||||
INTERFACE_LINK_LIBRARIES ZLIB::ZLIB)
|
|
||||||
set (has_zlib TRUE)
|
|
||||||
endif ()
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
if(reporting)
|
|
||||||
find_package(PostgreSQL)
|
|
||||||
if(NOT PostgreSQL_FOUND)
|
|
||||||
message("find_package did not find postgres")
|
|
||||||
find_library(postgres NAMES pq libpq libpq-dev pq-dev postgresql-devel)
|
|
||||||
find_path(libpq-fe NAMES libpq-fe.h PATH_SUFFIXES postgresql pgsql include)
|
|
||||||
|
|
||||||
if(NOT libpq-fe_FOUND OR NOT postgres_FOUND)
|
|
||||||
message("No system installed Postgres found. Will build")
|
|
||||||
add_library(postgres SHARED IMPORTED GLOBAL)
|
|
||||||
add_library(pgport SHARED IMPORTED GLOBAL)
|
|
||||||
add_library(pgcommon SHARED IMPORTED GLOBAL)
|
|
||||||
ExternalProject_Add(postgres_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/postgres/postgres.git
|
|
||||||
GIT_TAG REL_14_5
|
|
||||||
CONFIGURE_COMMAND ./configure --without-readline > /dev/null
|
|
||||||
BUILD_COMMAND ${CMAKE_COMMAND} -E env --unset=MAKELEVEL make
|
|
||||||
UPDATE_COMMAND ""
|
|
||||||
BUILD_IN_SOURCE 1
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/src/interfaces/libpq/${ep_lib_prefix}pq.a
|
|
||||||
<BINARY_DIR>/src/common/${ep_lib_prefix}pgcommon.a
|
|
||||||
<BINARY_DIR>/src/port/${ep_lib_prefix}pgport.a
|
|
||||||
LOG_BUILD TRUE
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (postgres_src SOURCE_DIR)
|
|
||||||
ExternalProject_Get_Property (postgres_src BINARY_DIR)
|
|
||||||
|
|
||||||
set (postgres_src_SOURCE_DIR "${SOURCE_DIR}")
|
|
||||||
file (MAKE_DIRECTORY ${postgres_src_SOURCE_DIR})
|
|
||||||
list(APPEND INCLUDE_DIRS
|
|
||||||
${SOURCE_DIR}/src/include
|
|
||||||
${SOURCE_DIR}/src/interfaces/libpq
|
|
||||||
)
|
|
||||||
set_target_properties(postgres PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${BINARY_DIR}/src/interfaces/libpq/${ep_lib_prefix}pq.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
"${INCLUDE_DIRS}"
|
|
||||||
)
|
|
||||||
set_target_properties(pgcommon PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${BINARY_DIR}/src/common/${ep_lib_prefix}pgcommon.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
"${INCLUDE_DIRS}"
|
|
||||||
)
|
|
||||||
set_target_properties(pgport PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${BINARY_DIR}/src/port/${ep_lib_prefix}pgport.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
"${INCLUDE_DIRS}"
|
|
||||||
)
|
|
||||||
add_dependencies(postgres postgres_src)
|
|
||||||
add_dependencies(pgcommon postgres_src)
|
|
||||||
add_dependencies(pgport postgres_src)
|
|
||||||
file(TO_CMAKE_PATH "${postgres_src_SOURCE_DIR}" postgres_src_SOURCE_DIR)
|
|
||||||
target_link_libraries(ripple_libs INTERFACE postgres pgcommon pgport)
|
|
||||||
else()
|
|
||||||
message("Found system installed Postgres via find_libary")
|
|
||||||
target_include_directories(ripple_libs INTERFACE ${libpq-fe})
|
|
||||||
target_link_libraries(ripple_libs INTERFACE ${postgres})
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message("Found system installed Postgres via find_package")
|
|
||||||
target_include_directories(ripple_libs INTERFACE ${PostgreSQL_INCLUDE_DIRS})
|
|
||||||
target_link_libraries(ripple_libs INTERFACE ${PostgreSQL_LIBRARIES})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
@@ -1,155 +1,22 @@
|
|||||||
#[===================================================================[
|
find_package(Protobuf 3.8)
|
||||||
import protobuf (lib and compiler) and create a lib
|
|
||||||
from our proto message definitions. If the system protobuf
|
|
||||||
is not found, fallback on EP to download and build a version
|
|
||||||
from official source.
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
if (static)
|
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/proto_gen)
|
||||||
set (Protobuf_USE_STATIC_LIBS ON)
|
set(ccbd ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
endif ()
|
set(CMAKE_CURRENT_BINARY_DIR ${CMAKE_BINARY_DIR}/proto_gen)
|
||||||
find_package (Protobuf 3.8)
|
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS src/ripple/proto/ripple.proto)
|
||||||
if (is_multiconfig)
|
set(CMAKE_CURRENT_BINARY_DIR ${ccbd})
|
||||||
set(protobuf_protoc_lib ${Protobuf_PROTOC_LIBRARIES})
|
|
||||||
else ()
|
|
||||||
string(TOUPPER ${CMAKE_BUILD_TYPE} upper_cmake_build_type)
|
|
||||||
set(protobuf_protoc_lib ${Protobuf_PROTOC_LIBRARY_${upper_cmake_build_type}})
|
|
||||||
endif ()
|
|
||||||
if (local_protobuf OR NOT (Protobuf_FOUND AND Protobuf_PROTOC_EXECUTABLE AND protobuf_protoc_lib))
|
|
||||||
include (GNUInstallDirs)
|
|
||||||
message (STATUS "using local protobuf build.")
|
|
||||||
set(protobuf_reqs Protobuf_PROTOC_EXECUTABLE protobuf_protoc_lib)
|
|
||||||
foreach(lib ${protobuf_reqs})
|
|
||||||
if(NOT ${lib})
|
|
||||||
message(STATUS "Couldn't find ${lib}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
if (WIN32)
|
|
||||||
# protobuf prepends lib even on windows
|
|
||||||
set (pbuf_lib_pre "lib")
|
|
||||||
else ()
|
|
||||||
set (pbuf_lib_pre ${ep_lib_prefix})
|
|
||||||
endif ()
|
|
||||||
# for the external project build of protobuf, we currently ignore the
|
|
||||||
# static option and always build static libs here. This is consistent
|
|
||||||
# with our other EP builds. Dynamic libs in an EP would add complexity
|
|
||||||
# because we'd need to get them into the runtime path, and probably
|
|
||||||
# install them.
|
|
||||||
ExternalProject_Add (protobuf_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/protocolbuffers/protobuf.git
|
|
||||||
GIT_TAG v3.8.0
|
|
||||||
SOURCE_SUBDIR cmake
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
-DCMAKE_INSTALL_PREFIX=<BINARY_DIR>/_installed_
|
|
||||||
-Dprotobuf_BUILD_TESTS=OFF
|
|
||||||
-Dprotobuf_BUILD_EXAMPLES=OFF
|
|
||||||
-Dprotobuf_BUILD_PROTOC_BINARIES=ON
|
|
||||||
-Dprotobuf_MSVC_STATIC_RUNTIME=ON
|
|
||||||
-DBUILD_SHARED_LIBS=OFF
|
|
||||||
-Dprotobuf_BUILD_SHARED_LIBS=OFF
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
-Dprotobuf_DEBUG_POSTFIX=_d
|
|
||||||
-Dprotobuf_WITH_ZLIB=$<IF:$<BOOL:${has_zlib}>,ON,OFF>
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
$<$<BOOL:${unity}>:-DCMAKE_UNITY_BUILD=ON}>
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-GR -Gd -fp:precise -FS -EHa -MP"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND
|
|
||||||
${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --config $<CONFIG> --target install
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protobuf${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protobuf_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protoc${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protoc_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/_installed_/bin/protoc${CMAKE_EXECUTABLE_SUFFIX}
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (protobuf_src BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (protobuf_src SOURCE_DIR)
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (protobuf_src)
|
|
||||||
endif ()
|
|
||||||
exclude_if_included (protobuf_src)
|
|
||||||
|
|
||||||
if (NOT TARGET protobuf::libprotobuf)
|
add_library(pbufs STATIC ${PROTO_SRCS} ${PROTO_HDRS})
|
||||||
add_library (protobuf::libprotobuf STATIC IMPORTED GLOBAL)
|
target_include_directories(pbufs SYSTEM PUBLIC
|
||||||
endif ()
|
${CMAKE_BINARY_DIR}/proto_gen
|
||||||
file (MAKE_DIRECTORY ${BINARY_DIR}/_installed_/include)
|
${CMAKE_BINARY_DIR}/proto_gen/src/ripple/proto
|
||||||
set_target_properties (protobuf::libprotobuf PROPERTIES
|
)
|
||||||
IMPORTED_LOCATION_DEBUG
|
target_link_libraries(pbufs protobuf::libprotobuf)
|
||||||
${BINARY_DIR}/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protobuf_d${ep_lib_suffix}
|
target_compile_options(pbufs
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protobuf${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${BINARY_DIR}/_installed_/include)
|
|
||||||
add_dependencies (protobuf::libprotobuf protobuf_src)
|
|
||||||
exclude_if_included (protobuf::libprotobuf)
|
|
||||||
|
|
||||||
if (NOT TARGET protobuf::libprotoc)
|
|
||||||
add_library (protobuf::libprotoc STATIC IMPORTED GLOBAL)
|
|
||||||
endif ()
|
|
||||||
set_target_properties (protobuf::libprotoc PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protoc_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protoc${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${BINARY_DIR}/_installed_/include)
|
|
||||||
add_dependencies (protobuf::libprotoc protobuf_src)
|
|
||||||
exclude_if_included (protobuf::libprotoc)
|
|
||||||
|
|
||||||
if (NOT TARGET protobuf::protoc)
|
|
||||||
add_executable (protobuf::protoc IMPORTED)
|
|
||||||
exclude_if_included (protobuf::protoc)
|
|
||||||
endif ()
|
|
||||||
set_target_properties (protobuf::protoc PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${BINARY_DIR}/_installed_/bin/protoc${CMAKE_EXECUTABLE_SUFFIX}")
|
|
||||||
add_dependencies (protobuf::protoc protobuf_src)
|
|
||||||
else ()
|
|
||||||
if (NOT TARGET protobuf::protoc)
|
|
||||||
if (EXISTS "${Protobuf_PROTOC_EXECUTABLE}")
|
|
||||||
add_executable (protobuf::protoc IMPORTED)
|
|
||||||
set_target_properties (protobuf::protoc PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${Protobuf_PROTOC_EXECUTABLE}")
|
|
||||||
else ()
|
|
||||||
message (FATAL_ERROR "Protobuf import failed")
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
file (MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/proto_gen)
|
|
||||||
set (save_CBD ${CMAKE_CURRENT_BINARY_DIR})
|
|
||||||
set (CMAKE_CURRENT_BINARY_DIR ${CMAKE_BINARY_DIR}/proto_gen)
|
|
||||||
protobuf_generate_cpp (
|
|
||||||
PROTO_SRCS
|
|
||||||
PROTO_HDRS
|
|
||||||
src/ripple/proto/ripple.proto)
|
|
||||||
set (CMAKE_CURRENT_BINARY_DIR ${save_CBD})
|
|
||||||
|
|
||||||
add_library (pbufs STATIC ${PROTO_SRCS} ${PROTO_HDRS})
|
|
||||||
|
|
||||||
target_include_directories (pbufs PRIVATE src)
|
|
||||||
target_include_directories (pbufs
|
|
||||||
SYSTEM PUBLIC ${CMAKE_BINARY_DIR}/proto_gen)
|
|
||||||
target_link_libraries (pbufs protobuf::libprotobuf)
|
|
||||||
target_compile_options (pbufs
|
|
||||||
PUBLIC
|
PUBLIC
|
||||||
$<$<BOOL:${is_xcode}>:
|
$<$<BOOL:${XCODE}>:
|
||||||
--system-header-prefix="google/protobuf"
|
--system-header-prefix="google/protobuf"
|
||||||
-Wno-deprecated-dynamic-exception-spec
|
-Wno-deprecated-dynamic-exception-spec
|
||||||
>)
|
>
|
||||||
add_library (Ripple::pbufs ALIAS pbufs)
|
)
|
||||||
target_link_libraries (ripple_libs INTERFACE Ripple::pbufs)
|
add_library(Ripple::pbufs ALIAS pbufs)
|
||||||
exclude_if_included (pbufs)
|
|
||||||
@@ -1,177 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: rocksdb
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
add_library (rocksdb_lib UNKNOWN IMPORTED GLOBAL)
|
|
||||||
set_target_properties (rocksdb_lib
|
|
||||||
PROPERTIES INTERFACE_COMPILE_DEFINITIONS RIPPLE_ROCKSDB_AVAILABLE=1)
|
|
||||||
|
|
||||||
option (local_rocksdb "use local build of rocksdb." OFF)
|
|
||||||
if (NOT local_rocksdb)
|
|
||||||
find_package (RocksDB 6.27 QUIET CONFIG)
|
|
||||||
if (TARGET RocksDB::rocksdb)
|
|
||||||
message (STATUS "Found RocksDB using config.")
|
|
||||||
get_target_property (_rockslib_l RocksDB::rocksdb IMPORTED_LOCATION_DEBUG)
|
|
||||||
if (_rockslib_l)
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES IMPORTED_LOCATION_DEBUG ${_rockslib_l})
|
|
||||||
endif ()
|
|
||||||
get_target_property (_rockslib_l RocksDB::rocksdb IMPORTED_LOCATION_RELEASE)
|
|
||||||
if (_rockslib_l)
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES IMPORTED_LOCATION_RELEASE ${_rockslib_l})
|
|
||||||
endif ()
|
|
||||||
get_target_property (_rockslib_l RocksDB::rocksdb IMPORTED_LOCATION)
|
|
||||||
if (_rockslib_l)
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES IMPORTED_LOCATION ${_rockslib_l})
|
|
||||||
endif ()
|
|
||||||
get_target_property (_rockslib_i RocksDB::rocksdb INTERFACE_INCLUDE_DIRECTORIES)
|
|
||||||
if (_rockslib_i)
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${_rockslib_i})
|
|
||||||
endif ()
|
|
||||||
target_link_libraries (ripple_libs INTERFACE RocksDB::rocksdb)
|
|
||||||
else ()
|
|
||||||
# using a find module with rocksdb is difficult because
|
|
||||||
# you have no idea how it was configured (transitive dependencies).
|
|
||||||
# the code below will generally find rocksdb using the module, but
|
|
||||||
# will then result in linker errors for static linkage since the
|
|
||||||
# transitive dependencies are unknown. force local build here for now, but leave the code as
|
|
||||||
# a placeholder for future investigation.
|
|
||||||
if (static)
|
|
||||||
set (local_rocksdb ON CACHE BOOL "" FORCE)
|
|
||||||
# TBD if there is some way to extract transitive deps..then:
|
|
||||||
#set (RocksDB_USE_STATIC ON)
|
|
||||||
else ()
|
|
||||||
find_package (RocksDB 6.27 MODULE)
|
|
||||||
if (ROCKSDB_FOUND)
|
|
||||||
if (RocksDB_LIBRARY_DEBUG)
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES IMPORTED_LOCATION_DEBUG ${RocksDB_LIBRARY_DEBUG})
|
|
||||||
endif ()
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES IMPORTED_LOCATION_RELEASE ${RocksDB_LIBRARIES})
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES IMPORTED_LOCATION ${RocksDB_LIBRARIES})
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${RocksDB_INCLUDE_DIRS})
|
|
||||||
else ()
|
|
||||||
set (local_rocksdb ON CACHE BOOL "" FORCE)
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (local_rocksdb)
|
|
||||||
message (STATUS "Using local build of RocksDB.")
|
|
||||||
ExternalProject_Add (rocksdb
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/facebook/rocksdb.git
|
|
||||||
GIT_TAG v6.27.3
|
|
||||||
PATCH_COMMAND
|
|
||||||
# only used by windows build
|
|
||||||
${CMAKE_COMMAND} -E copy_if_different
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake/rocks_thirdparty.inc
|
|
||||||
<SOURCE_DIR>/thirdparty.inc
|
|
||||||
COMMAND
|
|
||||||
# fixup their build version file to keep the values
|
|
||||||
# from changing always
|
|
||||||
${CMAKE_COMMAND} -E copy_if_different
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake/rocksdb_build_version.cc.in
|
|
||||||
<SOURCE_DIR>/util/build_version.cc.in
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
$<$<BOOL:${unity}>:-DCMAKE_UNITY_BUILD=ON}>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DBUILD_SHARED_LIBS=OFF
|
|
||||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
|
||||||
-DWITH_JEMALLOC=$<IF:$<BOOL:${jemalloc}>,ON,OFF>
|
|
||||||
-DWITH_SNAPPY=ON
|
|
||||||
-DWITH_LZ4=ON
|
|
||||||
-DWITH_ZLIB=OFF
|
|
||||||
-DUSE_RTTI=ON
|
|
||||||
-DWITH_ZSTD=OFF
|
|
||||||
-DWITH_GFLAGS=OFF
|
|
||||||
-DWITH_BZ2=OFF
|
|
||||||
-ULZ4_*
|
|
||||||
-Ulz4_*
|
|
||||||
-Dlz4_INCLUDE_DIRS=$<JOIN:$<TARGET_PROPERTY:lz4_lib,INTERFACE_INCLUDE_DIRECTORIES>,::>
|
|
||||||
-Dlz4_LIBRARIES=$<IF:$<CONFIG:Debug>,$<TARGET_PROPERTY:lz4_lib,IMPORTED_LOCATION_DEBUG>,$<TARGET_PROPERTY:lz4_lib,IMPORTED_LOCATION_RELEASE>>
|
|
||||||
-Dlz4_FOUND=ON
|
|
||||||
-USNAPPY_*
|
|
||||||
-Usnappy_*
|
|
||||||
-USnappy_*
|
|
||||||
-Dsnappy_INCLUDE_DIRS=$<JOIN:$<TARGET_PROPERTY:snappy_lib,INTERFACE_INCLUDE_DIRECTORIES>,::>
|
|
||||||
-Dsnappy_LIBRARIES=$<IF:$<CONFIG:Debug>,$<TARGET_PROPERTY:snappy_lib,IMPORTED_LOCATION_DEBUG>,$<TARGET_PROPERTY:snappy_lib,IMPORTED_LOCATION_RELEASE>>
|
|
||||||
-Dsnappy_FOUND=ON
|
|
||||||
-DSnappy_INCLUDE_DIRS=$<JOIN:$<TARGET_PROPERTY:snappy_lib,INTERFACE_INCLUDE_DIRECTORIES>,::>
|
|
||||||
-DSnappy_LIBRARIES=$<IF:$<CONFIG:Debug>,$<TARGET_PROPERTY:snappy_lib,IMPORTED_LOCATION_DEBUG>,$<TARGET_PROPERTY:snappy_lib,IMPORTED_LOCATION_RELEASE>>
|
|
||||||
-DSnappy_FOUND=ON
|
|
||||||
-DWITH_MD_LIBRARY=OFF
|
|
||||||
-DWITH_RUNTIME_DEBUG=$<IF:$<CONFIG:Debug>,ON,OFF>
|
|
||||||
-DFAIL_ON_WARNINGS=OFF
|
|
||||||
-DWITH_ASAN=OFF
|
|
||||||
-DWITH_TSAN=OFF
|
|
||||||
-DWITH_UBSAN=OFF
|
|
||||||
-DWITH_NUMA=OFF
|
|
||||||
-DWITH_TBB=OFF
|
|
||||||
-DWITH_WINDOWS_UTF8_FILENAMES=OFF
|
|
||||||
-DWITH_XPRESS=OFF
|
|
||||||
-DPORTABLE=ON
|
|
||||||
-DFORCE_SSE42=OFF
|
|
||||||
-DDISABLE_STALL_NOTIF=OFF
|
|
||||||
-DOPTDBG=ON
|
|
||||||
-DROCKSDB_LITE=OFF
|
|
||||||
-DWITH_FALLOCATE=ON
|
|
||||||
-DWITH_LIBRADOS=OFF
|
|
||||||
-DWITH_JNI=OFF
|
|
||||||
-DROCKSDB_INSTALL_ON_WINDOWS=OFF
|
|
||||||
-DWITH_TESTS=OFF
|
|
||||||
-DWITH_TOOLS=OFF
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-GR -Gd -fp:precise -FS -MP /DNDEBUG"
|
|
||||||
>
|
|
||||||
$<$<NOT:$<BOOL:${MSVC}>>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-DNDEBUG"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
$<$<BOOL:${is_multiconfig}>:
|
|
||||||
COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}rocksdb$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>
|
|
||||||
>
|
|
||||||
LIST_SEPARATOR ::
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
DEPENDS snappy_lib lz4_lib
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}rocksdb${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}rocksdb_d${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (rocksdb BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (rocksdb SOURCE_DIR)
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (rocksdb)
|
|
||||||
endif ()
|
|
||||||
file (MAKE_DIRECTORY ${SOURCE_DIR}/include)
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}rocksdb_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}rocksdb${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR}/include)
|
|
||||||
add_dependencies (rocksdb_lib rocksdb)
|
|
||||||
exclude_if_included (rocksdb)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
target_link_libraries (rocksdb_lib
|
|
||||||
INTERFACE
|
|
||||||
snappy_lib
|
|
||||||
lz4_lib
|
|
||||||
$<$<BOOL:${MSVC}>:rpcrt4>)
|
|
||||||
exclude_if_included (rocksdb_lib)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE rocksdb_lib)
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: secp256k1
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
add_library (secp256k1_lib STATIC IMPORTED GLOBAL)
|
|
||||||
|
|
||||||
if (NOT WIN32)
|
|
||||||
find_package(secp256k1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(secp256k1)
|
|
||||||
set_target_properties (secp256k1_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${secp256k1}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${secp256k1}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SECP256K1_INCLUDE_DIR})
|
|
||||||
|
|
||||||
add_library (secp256k1 ALIAS secp256k1_lib)
|
|
||||||
add_library (NIH::secp256k1 ALIAS secp256k1_lib)
|
|
||||||
|
|
||||||
else()
|
|
||||||
set(INSTALL_SECP256K1 true)
|
|
||||||
|
|
||||||
add_library (secp256k1 STATIC
|
|
||||||
src/secp256k1/src/secp256k1.c)
|
|
||||||
target_compile_definitions (secp256k1
|
|
||||||
PRIVATE
|
|
||||||
USE_NUM_NONE
|
|
||||||
USE_FIELD_10X26
|
|
||||||
USE_FIELD_INV_BUILTIN
|
|
||||||
USE_SCALAR_8X32
|
|
||||||
USE_SCALAR_INV_BUILTIN)
|
|
||||||
target_include_directories (secp256k1
|
|
||||||
PUBLIC
|
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
|
|
||||||
$<INSTALL_INTERFACE:include>
|
|
||||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/secp256k1)
|
|
||||||
target_compile_options (secp256k1
|
|
||||||
PRIVATE
|
|
||||||
$<$<BOOL:${MSVC}>:-wd4319>
|
|
||||||
$<$<NOT:$<BOOL:${MSVC}>>:
|
|
||||||
-Wno-deprecated-declarations
|
|
||||||
-Wno-unused-function
|
|
||||||
>
|
|
||||||
$<$<BOOL:${is_gcc}>:-Wno-nonnull-compare>)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE NIH::secp256k1)
|
|
||||||
#[===========================[
|
|
||||||
headers installation
|
|
||||||
#]===========================]
|
|
||||||
install (
|
|
||||||
FILES
|
|
||||||
src/secp256k1/include/secp256k1.h
|
|
||||||
DESTINATION include/secp256k1/include)
|
|
||||||
|
|
||||||
add_library (NIH::secp256k1 ALIAS secp256k1)
|
|
||||||
endif()
|
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: snappy
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
add_library (snappy_lib STATIC IMPORTED GLOBAL)
|
|
||||||
|
|
||||||
if (NOT WIN32)
|
|
||||||
find_package(snappy)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(snappy)
|
|
||||||
set_target_properties (snappy_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${snappy}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${snappy}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SNAPPY_INCLUDE_DIR})
|
|
||||||
|
|
||||||
else()
|
|
||||||
ExternalProject_Add (snappy
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/google/snappy.git
|
|
||||||
GIT_TAG 1.1.7
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DBUILD_SHARED_LIBS=OFF
|
|
||||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
|
||||||
-DSNAPPY_BUILD_TESTS=OFF
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-GR -Gd -fp:precise -FS -EHa -MP"
|
|
||||||
"-DCMAKE_CXX_FLAGS_DEBUG=-MTd"
|
|
||||||
"-DCMAKE_CXX_FLAGS_RELEASE=-MT"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
$<$<BOOL:${is_multiconfig}>:
|
|
||||||
COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}snappy$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>
|
|
||||||
>
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy_if_different <BINARY_DIR>/config.h <BINARY_DIR>/snappy-stubs-public.h <SOURCE_DIR>
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}snappy${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}snappy_d${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (snappy BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (snappy SOURCE_DIR)
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (snappy)
|
|
||||||
endif ()
|
|
||||||
file (MAKE_DIRECTORY ${SOURCE_DIR}/snappy)
|
|
||||||
set_target_properties (snappy_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}snappy_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}snappy${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_dependencies (snappy_lib snappy)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE snappy_lib)
|
|
||||||
exclude_if_included (snappy)
|
|
||||||
exclude_if_included (snappy_lib)
|
|
||||||
@@ -1,165 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: soci
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
foreach (_comp core empty sqlite3)
|
|
||||||
add_library ("soci_${_comp}" STATIC IMPORTED GLOBAL)
|
|
||||||
endforeach ()
|
|
||||||
|
|
||||||
if (NOT WIN32)
|
|
||||||
find_package(soci)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (soci)
|
|
||||||
foreach (_comp core empty sqlite3)
|
|
||||||
set_target_properties ("soci_${_comp}" PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${soci}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${soci}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOCI_INCLUDE_DIR})
|
|
||||||
endforeach ()
|
|
||||||
|
|
||||||
else()
|
|
||||||
set (soci_lib_pre ${ep_lib_prefix})
|
|
||||||
set (soci_lib_post "")
|
|
||||||
if (WIN32)
|
|
||||||
# for some reason soci on windows still prepends lib (non-standard)
|
|
||||||
set (soci_lib_pre lib)
|
|
||||||
# this version in the name might change if/when we change versions of soci
|
|
||||||
set (soci_lib_post "_4_0")
|
|
||||||
endif ()
|
|
||||||
get_target_property (_boost_incs Boost::date_time INTERFACE_INCLUDE_DIRECTORIES)
|
|
||||||
get_target_property (_boost_dt Boost::date_time IMPORTED_LOCATION)
|
|
||||||
if (NOT _boost_dt)
|
|
||||||
get_target_property (_boost_dt Boost::date_time IMPORTED_LOCATION_RELEASE)
|
|
||||||
endif ()
|
|
||||||
if (NOT _boost_dt)
|
|
||||||
get_target_property (_boost_dt Boost::date_time IMPORTED_LOCATION_DEBUG)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
ExternalProject_Add (soci
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/SOCI/soci.git
|
|
||||||
GIT_TAG 04e1870294918d20761736743bb6136314c42dd5
|
|
||||||
# We had an issue with soci integer range checking for boost::optional
|
|
||||||
# and needed to remove the exception that SOCI throws in this case.
|
|
||||||
# This is *probably* a bug in SOCI, but has never been investigated more
|
|
||||||
# nor reported to the maintainers.
|
|
||||||
# This cmake script comments out the lines in question.
|
|
||||||
# This patch process is likely fragile and should be reviewed carefully
|
|
||||||
# whenever we update the GIT_TAG above.
|
|
||||||
PATCH_COMMAND
|
|
||||||
${CMAKE_COMMAND} -D RIPPLED_SOURCE=${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake/soci_patch.cmake
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
$<$<BOOL:${CMAKE_TOOLCHAIN_FILE}>:-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}>
|
|
||||||
$<$<BOOL:${VCPKG_TARGET_TRIPLET}>:-DVCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET}>
|
|
||||||
$<$<BOOL:${unity}>:-DCMAKE_UNITY_BUILD=ON}>
|
|
||||||
-DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/sqlite3
|
|
||||||
-DCMAKE_MODULE_PATH=${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake
|
|
||||||
-DCMAKE_INCLUDE_PATH=$<JOIN:$<TARGET_PROPERTY:sqlite,INTERFACE_INCLUDE_DIRECTORIES>,::>
|
|
||||||
-DCMAKE_LIBRARY_PATH=${sqlite_BINARY_DIR}
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DSOCI_CXX_C11=ON
|
|
||||||
-DSOCI_STATIC=ON
|
|
||||||
-DSOCI_LIBDIR=lib
|
|
||||||
-DSOCI_SHARED=OFF
|
|
||||||
-DSOCI_TESTS=OFF
|
|
||||||
# hacks to workaround the fact that soci doesn't currently use
|
|
||||||
# boost imported targets in its cmake. If they switch to
|
|
||||||
# proper imported targets, this next line can be removed
|
|
||||||
# (as well as the get_property above that sets _boost_incs)
|
|
||||||
-DBoost_INCLUDE_DIRS=$<JOIN:${_boost_incs},::>
|
|
||||||
-DBoost_INCLUDE_DIR=$<JOIN:${_boost_incs},::>
|
|
||||||
-DBOOST_ROOT=${BOOST_ROOT}
|
|
||||||
-DWITH_BOOST=ON
|
|
||||||
-DBoost_FOUND=ON
|
|
||||||
-DBoost_NO_BOOST_CMAKE=ON
|
|
||||||
-DBoost_DATE_TIME_FOUND=ON
|
|
||||||
-DSOCI_HAVE_BOOST=ON
|
|
||||||
-DSOCI_HAVE_BOOST_DATE_TIME=ON
|
|
||||||
-DBoost_DATE_TIME_LIBRARY=${_boost_dt}
|
|
||||||
-DSOCI_DB2=OFF
|
|
||||||
-DSOCI_FIREBIRD=OFF
|
|
||||||
-DSOCI_MYSQL=OFF
|
|
||||||
-DSOCI_ODBC=OFF
|
|
||||||
-DSOCI_ORACLE=OFF
|
|
||||||
-DSOCI_POSTGRESQL=OFF
|
|
||||||
-DSOCI_SQLITE3=ON
|
|
||||||
-DSQLITE3_INCLUDE_DIR=$<JOIN:$<TARGET_PROPERTY:sqlite,INTERFACE_INCLUDE_DIRECTORIES>,::>
|
|
||||||
-DSQLITE3_LIBRARY=$<IF:$<CONFIG:Debug>,$<TARGET_PROPERTY:sqlite,IMPORTED_LOCATION_DEBUG>,$<TARGET_PROPERTY:sqlite,IMPORTED_LOCATION_RELEASE>>
|
|
||||||
$<$<BOOL:${APPLE}>:-DCMAKE_FIND_FRAMEWORK=LAST>
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-GR -Gd -fp:precise -FS -EHa -MP"
|
|
||||||
"-DCMAKE_CXX_FLAGS_DEBUG=-MTd"
|
|
||||||
"-DCMAKE_CXX_FLAGS_RELEASE=-MT"
|
|
||||||
>
|
|
||||||
$<$<NOT:$<BOOL:${MSVC}>>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-Wno-deprecated-declarations"
|
|
||||||
>
|
|
||||||
# SEE: https://github.com/SOCI/soci/issues/640
|
|
||||||
$<$<AND:$<BOOL:${is_gcc}>,$<VERSION_GREATER_EQUAL:${CMAKE_CXX_COMPILER_VERSION},8>>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-Wno-deprecated-declarations -Wno-error=format-overflow -Wno-format-overflow -Wno-error=format-truncation"
|
|
||||||
>
|
|
||||||
LIST_SEPARATOR ::
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
$<$<BOOL:${is_multiconfig}>:
|
|
||||||
COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy
|
|
||||||
<BINARY_DIR>/lib/$<CONFIG>/${soci_lib_pre}soci_core${soci_lib_post}$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib/$<CONFIG>/${soci_lib_pre}soci_empty${soci_lib_post}$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib/$<CONFIG>/${soci_lib_pre}soci_sqlite3${soci_lib_post}$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib
|
|
||||||
>
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
DEPENDS sqlite
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/lib/${soci_lib_pre}soci_core${soci_lib_post}${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib/${soci_lib_pre}soci_core${soci_lib_post}_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib/${soci_lib_pre}soci_empty${soci_lib_post}${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib/${soci_lib_pre}soci_empty${soci_lib_post}_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib/${soci_lib_pre}soci_sqlite3${soci_lib_post}${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib/${soci_lib_pre}soci_sqlite3${soci_lib_post}_d${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (soci BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (soci SOURCE_DIR)
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (soci)
|
|
||||||
endif ()
|
|
||||||
file (MAKE_DIRECTORY ${SOURCE_DIR}/include)
|
|
||||||
file (MAKE_DIRECTORY ${BINARY_DIR}/include)
|
|
||||||
foreach (_comp core empty sqlite3)
|
|
||||||
set_target_properties ("soci_${_comp}" PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/lib/${soci_lib_pre}soci_${_comp}${soci_lib_post}_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/lib/${soci_lib_pre}soci_${_comp}${soci_lib_post}${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
"${SOURCE_DIR}/include;${BINARY_DIR}/include")
|
|
||||||
add_dependencies ("soci_${_comp}" soci) # something has to depend on the ExternalProject to trigger it
|
|
||||||
target_link_libraries (ripple_libs INTERFACE "soci_${_comp}")
|
|
||||||
if (NOT _comp STREQUAL "core")
|
|
||||||
target_link_libraries ("soci_${_comp}" INTERFACE soci_core)
|
|
||||||
endif ()
|
|
||||||
endforeach ()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
foreach (_comp core empty sqlite3)
|
|
||||||
exclude_if_included ("soci_${_comp}")
|
|
||||||
endforeach ()
|
|
||||||
|
|
||||||
|
|
||||||
exclude_if_included (soci)
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: sqlite
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
add_library (sqlite STATIC IMPORTED GLOBAL)
|
|
||||||
|
|
||||||
if (NOT WIN32)
|
|
||||||
find_package(sqlite)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
if(sqlite3)
|
|
||||||
set_target_properties (sqlite PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${sqlite3}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${sqlite3}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SQLITE_INCLUDE_DIR})
|
|
||||||
|
|
||||||
else()
|
|
||||||
ExternalProject_Add (sqlite3
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
# sqlite doesn't use git, but it provides versioned tarballs
|
|
||||||
URL https://www.sqlite.org/2018/sqlite-amalgamation-3260000.zip
|
|
||||||
http://www.sqlite.org/2018/sqlite-amalgamation-3260000.zip
|
|
||||||
https://www2.sqlite.org/2018/sqlite-amalgamation-3260000.zip
|
|
||||||
http://www2.sqlite.org/2018/sqlite-amalgamation-3260000.zip
|
|
||||||
# ^^^ version is apparent in the URL: 3260000 => 3.26.0
|
|
||||||
URL_HASH SHA256=de5dcab133aa339a4cf9e97c40aa6062570086d6085d8f9ad7bc6ddf8a52096e
|
|
||||||
# Don't need to worry about MITM attacks too much because the download
|
|
||||||
# is checked against a strong hash
|
|
||||||
TLS_VERIFY false
|
|
||||||
# we wrote a very simple CMake file to build sqlite
|
|
||||||
# so that's what we copy here so that we can build with
|
|
||||||
# CMake. sqlite doesn't generally provided a build system
|
|
||||||
# for the single amalgamation source file.
|
|
||||||
PATCH_COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy_if_different
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake/CMake_sqlite3.txt
|
|
||||||
<SOURCE_DIR>/CMakeLists.txt
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP"
|
|
||||||
"-DCMAKE_C_FLAGS_DEBUG=-MTd"
|
|
||||||
"-DCMAKE_C_FLAGS_RELEASE=-MT"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
$<$<BOOL:${is_multiconfig}>:
|
|
||||||
COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}sqlite3$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>
|
|
||||||
>
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}sqlite3${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}sqlite3_d${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (sqlite3 BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (sqlite3 SOURCE_DIR)
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (sqlite3)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
set_target_properties (sqlite PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}sqlite3_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}sqlite3${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR})
|
|
||||||
|
|
||||||
add_dependencies (sqlite sqlite3)
|
|
||||||
exclude_if_included (sqlite3)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_link_libraries (sqlite INTERFACE $<$<NOT:$<BOOL:${MSVC}>>:dl>)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE sqlite)
|
|
||||||
exclude_if_included (sqlite)
|
|
||||||
set(sqlite_BINARY_DIR ${BINARY_DIR})
|
|
||||||
@@ -1,84 +1 @@
|
|||||||
#[===================================================================[
|
find_package(wasmedge REQUIRED)
|
||||||
NIH dep: wasmedge: web assembly runtime for hooks.
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
find_package(Curses)
|
|
||||||
if(CURSES_FOUND)
|
|
||||||
include_directories(${CURSES_INCLUDE_DIR})
|
|
||||||
target_link_libraries(ripple_libs INTERFACE ${CURSES_LIBRARY})
|
|
||||||
else()
|
|
||||||
message(WARNING "CURSES library not found... (only important for mac builds)")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
find_package(LLVM REQUIRED CONFIG)
|
|
||||||
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
|
|
||||||
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
|
|
||||||
ExternalProject_Add (wasmedge_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/WasmEdge/WasmEdge.git
|
|
||||||
GIT_TAG 0.11.2
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
-DWASMEDGE_BUILD_SHARED_LIB=OFF
|
|
||||||
-DWASMEDGE_BUILD_STATIC_LIB=ON
|
|
||||||
-DWASMEDGE_BUILD_AOT_RUNTIME=ON
|
|
||||||
-DWASMEDGE_FORCE_DISABLE_LTO=ON
|
|
||||||
-DWASMEDGE_LINK_LLVM_STATIC=ON
|
|
||||||
-DWASMEDGE_LINK_TOOLS_STATIC=ON
|
|
||||||
-DWASMEDGE_BUILD_PLUGINS=OFF
|
|
||||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
|
||||||
-DLLVM_DIR=${LLVM_DIR}
|
|
||||||
-DLLVM_LIBRARY_DIR=${LLVM_LIBRARY_DIR}
|
|
||||||
-DLLVM_ENABLE_TERMINFO=OFF
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP -march=native"
|
|
||||||
"-DCMAKE_C_FLAGS_DEBUG=-MTd"
|
|
||||||
"-DCMAKE_C_FLAGS_RELEASE=-MT"
|
|
||||||
>
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
COMMAND
|
|
||||||
pwd
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
$<$<VERSION_GREATER_EQUAL:${CMAKE_VERSION},3.12>:--parallel ${ep_procs}>
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/lib/api/libwasmedge.a
|
|
||||||
)
|
|
||||||
add_library (wasmedge STATIC IMPORTED GLOBAL)
|
|
||||||
ExternalProject_Get_Property (wasmedge_src BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (wasmedge_src SOURCE_DIR)
|
|
||||||
set (wasmedge_src_BINARY_DIR "${BINARY_DIR}")
|
|
||||||
add_dependencies (wasmedge wasmedge_src)
|
|
||||||
execute_process(
|
|
||||||
COMMAND
|
|
||||||
mkdir -p "${wasmedge_src_BINARY_DIR}/include/api"
|
|
||||||
)
|
|
||||||
set_target_properties (wasmedge PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
"${wasmedge_src_BINARY_DIR}/lib/api/libwasmedge.a"
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
"${wasmedge_src_BINARY_DIR}/lib/api/libwasmedge.a"
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
"${wasmedge_src_BINARY_DIR}/include/api/"
|
|
||||||
)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE wasmedge)
|
|
||||||
#RH NOTE: some compilers / versions of some libraries need these, most don't
|
|
||||||
|
|
||||||
find_library(XAR_LIBRARY NAMES xar)
|
|
||||||
if(XAR_LIBRARY)
|
|
||||||
target_link_libraries(ripple_libs INTERFACE ${XAR_LIBRARY})
|
|
||||||
else()
|
|
||||||
message(WARNING "xar library not found... (only important for mac builds)")
|
|
||||||
endif()
|
|
||||||
add_library (NIH::WasmEdge ALIAS wasmedge)
|
|
||||||
|
|||||||
@@ -1,167 +0,0 @@
|
|||||||
if(reporting)
|
|
||||||
find_library(cassandra NAMES cassandra)
|
|
||||||
if(NOT cassandra)
|
|
||||||
|
|
||||||
message("System installed Cassandra cpp driver not found. Will build")
|
|
||||||
|
|
||||||
find_library(zlib NAMES zlib1g-dev zlib-devel zlib z)
|
|
||||||
if(NOT zlib)
|
|
||||||
message("zlib not found. will build")
|
|
||||||
add_library(zlib STATIC IMPORTED GLOBAL)
|
|
||||||
ExternalProject_Add(zlib_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/madler/zlib.git
|
|
||||||
GIT_TAG v1.2.12
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <BINARY_DIR>/${ep_lib_prefix}z.a
|
|
||||||
LOG_BUILD TRUE
|
|
||||||
LOG_CONFIGURE TRUE
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
ExternalProject_Get_Property (zlib_src SOURCE_DIR)
|
|
||||||
ExternalProject_Get_Property (zlib_src BINARY_DIR)
|
|
||||||
set (zlib_src_SOURCE_DIR "${SOURCE_DIR}")
|
|
||||||
file (MAKE_DIRECTORY ${zlib_src_SOURCE_DIR}/include)
|
|
||||||
|
|
||||||
set_target_properties (zlib PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}z.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR}/include)
|
|
||||||
add_dependencies(zlib zlib_src)
|
|
||||||
|
|
||||||
file(TO_CMAKE_PATH "${zlib_src_SOURCE_DIR}" zlib_src_SOURCE_DIR)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
find_library(krb5 NAMES krb5-dev libkrb5-dev)
|
|
||||||
|
|
||||||
if(NOT krb5)
|
|
||||||
message("krb5 not found. will build")
|
|
||||||
add_library(krb5 STATIC IMPORTED GLOBAL)
|
|
||||||
ExternalProject_Add(krb5_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/krb5/krb5.git
|
|
||||||
GIT_TAG krb5-1.20-final
|
|
||||||
UPDATE_COMMAND ""
|
|
||||||
CONFIGURE_COMMAND autoreconf src && CFLAGS=-fcommon ./src/configure --enable-static --disable-shared > /dev/null
|
|
||||||
BUILD_IN_SOURCE 1
|
|
||||||
BUILD_COMMAND make
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/${ep_lib_prefix}krb5.a
|
|
||||||
LOG_BUILD TRUE
|
|
||||||
)
|
|
||||||
|
|
||||||
ExternalProject_Get_Property (krb5_src SOURCE_DIR)
|
|
||||||
ExternalProject_Get_Property (krb5_src BINARY_DIR)
|
|
||||||
set (krb5_src_SOURCE_DIR "${SOURCE_DIR}")
|
|
||||||
file (MAKE_DIRECTORY ${krb5_src_SOURCE_DIR}/include)
|
|
||||||
|
|
||||||
set_target_properties (krb5 PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${BINARY_DIR}/lib/${ep_lib_prefix}krb5.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR}/include)
|
|
||||||
add_dependencies(krb5 krb5_src)
|
|
||||||
|
|
||||||
file(TO_CMAKE_PATH "${krb5_src_SOURCE_DIR}" krb5_src_SOURCE_DIR)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
find_library(libuv1 NAMES uv1 libuv1 liubuv1-dev libuv1:amd64)
|
|
||||||
|
|
||||||
|
|
||||||
if(NOT libuv1)
|
|
||||||
message("libuv1 not found, will build")
|
|
||||||
add_library(libuv1 STATIC IMPORTED GLOBAL)
|
|
||||||
ExternalProject_Add(libuv_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/libuv/libuv.git
|
|
||||||
GIT_TAG v1.44.2
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <BINARY_DIR>/${ep_lib_prefix}uv_a.a
|
|
||||||
LOG_BUILD TRUE
|
|
||||||
LOG_CONFIGURE TRUE
|
|
||||||
)
|
|
||||||
|
|
||||||
ExternalProject_Get_Property (libuv_src SOURCE_DIR)
|
|
||||||
ExternalProject_Get_Property (libuv_src BINARY_DIR)
|
|
||||||
set (libuv_src_SOURCE_DIR "${SOURCE_DIR}")
|
|
||||||
file (MAKE_DIRECTORY ${libuv_src_SOURCE_DIR}/include)
|
|
||||||
|
|
||||||
set_target_properties (libuv1 PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}uv_a.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR}/include)
|
|
||||||
add_dependencies(libuv1 libuv_src)
|
|
||||||
|
|
||||||
file(TO_CMAKE_PATH "${libuv_src_SOURCE_DIR}" libuv_src_SOURCE_DIR)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_library (cassandra STATIC IMPORTED GLOBAL)
|
|
||||||
ExternalProject_Add(cassandra_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/datastax/cpp-driver.git
|
|
||||||
GIT_TAG 2.16.2
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DLIBUV_ROOT_DIR=${BINARY_DIR}
|
|
||||||
-DLIBUV_LIBARY=${BINARY_DIR}/libuv_a.a
|
|
||||||
-DLIBUV_INCLUDE_DIR=${SOURCE_DIR}/include
|
|
||||||
-DCASS_BUILD_STATIC=ON
|
|
||||||
-DCASS_BUILD_SHARED=OFF
|
|
||||||
-DOPENSSL_ROOT_DIR=/opt/local/openssl
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <BINARY_DIR>/${ep_lib_prefix}cassandra_static.a
|
|
||||||
LOG_BUILD TRUE
|
|
||||||
LOG_CONFIGURE TRUE
|
|
||||||
)
|
|
||||||
|
|
||||||
ExternalProject_Get_Property (cassandra_src SOURCE_DIR)
|
|
||||||
ExternalProject_Get_Property (cassandra_src BINARY_DIR)
|
|
||||||
set (cassandra_src_SOURCE_DIR "${SOURCE_DIR}")
|
|
||||||
file (MAKE_DIRECTORY ${cassandra_src_SOURCE_DIR}/include)
|
|
||||||
|
|
||||||
set_target_properties (cassandra PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}cassandra_static.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR}/include)
|
|
||||||
add_dependencies(cassandra cassandra_src)
|
|
||||||
|
|
||||||
if(NOT libuv1)
|
|
||||||
ExternalProject_Add_StepDependencies(cassandra_src build libuv1)
|
|
||||||
target_link_libraries(cassandra INTERFACE libuv1)
|
|
||||||
else()
|
|
||||||
target_link_libraries(cassandra INTERFACE ${libuv1})
|
|
||||||
endif()
|
|
||||||
if(NOT krb5)
|
|
||||||
|
|
||||||
ExternalProject_Add_StepDependencies(cassandra_src build krb5)
|
|
||||||
target_link_libraries(cassandra INTERFACE krb5)
|
|
||||||
else()
|
|
||||||
target_link_libraries(cassandra INTERFACE ${krb5})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT zlib)
|
|
||||||
ExternalProject_Add_StepDependencies(cassandra_src build zlib)
|
|
||||||
target_link_libraries(cassandra INTERFACE zlib)
|
|
||||||
else()
|
|
||||||
target_link_libraries(cassandra INTERFACE ${zlib})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
file(TO_CMAKE_PATH "${cassandra_src_SOURCE_DIR}" cassandra_src_SOURCE_DIR)
|
|
||||||
target_link_libraries(ripple_libs INTERFACE cassandra)
|
|
||||||
else()
|
|
||||||
message("Found system installed cassandra cpp driver")
|
|
||||||
|
|
||||||
find_path(cassandra_includes NAMES cassandra.h REQUIRED)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE ${cassandra})
|
|
||||||
target_include_directories(ripple_libs INTERFACE ${cassandra_includes})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
exclude_if_included (cassandra)
|
|
||||||
endif()
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: date
|
|
||||||
|
|
||||||
the main library is header-only, thus is an INTERFACE lib in CMake.
|
|
||||||
|
|
||||||
NOTE: this has been accepted into c++20 so can likely be replaced
|
|
||||||
when we update to that standard
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
find_package (date QUIET)
|
|
||||||
if (NOT TARGET date::date)
|
|
||||||
FetchContent_Declare(
|
|
||||||
hh_date_src
|
|
||||||
GIT_REPOSITORY https://github.com/HowardHinnant/date.git
|
|
||||||
GIT_TAG fc4cf092f9674f2670fb9177edcdee870399b829
|
|
||||||
)
|
|
||||||
FetchContent_MakeAvailable(hh_date_src)
|
|
||||||
endif ()
|
|
||||||
@@ -1,319 +1,15 @@
|
|||||||
|
find_package(gRPC 1.23)
|
||||||
# currently linking to unsecure versions...if we switch, we'll
|
|
||||||
# need to add ssl as a link dependency to the grpc targets
|
|
||||||
option (use_secure_grpc "use TLS version of grpc libs." OFF)
|
|
||||||
if (use_secure_grpc)
|
|
||||||
set (grpc_suffix "")
|
|
||||||
else ()
|
|
||||||
set (grpc_suffix "_unsecure")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
find_package (gRPC 1.23 CONFIG QUIET)
|
|
||||||
if (TARGET gRPC::gpr AND NOT local_grpc)
|
|
||||||
get_target_property (_grpc_l gRPC::gpr IMPORTED_LOCATION_DEBUG)
|
|
||||||
if (NOT _grpc_l)
|
|
||||||
get_target_property (_grpc_l gRPC::gpr IMPORTED_LOCATION_RELEASE)
|
|
||||||
endif ()
|
|
||||||
if (NOT _grpc_l)
|
|
||||||
get_target_property (_grpc_l gRPC::gpr IMPORTED_LOCATION)
|
|
||||||
endif ()
|
|
||||||
message (STATUS "Found cmake config for gRPC. Using ${_grpc_l}.")
|
|
||||||
else ()
|
|
||||||
find_package (PkgConfig QUIET)
|
|
||||||
if (PKG_CONFIG_FOUND)
|
|
||||||
pkg_check_modules (grpc QUIET "grpc${grpc_suffix}>=1.25" "grpc++${grpc_suffix}" gpr)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (grpc_FOUND)
|
|
||||||
message (STATUS "Found gRPC using pkg-config. Using ${grpc_gpr_PREFIX}.")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
add_executable (gRPC::grpc_cpp_plugin IMPORTED)
|
|
||||||
exclude_if_included (gRPC::grpc_cpp_plugin)
|
|
||||||
|
|
||||||
if (grpc_FOUND AND NOT local_grpc)
|
|
||||||
# use installed grpc (via pkg-config)
|
|
||||||
macro (add_imported_grpc libname_)
|
|
||||||
if (static)
|
|
||||||
set (_search "${CMAKE_STATIC_LIBRARY_PREFIX}${libname_}${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
||||||
else ()
|
|
||||||
set (_search "${CMAKE_SHARED_LIBRARY_PREFIX}${libname_}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
|
||||||
endif()
|
|
||||||
find_library(_found_${libname_}
|
|
||||||
NAMES ${_search}
|
|
||||||
HINTS ${grpc_LIBRARY_DIRS})
|
|
||||||
if (_found_${libname_})
|
|
||||||
message (STATUS "importing ${libname_} as ${_found_${libname_}}")
|
|
||||||
else ()
|
|
||||||
message (FATAL_ERROR "using pkg-config for grpc, can't find ${_search}")
|
|
||||||
endif ()
|
|
||||||
add_library ("gRPC::${libname_}" STATIC IMPORTED GLOBAL)
|
|
||||||
set_target_properties ("gRPC::${libname_}" PROPERTIES IMPORTED_LOCATION ${_found_${libname_}})
|
|
||||||
if (grpc_INCLUDE_DIRS)
|
|
||||||
set_target_properties ("gRPC::${libname_}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${grpc_INCLUDE_DIRS})
|
|
||||||
endif ()
|
|
||||||
target_link_libraries (ripple_libs INTERFACE "gRPC::${libname_}")
|
|
||||||
exclude_if_included ("gRPC::${libname_}")
|
|
||||||
endmacro ()
|
|
||||||
|
|
||||||
set_target_properties (gRPC::grpc_cpp_plugin PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${grpc_gpr_PREFIX}/bin/grpc_cpp_plugin${CMAKE_EXECUTABLE_SUFFIX}")
|
|
||||||
|
|
||||||
pkg_check_modules (cares QUIET libcares)
|
|
||||||
if (cares_FOUND)
|
|
||||||
if (static)
|
|
||||||
set (_search "${CMAKE_STATIC_LIBRARY_PREFIX}cares${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
||||||
set (_prefix cares_STATIC)
|
|
||||||
set (_static STATIC)
|
|
||||||
else ()
|
|
||||||
set (_search "${CMAKE_SHARED_LIBRARY_PREFIX}cares${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
|
||||||
set (_prefix cares)
|
|
||||||
set (_static)
|
|
||||||
endif()
|
|
||||||
find_library(_location NAMES ${_search} HINTS ${cares_LIBRARY_DIRS})
|
|
||||||
if (NOT _location)
|
|
||||||
message (FATAL_ERROR "using pkg-config for grpc, can't find c-ares")
|
|
||||||
endif ()
|
|
||||||
add_library (c-ares::cares ${_static} IMPORTED GLOBAL)
|
|
||||||
set_target_properties (c-ares::cares PROPERTIES
|
|
||||||
IMPORTED_LOCATION ${_location}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${${_prefix}_INCLUDE_DIRS}"
|
|
||||||
INTERFACE_LINK_OPTIONS "${${_prefix}_LDFLAGS}"
|
|
||||||
)
|
|
||||||
exclude_if_included (c-ares::cares)
|
|
||||||
else ()
|
|
||||||
message (FATAL_ERROR "using pkg-config for grpc, can't find c-ares")
|
|
||||||
endif ()
|
|
||||||
else ()
|
|
||||||
#[===========================[
|
|
||||||
c-ares (grpc requires)
|
|
||||||
#]===========================]
|
|
||||||
ExternalProject_Add (c-ares_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/c-ares/c-ares.git
|
|
||||||
GIT_TAG cares-1_15_0
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DCMAKE_INSTALL_PREFIX=<BINARY_DIR>/_installed_
|
|
||||||
-DCARES_SHARED=OFF
|
|
||||||
-DCARES_STATIC=ON
|
|
||||||
-DCARES_STATIC_PIC=ON
|
|
||||||
-DCARES_INSTALL=ON
|
|
||||||
-DCARES_MSVC_STATIC_RUNTIME=ON
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND
|
|
||||||
${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --config $<CONFIG> --target install
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/_installed_/lib/${ep_lib_prefix}cares${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/_installed_/lib/${ep_lib_prefix}cares_d${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
exclude_if_included (c-ares_src)
|
|
||||||
ExternalProject_Get_Property (c-ares_src BINARY_DIR)
|
|
||||||
set (cares_binary_dir "${BINARY_DIR}")
|
|
||||||
|
|
||||||
add_library (c-ares::cares STATIC IMPORTED GLOBAL)
|
|
||||||
file (MAKE_DIRECTORY ${BINARY_DIR}/_installed_/include)
|
|
||||||
set_target_properties (c-ares::cares PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/_installed_/lib/${ep_lib_prefix}cares_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/_installed_/lib/${ep_lib_prefix}cares${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${BINARY_DIR}/_installed_/include)
|
|
||||||
add_dependencies (c-ares::cares c-ares_src)
|
|
||||||
exclude_if_included (c-ares::cares)
|
|
||||||
|
|
||||||
if (NOT has_zlib)
|
|
||||||
#[===========================[
|
|
||||||
zlib (grpc requires)
|
|
||||||
#]===========================]
|
|
||||||
if (MSVC)
|
|
||||||
set (zlib_debug_postfix "d") # zlib cmake sets this internally for MSVC, so we really don't have a choice
|
|
||||||
set (zlib_base "zlibstatic")
|
|
||||||
else ()
|
|
||||||
set (zlib_debug_postfix "_d")
|
|
||||||
set (zlib_base "z")
|
|
||||||
endif ()
|
|
||||||
ExternalProject_Add (zlib_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/madler/zlib.git
|
|
||||||
GIT_TAG v1.2.11
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=${zlib_debug_postfix}
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DCMAKE_INSTALL_PREFIX=<BINARY_DIR>/_installed_
|
|
||||||
-DBUILD_SHARED_LIBS=OFF
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP"
|
|
||||||
"-DCMAKE_C_FLAGS_DEBUG=-MTd"
|
|
||||||
"-DCMAKE_C_FLAGS_RELEASE=-MT"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND
|
|
||||||
${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --config $<CONFIG> --target install
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/_installed_/lib/${ep_lib_prefix}${zlib_base}${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/_installed_/lib/${ep_lib_prefix}${zlib_base}${zlib_debug_postfix}${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
exclude_if_included (zlib_src)
|
|
||||||
ExternalProject_Get_Property (zlib_src BINARY_DIR)
|
|
||||||
set (zlib_binary_dir "${BINARY_DIR}")
|
|
||||||
|
|
||||||
add_library (ZLIB::ZLIB STATIC IMPORTED GLOBAL)
|
|
||||||
file (MAKE_DIRECTORY ${BINARY_DIR}/_installed_/include)
|
|
||||||
set_target_properties (ZLIB::ZLIB PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/_installed_/lib/${ep_lib_prefix}${zlib_base}${zlib_debug_postfix}${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/_installed_/lib/${ep_lib_prefix}${zlib_base}${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${BINARY_DIR}/_installed_/include)
|
|
||||||
add_dependencies (ZLIB::ZLIB zlib_src)
|
|
||||||
exclude_if_included (ZLIB::ZLIB)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
#[===========================[
|
|
||||||
grpc
|
|
||||||
#]===========================]
|
|
||||||
ExternalProject_Add (grpc_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/grpc/grpc.git
|
|
||||||
GIT_TAG v1.25.0
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
$<$<BOOL:${CMAKE_TOOLCHAIN_FILE}>:-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}>
|
|
||||||
$<$<BOOL:${VCPKG_TARGET_TRIPLET}>:-DVCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET}>
|
|
||||||
$<$<BOOL:${unity}>:-DCMAKE_UNITY_BUILD=ON}>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DgRPC_BUILD_TESTS=OFF
|
|
||||||
-DgRPC_BENCHMARK_PROVIDER=""
|
|
||||||
-DgRPC_BUILD_CSHARP_EXT=OFF
|
|
||||||
-DgRPC_MSVC_STATIC_RUNTIME=ON
|
|
||||||
-DgRPC_INSTALL=OFF
|
|
||||||
-DgRPC_CARES_PROVIDER=package
|
|
||||||
-Dc-ares_DIR=${cares_binary_dir}/_installed_/lib/cmake/c-ares
|
|
||||||
-DgRPC_SSL_PROVIDER=package
|
|
||||||
-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}
|
|
||||||
-DgRPC_PROTOBUF_PROVIDER=package
|
|
||||||
-DProtobuf_USE_STATIC_LIBS=$<IF:$<AND:$<BOOL:${Protobuf_FOUND}>,$<NOT:$<BOOL:${static}>>>,OFF,ON>
|
|
||||||
-DProtobuf_INCLUDE_DIR=$<JOIN:$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>,:_:>
|
|
||||||
-DProtobuf_LIBRARY=$<IF:$<CONFIG:Debug>,$<TARGET_PROPERTY:protobuf::libprotobuf,IMPORTED_LOCATION_DEBUG>,$<TARGET_PROPERTY:protobuf::libprotobuf,IMPORTED_LOCATION_RELEASE>>
|
|
||||||
-DProtobuf_PROTOC_LIBRARY=$<IF:$<CONFIG:Debug>,$<TARGET_PROPERTY:protobuf::libprotoc,IMPORTED_LOCATION_DEBUG>,$<TARGET_PROPERTY:protobuf::libprotoc,IMPORTED_LOCATION_RELEASE>>
|
|
||||||
-DProtobuf_PROTOC_EXECUTABLE=$<TARGET_PROPERTY:protobuf::protoc,IMPORTED_LOCATION>
|
|
||||||
-DgRPC_ZLIB_PROVIDER=package
|
|
||||||
$<$<NOT:$<BOOL:${has_zlib}>>:-DZLIB_ROOT=${zlib_binary_dir}/_installed_>
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-GR -Gd -fp:precise -FS -EHa -MP"
|
|
||||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
$<$<BOOL:${is_multiconfig}>:
|
|
||||||
COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}grpc${grpc_suffix}$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}grpc++${grpc_suffix}$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}address_sorting$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}gpr$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/$<CONFIG>/grpc_cpp_plugin${CMAKE_EXECUTABLE_SUFFIX}
|
|
||||||
<BINARY_DIR>
|
|
||||||
>
|
|
||||||
LIST_SEPARATOR :_:
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
DEPENDS c-ares_src
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}grpc${grpc_suffix}${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}grpc${grpc_suffix}_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}grpc++${grpc_suffix}${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}grpc++${grpc_suffix}_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}address_sorting${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}address_sorting_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}gpr${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}gpr_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/grpc_cpp_plugin${CMAKE_EXECUTABLE_SUFFIX}
|
|
||||||
)
|
|
||||||
if (TARGET protobuf_src)
|
|
||||||
ExternalProject_Add_StepDependencies(grpc_src build protobuf_src)
|
|
||||||
endif ()
|
|
||||||
exclude_if_included (grpc_src)
|
|
||||||
ExternalProject_Get_Property (grpc_src BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (grpc_src SOURCE_DIR)
|
|
||||||
set (grpc_binary_dir "${BINARY_DIR}")
|
|
||||||
set (grpc_source_dir "${SOURCE_DIR}")
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (grpc_src)
|
|
||||||
endif ()
|
|
||||||
file (MAKE_DIRECTORY ${SOURCE_DIR}/include)
|
|
||||||
|
|
||||||
macro (add_imported_grpc libname_)
|
|
||||||
add_library ("gRPC::${libname_}" STATIC IMPORTED GLOBAL)
|
|
||||||
set_target_properties ("gRPC::${libname_}" PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${grpc_binary_dir}/${ep_lib_prefix}${libname_}_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${grpc_binary_dir}/${ep_lib_prefix}${libname_}${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${grpc_source_dir}/include)
|
|
||||||
add_dependencies ("gRPC::${libname_}" grpc_src)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE "gRPC::${libname_}")
|
|
||||||
exclude_if_included ("gRPC::${libname_}")
|
|
||||||
endmacro ()
|
|
||||||
|
|
||||||
set_target_properties (gRPC::grpc_cpp_plugin PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${grpc_binary_dir}/grpc_cpp_plugin${CMAKE_EXECUTABLE_SUFFIX}")
|
|
||||||
add_dependencies (gRPC::grpc_cpp_plugin grpc_src)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
add_imported_grpc (gpr)
|
|
||||||
add_imported_grpc ("grpc${grpc_suffix}")
|
|
||||||
add_imported_grpc ("grpc++${grpc_suffix}")
|
|
||||||
add_imported_grpc (address_sorting)
|
|
||||||
|
|
||||||
target_link_libraries ("gRPC::grpc${grpc_suffix}" INTERFACE c-ares::cares gRPC::gpr gRPC::address_sorting ZLIB::ZLIB)
|
|
||||||
target_link_libraries ("gRPC::grpc++${grpc_suffix}" INTERFACE "gRPC::grpc${grpc_suffix}" gRPC::gpr)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
#[=================================[
|
#[=================================[
|
||||||
generate protobuf sources for
|
generate protobuf sources for
|
||||||
grpc defs and bundle into a
|
grpc defs and bundle into a
|
||||||
static lib
|
static lib
|
||||||
#]=================================]
|
#]=================================]
|
||||||
set (GRPC_GEN_DIR "${CMAKE_BINARY_DIR}/proto_gen_grpc")
|
set(GRPC_GEN_DIR "${CMAKE_BINARY_DIR}/proto_gen_grpc")
|
||||||
file (MAKE_DIRECTORY ${GRPC_GEN_DIR})
|
file(MAKE_DIRECTORY ${GRPC_GEN_DIR})
|
||||||
set (GRPC_PROTO_SRCS)
|
set(GRPC_PROTO_SRCS)
|
||||||
set (GRPC_PROTO_HDRS)
|
set(GRPC_PROTO_HDRS)
|
||||||
set (GRPC_PROTO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/src/ripple/proto/org")
|
set(GRPC_PROTO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/src/ripple/proto/org")
|
||||||
file(GLOB_RECURSE GRPC_DEFINITION_FILES LIST_DIRECTORIES false "${GRPC_PROTO_ROOT}/*.proto")
|
file(GLOB_RECURSE GRPC_DEFINITION_FILES LIST_DIRECTORIES false "${GRPC_PROTO_ROOT}/*.proto")
|
||||||
foreach(file ${GRPC_DEFINITION_FILES})
|
foreach(file ${GRPC_DEFINITION_FILES})
|
||||||
get_filename_component(_abs_file ${file} ABSOLUTE)
|
get_filename_component(_abs_file ${file} ABSOLUTE)
|
||||||
@@ -324,10 +20,10 @@ foreach(file ${GRPC_DEFINITION_FILES})
|
|||||||
get_filename_component(_rel_root_dir ${_rel_root_file} DIRECTORY)
|
get_filename_component(_rel_root_dir ${_rel_root_file} DIRECTORY)
|
||||||
file(RELATIVE_PATH _rel_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_abs_dir})
|
file(RELATIVE_PATH _rel_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_abs_dir})
|
||||||
|
|
||||||
set (src_1 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.grpc.pb.cc")
|
set(src_1 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.grpc.pb.cc")
|
||||||
set (src_2 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.pb.cc")
|
set(src_2 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.pb.cc")
|
||||||
set (hdr_1 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.grpc.pb.h")
|
set(hdr_1 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.grpc.pb.h")
|
||||||
set (hdr_2 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.pb.h")
|
set(hdr_2 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.pb.h")
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${src_1} ${src_2} ${hdr_1} ${hdr_2}
|
OUTPUT ${src_1} ${src_2} ${hdr_1} ${hdr_2}
|
||||||
COMMAND protobuf::protoc
|
COMMAND protobuf::protoc
|
||||||
@@ -345,20 +41,22 @@ foreach(file ${GRPC_DEFINITION_FILES})
|
|||||||
list(APPEND GRPC_PROTO_HDRS ${hdr_1} ${hdr_2})
|
list(APPEND GRPC_PROTO_HDRS ${hdr_1} ${hdr_2})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
add_library (grpc_pbufs STATIC ${GRPC_PROTO_SRCS} ${GRPC_PROTO_HDRS})
|
add_library(grpc_pbufs STATIC ${GRPC_PROTO_SRCS} ${GRPC_PROTO_HDRS})
|
||||||
#target_include_directories (grpc_pbufs PRIVATE src)
|
#target_include_directories(grpc_pbufs PRIVATE src)
|
||||||
target_include_directories (grpc_pbufs SYSTEM PUBLIC ${GRPC_GEN_DIR})
|
target_include_directories(grpc_pbufs SYSTEM PUBLIC ${GRPC_GEN_DIR})
|
||||||
target_link_libraries (grpc_pbufs protobuf::libprotobuf "gRPC::grpc++${grpc_suffix}")
|
target_link_libraries(grpc_pbufs
|
||||||
target_compile_options (grpc_pbufs
|
"gRPC::grpc++"
|
||||||
|
# libgrpc is missing references.
|
||||||
|
absl::random_random
|
||||||
|
)
|
||||||
|
target_compile_options(grpc_pbufs
|
||||||
PRIVATE
|
PRIVATE
|
||||||
$<$<BOOL:${MSVC}>:-wd4065>
|
$<$<BOOL:${MSVC}>:-wd4065>
|
||||||
$<$<NOT:$<BOOL:${MSVC}>>:-Wno-deprecated-declarations>
|
$<$<NOT:$<BOOL:${MSVC}>>:-Wno-deprecated-declarations>
|
||||||
PUBLIC
|
PUBLIC
|
||||||
$<$<BOOL:${MSVC}>:-wd4996>
|
$<$<BOOL:${MSVC}>:-wd4996>
|
||||||
$<$<BOOL:${is_xcode}>:
|
$<$<BOOL:${XCODE}>:
|
||||||
--system-header-prefix="google/protobuf"
|
--system-header-prefix="google/protobuf"
|
||||||
-Wno-deprecated-dynamic-exception-spec
|
-Wno-deprecated-dynamic-exception-spec
|
||||||
>)
|
>)
|
||||||
add_library (Ripple::grpc_pbufs ALIAS grpc_pbufs)
|
add_library(Ripple::grpc_pbufs ALIAS grpc_pbufs)
|
||||||
target_link_libraries (ripple_libs INTERFACE Ripple::grpc_pbufs)
|
|
||||||
exclude_if_included (grpc_pbufs)
|
|
||||||
405
Builds/Test.py
405
Builds/Test.py
@@ -1,405 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
# This file is part of rippled: https://github.com/ripple/rippled
|
|
||||||
# Copyright (c) 2012 - 2017 Ripple Labs Inc.
|
|
||||||
#
|
|
||||||
# Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
# purpose with or without fee is hereby granted, provided that the above
|
|
||||||
# copyright notice and this permission notice appear in all copies.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
# ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
|
|
||||||
"""
|
|
||||||
Invocation:
|
|
||||||
|
|
||||||
./Builds/Test.py - builds and tests all configurations
|
|
||||||
|
|
||||||
The build must succeed without shell aliases for this to work.
|
|
||||||
|
|
||||||
To pass flags to cmake, put them at the very end of the command line, after
|
|
||||||
the -- flag - like this:
|
|
||||||
|
|
||||||
./Builds/Test.py -- -j4 # Pass -j4 to cmake --build
|
|
||||||
|
|
||||||
|
|
||||||
Common problems:
|
|
||||||
|
|
||||||
1) Boost not found. Solution: export BOOST_ROOT=[path to boost folder]
|
|
||||||
|
|
||||||
2) OpenSSL not found. Solution: export OPENSSL_ROOT=[path to OpenSSL folder]
|
|
||||||
|
|
||||||
3) cmake is not found. Solution: Be sure cmake directory is on your $PATH
|
|
||||||
|
|
||||||
"""
|
|
||||||
from __future__ import absolute_import, division, print_function, unicode_literals
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import itertools
|
|
||||||
import os
|
|
||||||
import platform
|
|
||||||
import re
|
|
||||||
import shutil
|
|
||||||
import sys
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
|
|
||||||
def powerset(iterable):
|
|
||||||
"""powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"""
|
|
||||||
s = list(iterable)
|
|
||||||
return itertools.chain.from_iterable(itertools.combinations(s, r) for r in range(len(s) + 1))
|
|
||||||
|
|
||||||
IS_WINDOWS = platform.system().lower() == 'windows'
|
|
||||||
IS_OS_X = platform.system().lower() == 'darwin'
|
|
||||||
|
|
||||||
# CMake
|
|
||||||
if IS_WINDOWS:
|
|
||||||
CMAKE_UNITY_CONFIGS = ['Debug', 'Release']
|
|
||||||
CMAKE_NONUNITY_CONFIGS = ['Debug', 'Release']
|
|
||||||
else:
|
|
||||||
CMAKE_UNITY_CONFIGS = []
|
|
||||||
CMAKE_NONUNITY_CONFIGS = []
|
|
||||||
CMAKE_UNITY_COMBOS = { '' : [['rippled'], CMAKE_UNITY_CONFIGS],
|
|
||||||
'.nounity' : [['rippled'], CMAKE_NONUNITY_CONFIGS] }
|
|
||||||
|
|
||||||
if IS_WINDOWS:
|
|
||||||
CMAKE_DIR_TARGETS = { ('msvc' + unity,) : targets for unity, targets in
|
|
||||||
CMAKE_UNITY_COMBOS.items() }
|
|
||||||
elif IS_OS_X:
|
|
||||||
CMAKE_DIR_TARGETS = { (build + unity,) : targets
|
|
||||||
for build in ['debug', 'release']
|
|
||||||
for unity, targets in CMAKE_UNITY_COMBOS.items() }
|
|
||||||
else:
|
|
||||||
CMAKE_DIR_TARGETS = { (cc + "." + build + unity,) : targets
|
|
||||||
for cc in ['gcc', 'clang']
|
|
||||||
for build in ['debug', 'release', 'coverage', 'profile']
|
|
||||||
for unity, targets in CMAKE_UNITY_COMBOS.items() }
|
|
||||||
|
|
||||||
# list of tuples of all possible options
|
|
||||||
if IS_WINDOWS or IS_OS_X:
|
|
||||||
CMAKE_ALL_GENERATE_OPTIONS = [tuple(x) for x in powerset(['-GNinja', '-Dassert=true'])]
|
|
||||||
else:
|
|
||||||
CMAKE_ALL_GENERATE_OPTIONS = list(set(
|
|
||||||
[tuple(x) for x in powerset(['-GNinja', '-Dstatic=true', '-Dassert=true', '-Dsan=address'])] +
|
|
||||||
[tuple(x) for x in powerset(['-GNinja', '-Dstatic=true', '-Dassert=true', '-Dsan=thread'])]))
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
description='Test.py - run ripple tests'
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--all', '-a',
|
|
||||||
action='store_true',
|
|
||||||
help='Build all configurations.',
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--keep_going', '-k',
|
|
||||||
action='store_true',
|
|
||||||
help='Keep going after one configuration has failed.',
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--silent', '-s',
|
|
||||||
action='store_true',
|
|
||||||
help='Silence all messages except errors',
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--verbose', '-v',
|
|
||||||
action='store_true',
|
|
||||||
help=('Report more information about which commands are executed and the '
|
|
||||||
'results.'),
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--test', '-t',
|
|
||||||
default='',
|
|
||||||
help='Add a prefix for unit tests',
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--testjobs',
|
|
||||||
default='0',
|
|
||||||
type=int,
|
|
||||||
help='Run tests in parallel'
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--ipv6',
|
|
||||||
action='store_true',
|
|
||||||
help='Use IPv6 localhost when running unit tests.',
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--clean', '-c',
|
|
||||||
action='store_true',
|
|
||||||
help='delete all build artifacts after testing',
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--quiet', '-q',
|
|
||||||
action='store_true',
|
|
||||||
help='Reduce output where possible (unit tests)',
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--dir', '-d',
|
|
||||||
default=(),
|
|
||||||
nargs='*',
|
|
||||||
help='Specify one or more CMake dir names. '
|
|
||||||
'Will also be used as -Dtarget=<dir> running cmake.'
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--target',
|
|
||||||
default=(),
|
|
||||||
nargs='*',
|
|
||||||
help='Specify one or more CMake build targets. '
|
|
||||||
'Will be used as --target <target> running cmake --build.'
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--config',
|
|
||||||
default=(),
|
|
||||||
nargs='*',
|
|
||||||
help='Specify one or more CMake build configs. '
|
|
||||||
'Will be used as --config <config> running cmake --build.'
|
|
||||||
)
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--generator_option',
|
|
||||||
action='append',
|
|
||||||
help='Specify a CMake generator option. Repeat for multiple options. '
|
|
||||||
'Will be passed to the cmake generator. '
|
|
||||||
'Due to limits of the argument parser, arguments starting with \'-\' '
|
|
||||||
'must be attached to this option. e.g. --generator_option=-GNinja.')
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'--build_option',
|
|
||||||
action='append',
|
|
||||||
help='Specify a build option. Repeat for multiple options. '
|
|
||||||
'Will be passed to the build tool via cmake --build. '
|
|
||||||
'Due to limits of the argument parser, arguments starting with \'-\' '
|
|
||||||
'must be attached to this option. e.g. --build_option=-j8.')
|
|
||||||
|
|
||||||
parser.add_argument(
|
|
||||||
'extra_args',
|
|
||||||
default=(),
|
|
||||||
nargs='*',
|
|
||||||
help='Extra arguments are passed through to the tools'
|
|
||||||
)
|
|
||||||
|
|
||||||
ARGS = parser.parse_args()
|
|
||||||
|
|
||||||
def decodeString(line):
|
|
||||||
# Python 2 vs. Python 3
|
|
||||||
if isinstance(line, str):
|
|
||||||
return line
|
|
||||||
else:
|
|
||||||
return line.decode()
|
|
||||||
|
|
||||||
def shell(cmd, args=(), silent=False, cust_env=None):
|
|
||||||
""""Execute a shell command and return the output."""
|
|
||||||
silent = ARGS.silent or silent
|
|
||||||
verbose = not silent and ARGS.verbose
|
|
||||||
if verbose:
|
|
||||||
print('$' + cmd, *args)
|
|
||||||
|
|
||||||
command = (cmd,) + args
|
|
||||||
|
|
||||||
# shell is needed in Windows to find executable in the path
|
|
||||||
process = subprocess.Popen(
|
|
||||||
command,
|
|
||||||
stdin=subprocess.PIPE,
|
|
||||||
stdout=subprocess.PIPE,
|
|
||||||
stderr=subprocess.STDOUT,
|
|
||||||
env=cust_env,
|
|
||||||
shell=IS_WINDOWS)
|
|
||||||
lines = []
|
|
||||||
count = 0
|
|
||||||
# readline returns '' at EOF
|
|
||||||
for line in iter(process.stdout.readline, ''):
|
|
||||||
if process.poll() is None:
|
|
||||||
decoded = decodeString(line)
|
|
||||||
lines.append(decoded)
|
|
||||||
if verbose:
|
|
||||||
print(decoded, end='')
|
|
||||||
elif not silent:
|
|
||||||
count += 1
|
|
||||||
if count >= 80:
|
|
||||||
print()
|
|
||||||
count = 0
|
|
||||||
else:
|
|
||||||
print('.', end='')
|
|
||||||
else:
|
|
||||||
break
|
|
||||||
|
|
||||||
if not verbose and count:
|
|
||||||
print()
|
|
||||||
process.wait()
|
|
||||||
return process.returncode, lines
|
|
||||||
|
|
||||||
def get_cmake_dir(cmake_dir):
|
|
||||||
return os.path.join('build' , 'cmake' , cmake_dir)
|
|
||||||
|
|
||||||
def run_cmake(directory, cmake_dir, args):
|
|
||||||
print('Generating build in', directory, 'with', *args or ('default options',))
|
|
||||||
old_dir = os.getcwd()
|
|
||||||
if not os.path.exists(directory):
|
|
||||||
os.makedirs(directory)
|
|
||||||
os.chdir(directory)
|
|
||||||
if IS_WINDOWS and not any(arg.startswith("-G") for arg in args) and not os.path.exists("CMakeCache.txt"):
|
|
||||||
if '--ninja' in args:
|
|
||||||
args += ( '-GNinja', )
|
|
||||||
else:
|
|
||||||
args += ( '-GVisual Studio 14 2015 Win64', )
|
|
||||||
# hack to extract cmake options/args from the legacy target format
|
|
||||||
if re.search('\.unity', cmake_dir):
|
|
||||||
args += ( '-Dunity=ON', )
|
|
||||||
if re.search('\.nounity', cmake_dir):
|
|
||||||
args += ( '-Dunity=OFF', )
|
|
||||||
if re.search('coverage', cmake_dir):
|
|
||||||
args += ( '-Dcoverage=ON', )
|
|
||||||
if re.search('profile', cmake_dir):
|
|
||||||
args += ( '-Dprofile=ON', )
|
|
||||||
if re.search('debug', cmake_dir):
|
|
||||||
args += ( '-DCMAKE_BUILD_TYPE=Debug', )
|
|
||||||
if re.search('release', cmake_dir):
|
|
||||||
args += ( '-DCMAKE_BUILD_TYPE=Release', )
|
|
||||||
m = re.search('gcc(-[^.]*)', cmake_dir)
|
|
||||||
if m:
|
|
||||||
args += ( '-DCMAKE_C_COMPILER=' + m.group(0),
|
|
||||||
'-DCMAKE_CXX_COMPILER=g++' + m.group(1), )
|
|
||||||
elif re.search('gcc', cmake_dir):
|
|
||||||
args += ( '-DCMAKE_C_COMPILER=gcc', '-DCMAKE_CXX_COMPILER=g++', )
|
|
||||||
m = re.search('clang(-[^.]*)', cmake_dir)
|
|
||||||
if m:
|
|
||||||
args += ( '-DCMAKE_C_COMPILER=' + m.group(0),
|
|
||||||
'-DCMAKE_CXX_COMPILER=clang++' + m.group(1), )
|
|
||||||
elif re.search('clang', cmake_dir):
|
|
||||||
args += ( '-DCMAKE_C_COMPILER=clang', '-DCMAKE_CXX_COMPILER=clang++', )
|
|
||||||
|
|
||||||
args += ( os.path.join('..', '..', '..'), )
|
|
||||||
resultcode, lines = shell('cmake', args)
|
|
||||||
|
|
||||||
if resultcode:
|
|
||||||
print('Generating FAILED:')
|
|
||||||
if not ARGS.verbose:
|
|
||||||
print(*lines, sep='')
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
os.chdir(old_dir)
|
|
||||||
|
|
||||||
def run_cmake_build(directory, target, config, args):
|
|
||||||
print('Building', target, config, 'in', directory, 'with', *args or ('default options',))
|
|
||||||
build_args=('--build', directory)
|
|
||||||
if target:
|
|
||||||
build_args += ('--target', target)
|
|
||||||
if config:
|
|
||||||
build_args += ('--config', config)
|
|
||||||
if args:
|
|
||||||
build_args += ('--',)
|
|
||||||
build_args += tuple(args)
|
|
||||||
resultcode, lines = shell('cmake', build_args)
|
|
||||||
|
|
||||||
if resultcode:
|
|
||||||
print('Build FAILED:')
|
|
||||||
if not ARGS.verbose:
|
|
||||||
print(*lines, sep='')
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
def run_cmake_tests(directory, target, config):
|
|
||||||
failed = []
|
|
||||||
if IS_WINDOWS:
|
|
||||||
target += '.exe'
|
|
||||||
executable = os.path.join(directory, config if config else 'Debug', target)
|
|
||||||
if(not os.path.exists(executable)):
|
|
||||||
executable = os.path.join(directory, target)
|
|
||||||
print('Unit tests for', executable)
|
|
||||||
testflag = '--unittest'
|
|
||||||
quiet = ''
|
|
||||||
testjobs = ''
|
|
||||||
ipv6 = ''
|
|
||||||
if ARGS.test:
|
|
||||||
testflag += ('=' + ARGS.test)
|
|
||||||
if ARGS.quiet:
|
|
||||||
quiet = '-q'
|
|
||||||
if ARGS.ipv6:
|
|
||||||
ipv6 = '--unittest-ipv6'
|
|
||||||
if ARGS.testjobs:
|
|
||||||
testjobs = ('--unittest-jobs=' + str(ARGS.testjobs))
|
|
||||||
resultcode, lines = shell(executable, (testflag, quiet, testjobs, ipv6))
|
|
||||||
|
|
||||||
if resultcode:
|
|
||||||
if not ARGS.verbose:
|
|
||||||
print('ERROR:', *lines, sep='')
|
|
||||||
failed.append([target, 'unittest'])
|
|
||||||
|
|
||||||
return failed
|
|
||||||
|
|
||||||
def main():
|
|
||||||
all_failed = []
|
|
||||||
if ARGS.all:
|
|
||||||
build_dir_targets = CMAKE_DIR_TARGETS
|
|
||||||
generator_options = CMAKE_ALL_GENERATE_OPTIONS
|
|
||||||
else:
|
|
||||||
build_dir_targets = { tuple(ARGS.dir) : [ARGS.target, ARGS.config] }
|
|
||||||
if ARGS.generator_option:
|
|
||||||
generator_options = [tuple(ARGS.generator_option)]
|
|
||||||
else:
|
|
||||||
generator_options = [tuple()]
|
|
||||||
|
|
||||||
if not build_dir_targets:
|
|
||||||
# Let CMake choose the build tool.
|
|
||||||
build_dir_targets = { () : [] }
|
|
||||||
|
|
||||||
if ARGS.build_option:
|
|
||||||
ARGS.build_option = ARGS.build_option + list(ARGS.extra_args)
|
|
||||||
else:
|
|
||||||
ARGS.build_option = list(ARGS.extra_args)
|
|
||||||
|
|
||||||
for args in generator_options:
|
|
||||||
for build_dirs, (build_targets, build_configs) in build_dir_targets.items():
|
|
||||||
if not build_dirs:
|
|
||||||
build_dirs = ('default',)
|
|
||||||
if not build_targets:
|
|
||||||
build_targets = ('rippled',)
|
|
||||||
if not build_configs:
|
|
||||||
build_configs = ('',)
|
|
||||||
for cmake_dir in build_dirs:
|
|
||||||
cmake_full_dir = get_cmake_dir(cmake_dir)
|
|
||||||
run_cmake(cmake_full_dir, cmake_dir, args)
|
|
||||||
|
|
||||||
for target in build_targets:
|
|
||||||
for config in build_configs:
|
|
||||||
run_cmake_build(cmake_full_dir, target, config, ARGS.build_option)
|
|
||||||
failed = run_cmake_tests(cmake_full_dir, target, config)
|
|
||||||
|
|
||||||
if failed:
|
|
||||||
print('FAILED:', *(':'.join(f) for f in failed))
|
|
||||||
if not ARGS.keep_going:
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
all_failed.extend([decodeString(cmake_dir +
|
|
||||||
"." + target + "." + config), ':'.join(f)]
|
|
||||||
for f in failed)
|
|
||||||
else:
|
|
||||||
print('Success')
|
|
||||||
if ARGS.clean:
|
|
||||||
shutil.rmtree(cmake_full_dir)
|
|
||||||
|
|
||||||
if all_failed:
|
|
||||||
if len(all_failed) > 1:
|
|
||||||
print()
|
|
||||||
print('FAILED:', *(':'.join(f) for f in all_failed))
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
||||||
sys.exit(0)
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[Build instructions are currently located in `BUILD.md`](../../BUILD.md)
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
// See https://go.microsoft.com//fwlink//?linkid=834763 for more information about this file.
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"name": "x64-Debug",
|
|
||||||
"generator": "Visual Studio 16 2019",
|
|
||||||
"configurationType": "Debug",
|
|
||||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
|
||||||
"buildRoot": "${thisFileDir}\\build\\${name}",
|
|
||||||
"cmakeCommandArgs": "",
|
|
||||||
"buildCommandArgs": "-v:minimal",
|
|
||||||
"ctestCommandArgs": "",
|
|
||||||
"variables": [
|
|
||||||
{
|
|
||||||
"name": "BOOST_ROOT",
|
|
||||||
"value": "C:\\lib\\boost"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "OPENSSL_ROOT",
|
|
||||||
"value": "C:\\lib\\OpenSSL-Win64"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "x64-Release",
|
|
||||||
"generator": "Visual Studio 16 2019",
|
|
||||||
"configurationType": "Release",
|
|
||||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
|
||||||
"buildRoot": "${thisFileDir}\\build\\${name}",
|
|
||||||
"cmakeCommandArgs": "",
|
|
||||||
"buildCommandArgs": "-v:minimal",
|
|
||||||
"ctestCommandArgs": "",
|
|
||||||
"variables": [
|
|
||||||
{
|
|
||||||
"name": "BOOST_ROOT",
|
|
||||||
"value": "C:\\lib\\boost"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "OPENSSL_ROOT",
|
|
||||||
"value": "C:\\lib\\OpenSSL-Win64"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,263 +0,0 @@
|
|||||||
# Visual Studio 2019 Build Instructions
|
|
||||||
|
|
||||||
## Important
|
|
||||||
|
|
||||||
We do not recommend Windows for rippled production use at this time. Currently,
|
|
||||||
the Ubuntu platform has received the highest level of quality assurance,
|
|
||||||
testing, and support. Additionally, 32-bit Windows versions are not supported.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
To clone the source code repository, create branches for inspection or
|
|
||||||
modification, build rippled under Visual Studio, and run the unit tests you will
|
|
||||||
need these software components
|
|
||||||
|
|
||||||
| Component | Minimum Recommended Version |
|
|
||||||
|-----------|-----------------------|
|
|
||||||
| [Visual Studio 2019](README.md#install-visual-studio-2019)| 15.5.4 |
|
|
||||||
| [Git for Windows](README.md#install-git-for-windows)| 2.16.1 |
|
|
||||||
| [OpenSSL Library](README.md#install-openssl) | 1.1.1L |
|
|
||||||
| [Boost library](README.md#build-boost) | 1.70.0 |
|
|
||||||
| [CMake for Windows](README.md#optional-install-cmake-for-windows)* | 3.12 |
|
|
||||||
|
|
||||||
\* Only needed if not using the integrated CMake in VS 2019 and prefer generating dedicated project/solution files.
|
|
||||||
|
|
||||||
## Install Software
|
|
||||||
|
|
||||||
### Install Visual Studio 2019
|
|
||||||
|
|
||||||
If not already installed on your system, download your choice of installer from
|
|
||||||
the [Visual Studio 2019
|
|
||||||
Download](https://www.visualstudio.com/downloads/download-visual-studio-vs)
|
|
||||||
page, run the installer, and follow the directions. **You may need to choose the
|
|
||||||
`Desktop development with C++` workload to install all necessary C++ features.**
|
|
||||||
|
|
||||||
Any version of Visual Studio 2019 may be used to build rippled. The **Visual
|
|
||||||
Studio 2019 Community** edition is available free of charge (see [the product
|
|
||||||
page](https://www.visualstudio.com/products/visual-studio-community-vs) for
|
|
||||||
licensing details), while paid editions may be used for an initial free-trial
|
|
||||||
period.
|
|
||||||
|
|
||||||
### Install Git for Windows
|
|
||||||
|
|
||||||
Git is a distributed revision control system. The Windows version also provides
|
|
||||||
the bash shell and many Windows versions of Unix commands. While there are other
|
|
||||||
varieties of Git (such as TortoiseGit, which has a native Windows interface and
|
|
||||||
integrates with the Explorer shell), we recommend installing [Git for
|
|
||||||
Windows](https://git-scm.com/) since it provides a Unix-like command line
|
|
||||||
environment useful for running shell scripts. Use of the bash shell under
|
|
||||||
Windows is mandatory for running the unit tests.
|
|
||||||
|
|
||||||
### Install OpenSSL
|
|
||||||
|
|
||||||
[Download the latest version of
|
|
||||||
OpenSSL.](http://slproweb.com/products/Win32OpenSSL.html) There will
|
|
||||||
several `Win64` bit variants available, you want the non-light
|
|
||||||
`v1.1` line. As of this writing, you **should** select
|
|
||||||
|
|
||||||
* Win64 OpenSSL v1.1.1q
|
|
||||||
|
|
||||||
and should **not** select
|
|
||||||
|
|
||||||
* Anything with "Win32" in the name
|
|
||||||
* Anything with "light" in the name
|
|
||||||
* Anything with "EXPERIMENTAL" in the name
|
|
||||||
* Anything in the 3.0 line - rippled won't currently build with this version.
|
|
||||||
|
|
||||||
Run the installer, and choose an appropriate location for your OpenSSL
|
|
||||||
installation. In this guide we use `C:\lib\OpenSSL-Win64` as the destination
|
|
||||||
location.
|
|
||||||
|
|
||||||
You may be informed on running the installer that "Visual C++ 2008
|
|
||||||
Redistributables" must first be installed first. If so, download it from the
|
|
||||||
[same page](http://slproweb.com/products/Win32OpenSSL.html), again making sure
|
|
||||||
to get the correct 32-/64-bit variant.
|
|
||||||
|
|
||||||
* NOTE: Since rippled links statically to OpenSSL, it does not matter where the
|
|
||||||
OpenSSL .DLL files are placed, or what version they are. rippled does not use
|
|
||||||
or require any external .DLL files to run other than the standard operating
|
|
||||||
system ones.
|
|
||||||
|
|
||||||
### Build Boost
|
|
||||||
|
|
||||||
Boost 1.70 or later is required.
|
|
||||||
|
|
||||||
[Download boost](http://www.boost.org/users/download/) and unpack it
|
|
||||||
to `c:\lib`. As of this writing, the most recent version of boost is 1.80.0,
|
|
||||||
which will unpack into a directory named `boost_1_80_0`. We recommended either
|
|
||||||
renaming this directory to `boost`, or creating a junction link `mklink /J boost
|
|
||||||
boost_1_80_0`, so that you can more easily switch between versions.
|
|
||||||
|
|
||||||
Next, open **Developer Command Prompt** and type the following commands
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
cd C:\lib\boost
|
|
||||||
bootstrap
|
|
||||||
```
|
|
||||||
|
|
||||||
The rippled application is linked statically to the standard runtimes and
|
|
||||||
external dependencies on Windows, to ensure that the behavior of the executable
|
|
||||||
is not affected by changes in outside files. Therefore, it is necessary to build
|
|
||||||
the required boost static libraries using this command:
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
b2 -j<Num Parallel> --toolset=msvc-14.2 address-model=64 architecture=x86 link=static threading=multi runtime-link=shared,static stage
|
|
||||||
```
|
|
||||||
|
|
||||||
where you should replace `<Num Parallel>` with the number of parallel
|
|
||||||
invocations to use build, e.g. `bjam -j8 ...` would use up to 8 concurrent build
|
|
||||||
shell commands for the build.
|
|
||||||
|
|
||||||
Building the boost libraries may take considerable time. When the build process
|
|
||||||
is completed, take note of both the reported compiler include paths and linker
|
|
||||||
library paths as they will be required later.
|
|
||||||
|
|
||||||
### (Optional) Install CMake for Windows
|
|
||||||
|
|
||||||
[CMake](http://cmake.org) is a cross platform build system generator. Visual
|
|
||||||
Studio 2019 includes an integrated version of CMake that avoids having to
|
|
||||||
manually run CMake, but it is undergoing continuous improvement. Users that
|
|
||||||
prefer to use standard Visual Studio project and solution files need to install
|
|
||||||
a dedicated version of CMake to generate them. The latest version can be found
|
|
||||||
at the [CMake download site](https://cmake.org/download/). It is recommended you
|
|
||||||
select the install option to add CMake to your path.
|
|
||||||
|
|
||||||
## Clone the rippled repository
|
|
||||||
|
|
||||||
If you are familiar with cloning github repositories, just follow your normal
|
|
||||||
process and clone `git@github.com:ripple/rippled.git`. Otherwise follow this
|
|
||||||
section for instructions.
|
|
||||||
|
|
||||||
1. If you don't have a github account, sign up for one at
|
|
||||||
[github.com](https://github.com/).
|
|
||||||
2. Make sure you have Github ssh keys. For help see
|
|
||||||
[generating-ssh-keys](https://help.github.com/articles/generating-ssh-keys).
|
|
||||||
|
|
||||||
Open the "Git Bash" shell that was installed with "Git for Windows" in the step
|
|
||||||
above. Navigate to the directory where you want to clone rippled (git bash uses
|
|
||||||
`/c` for windows's `C:` and forward slash where windows uses backslash, so
|
|
||||||
`C:\Users\joe\projs` would be `/c/Users/joe/projs` in git bash). Now clone the
|
|
||||||
repository and optionally switch to the *master* branch. Type the following at
|
|
||||||
the bash prompt:
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
git clone git@github.com:XRPLF/rippled.git
|
|
||||||
cd rippled
|
|
||||||
```
|
|
||||||
If you receive an error about not having the "correct access rights" make sure
|
|
||||||
you have Github ssh keys, as described above.
|
|
||||||
|
|
||||||
For a stable release, choose the `master` branch or one of the tagged releases
|
|
||||||
listed on [rippled's GitHub page](https://github.com/ripple/rippled/releases).
|
|
||||||
|
|
||||||
```
|
|
||||||
git checkout master
|
|
||||||
```
|
|
||||||
|
|
||||||
To test the latest release candidate, choose the `release` branch.
|
|
||||||
|
|
||||||
```
|
|
||||||
git checkout release
|
|
||||||
```
|
|
||||||
|
|
||||||
If you are doing development work and want the latest set of beta features,
|
|
||||||
you can consider using the `develop` branch instead.
|
|
||||||
|
|
||||||
```
|
|
||||||
git checkout develop
|
|
||||||
```
|
|
||||||
|
|
||||||
# Build using Visual Studio integrated CMake
|
|
||||||
|
|
||||||
In Visual Studio 2017, Microsoft added [integrated IDE support for
|
|
||||||
cmake](https://blogs.msdn.microsoft.com/vcblog/2016/10/05/cmake-support-in-visual-studio/).
|
|
||||||
To begin, simply:
|
|
||||||
|
|
||||||
1. Launch Visual Studio and choose **File | Open | Folder**, navigating to the
|
|
||||||
cloned rippled folder.
|
|
||||||
2. Right-click on `CMakeLists.txt` in the **Solution Explorer - Folder View** to
|
|
||||||
generate a `CMakeSettings.json` file. A sample settings file is provided
|
|
||||||
[here](/Builds/VisualStudio2019/CMakeSettings-example.json). Customize the
|
|
||||||
settings for `BOOST_ROOT`, `OPENSSL_ROOT` to match the install paths if they
|
|
||||||
differ from those in the file.
|
|
||||||
4. Select either the `x64-Release` or `x64-Debug` configuration from the
|
|
||||||
**Project Settings** drop-down. This should invoke the built-in CMake project
|
|
||||||
generator. If not, you can right-click on the `CMakeLists.txt` file and
|
|
||||||
choose **Configure rippled**.
|
|
||||||
5. Select the `rippled.exe`
|
|
||||||
option in the **Select Startup Item** drop-down. This will be the target
|
|
||||||
built when you press F7. Alternatively, you can choose a target to build from
|
|
||||||
the top-level **CMake | Build** menu. Note that at this time, there are other
|
|
||||||
targets listed that come from third party visual studio files embedded in the
|
|
||||||
rippled repo, e.g. `datagen.vcxproj`. Please ignore them.
|
|
||||||
|
|
||||||
For details on configuring debugging sessions or further customization of CMake,
|
|
||||||
please refer to the [CMake tools for VS
|
|
||||||
documentation](https://docs.microsoft.com/en-us/cpp/ide/cmake-tools-for-visual-cpp).
|
|
||||||
|
|
||||||
If using the provided `CMakeSettings.json` file, the executable will be in
|
|
||||||
```
|
|
||||||
.\build\x64-Release\Release\rippled.exe
|
|
||||||
```
|
|
||||||
or
|
|
||||||
```
|
|
||||||
.\build\x64-Debug\Debug\rippled.exe
|
|
||||||
```
|
|
||||||
These paths are relative to your cloned git repository.
|
|
||||||
|
|
||||||
# Build using stand-alone CMake
|
|
||||||
|
|
||||||
This requires having installed [CMake for
|
|
||||||
Windows](README.md#optional-install-cmake-for-windows). We do not recommend
|
|
||||||
mixing this method with the integrated CMake method for the same repository
|
|
||||||
clone. Assuming you included the cmake executable folder in your path,
|
|
||||||
execute the following commands within your `rippled` cloned repository:
|
|
||||||
|
|
||||||
```
|
|
||||||
mkdir build\cmake
|
|
||||||
cd build\cmake
|
|
||||||
cmake ..\.. -G"Visual Studio 16 2019" -Ax64 -DBOOST_ROOT="C:\lib\boost" -DOPENSSL_ROOT="C:\lib\OpenSSL-Win64" -DCMAKE_GENERATOR_TOOLSET=host=x64
|
|
||||||
```
|
|
||||||
Now launch Visual Studio 2019 and select **File | Open | Project/Solution**.
|
|
||||||
Navigate to the `build\cmake` folder created above and select the `rippled.sln`
|
|
||||||
file. You can then choose whether to build the `Debug` or `Release` solution
|
|
||||||
configuration.
|
|
||||||
|
|
||||||
The executable will be in
|
|
||||||
```
|
|
||||||
.\build\cmake\Release\rippled.exe
|
|
||||||
```
|
|
||||||
or
|
|
||||||
```
|
|
||||||
.\build\cmake\Debug\rippled.exe
|
|
||||||
```
|
|
||||||
These paths are relative to your cloned git repository.
|
|
||||||
|
|
||||||
# Unity/No-Unity Builds
|
|
||||||
|
|
||||||
The rippled build system defaults to using
|
|
||||||
[unity source files](http://onqtam.com/programming/2018-07-07-unity-builds/)
|
|
||||||
to improve build times. In some cases it might be desirable to disable the
|
|
||||||
unity build and compile individual translation units. Here is how you can
|
|
||||||
switch to a "no-unity" build configuration:
|
|
||||||
|
|
||||||
## Visual Studio Integrated CMake
|
|
||||||
|
|
||||||
Edit your `CmakeSettings.json` (described above) by adding `-Dunity=OFF`
|
|
||||||
to the `cmakeCommandArgs` entry for each build configuration.
|
|
||||||
|
|
||||||
## Standalone CMake Builds
|
|
||||||
|
|
||||||
When running cmake to generate the Visual Studio project files, add
|
|
||||||
`-Dunity=OFF` to the command line options passed to cmake.
|
|
||||||
|
|
||||||
**Note:** you will need to re-run the cmake configuration step anytime you
|
|
||||||
want to switch between unity/no-unity builds.
|
|
||||||
|
|
||||||
# Unit Test (Recommended)
|
|
||||||
|
|
||||||
`rippled` builds a set of unit tests into the server executable. To run these
|
|
||||||
unit tests after building, pass the `--unittest` option to the compiled
|
|
||||||
`rippled` executable. The executable will exit with summary info after running
|
|
||||||
the unit tests.
|
|
||||||
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
num_procs=$(lscpu -p | grep -v '^#' | sort -u -t, -k 2,4 | wc -l) # number of physical cores
|
|
||||||
|
|
||||||
path=$(cd $(dirname $0) && pwd)
|
|
||||||
cd $(dirname $path)
|
|
||||||
${path}/Test.py -a -c --testjobs=${num_procs} -- -j${num_procs}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
|
|
||||||
# rippled Packaging and Containers
|
|
||||||
|
|
||||||
This folder contains docker container definitions and configuration
|
|
||||||
files to support building rpm and deb packages of rippled. The container
|
|
||||||
definitions include some additional software/packages that are used
|
|
||||||
for general build/test CI workflows of rippled but are not explicitly
|
|
||||||
needed for the package building workflow.
|
|
||||||
|
|
||||||
## CMake Targets
|
|
||||||
|
|
||||||
If you have docker installed on your local system, then the main
|
|
||||||
CMake file will enable several targets related to building packages:
|
|
||||||
`rpm_container`, `rpm`, `dpkg_container`, and `dpkg`. The package targets
|
|
||||||
depend on the container targets and will trigger a build of those first.
|
|
||||||
The container builds can take several dozen minutes to complete (depending
|
|
||||||
on hardware specs), so quick build cycles are not possible currently. As
|
|
||||||
such, these targets are often best suited to CI/automated build systems.
|
|
||||||
|
|
||||||
The package build can be invoked like any other cmake target from the
|
|
||||||
rippled root folder:
|
|
||||||
```
|
|
||||||
mkdir -p build/pkg && cd build/pkg
|
|
||||||
cmake -Dpackages_only=ON ../..
|
|
||||||
cmake --build . --target rpm
|
|
||||||
```
|
|
||||||
Upon successful completion, the generated package files will be in
|
|
||||||
the `build/pkg/packages` directory. For deb packages, simply replace
|
|
||||||
`rpm` with `dpkg` in the build command above.
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
FROM rippleci/centos:7
|
|
||||||
ARG GIT_COMMIT=unknown
|
|
||||||
ARG CI_USE=false
|
|
||||||
|
|
||||||
LABEL git-commit=$GIT_COMMIT
|
|
||||||
|
|
||||||
COPY centos-builder/centos_setup.sh /tmp/
|
|
||||||
COPY shared/install_cmake.sh /tmp/
|
|
||||||
RUN chmod +x /tmp/centos_setup.sh && \
|
|
||||||
chmod +x /tmp/install_cmake.sh
|
|
||||||
RUN /tmp/centos_setup.sh
|
|
||||||
|
|
||||||
RUN /tmp/install_cmake.sh 3.16.3 /opt/local/cmake-3.16
|
|
||||||
RUN ln -s /opt/local/cmake-3.16 /opt/local/cmake
|
|
||||||
ENV PATH="/opt/local/cmake/bin:$PATH"
|
|
||||||
# TODO: Install latest CMake for testing
|
|
||||||
RUN if [ "${CI_USE}" = true ] ; then /tmp/install_cmake.sh 3.16.3 /opt/local/cmake-3.16; fi
|
|
||||||
|
|
||||||
RUN mkdir -m 777 -p /opt/rippled_bld/pkg
|
|
||||||
|
|
||||||
WORKDIR /opt/rippled_bld/pkg
|
|
||||||
RUN mkdir -m 777 ./rpmbuild
|
|
||||||
RUN mkdir -m 777 ./rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
|
|
||||||
|
|
||||||
COPY packaging/rpm/build_rpm.sh ./
|
|
||||||
CMD ./build_rpm.sh
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
source /etc/os-release
|
|
||||||
|
|
||||||
yum -y upgrade
|
|
||||||
yum -y update
|
|
||||||
yum -y install epel-release centos-release-scl
|
|
||||||
yum -y install \
|
|
||||||
wget curl time gcc-c++ yum-utils autoconf automake pkgconfig libtool \
|
|
||||||
libstdc++-static rpm-build gnupg which make cmake \
|
|
||||||
devtoolset-11 devtoolset-11-gdb devtoolset-11-binutils devtoolset-11-libstdc++-devel \
|
|
||||||
devtoolset-11-libasan-devel devtoolset-11-libtsan-devel devtoolset-11-libubsan-devel devtoolset-11-liblsan-devel \
|
|
||||||
flex flex-devel bison bison-devel parallel \
|
|
||||||
ncurses ncurses-devel ncurses-libs graphviz graphviz-devel \
|
|
||||||
lzip p7zip bzip2 bzip2-devel lzma-sdk lzma-sdk-devel xz-devel \
|
|
||||||
zlib zlib-devel zlib-static texinfo openssl openssl-static \
|
|
||||||
jemalloc jemalloc-devel \
|
|
||||||
libicu-devel htop \
|
|
||||||
rh-python38 \
|
|
||||||
ninja-build git svn \
|
|
||||||
swig perl-Digest-MD5
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
set -ex
|
|
||||||
pkgtype=$1
|
|
||||||
if [ "${pkgtype}" = "rpm" ] ; then
|
|
||||||
container_name="${RPM_CONTAINER_NAME}"
|
|
||||||
elif [ "${pkgtype}" = "dpkg" ] ; then
|
|
||||||
container_name="${DPKG_CONTAINER_NAME}"
|
|
||||||
else
|
|
||||||
echo "invalid package type"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if docker pull "${ARTIFACTORY_HUB}/${container_name}:latest_${CI_COMMIT_REF_SLUG}"; then
|
|
||||||
echo "found container for latest - using as cache."
|
|
||||||
docker tag \
|
|
||||||
"${ARTIFACTORY_HUB}/${container_name}:latest_${CI_COMMIT_REF_SLUG}" \
|
|
||||||
"${container_name}:latest_${CI_COMMIT_REF_SLUG}"
|
|
||||||
CMAKE_EXTRA="-D${pkgtype}_cache_from=${container_name}:latest_${CI_COMMIT_REF_SLUG}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cmake --version
|
|
||||||
test -d build && rm -rf build
|
|
||||||
mkdir -p build/container && cd build/container
|
|
||||||
eval time \
|
|
||||||
cmake -Dpackages_only=ON -DCMAKE_VERBOSE_MAKEFILE=ON ${CMAKE_EXTRA} \
|
|
||||||
-G Ninja ../..
|
|
||||||
time cmake --build . --target "${pkgtype}_container" -- -v
|
|
||||||
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
set -ex
|
|
||||||
pkgtype=$1
|
|
||||||
if [ "${pkgtype}" = "rpm" ] ; then
|
|
||||||
container_name="${RPM_CONTAINER_FULLNAME}"
|
|
||||||
container_tag="${RPM_CONTAINER_TAG}"
|
|
||||||
elif [ "${pkgtype}" = "dpkg" ] ; then
|
|
||||||
container_name="${DPKG_CONTAINER_FULLNAME}"
|
|
||||||
container_tag="${DPKG_CONTAINER_TAG}"
|
|
||||||
else
|
|
||||||
echo "invalid package type"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
time docker pull "${ARTIFACTORY_HUB}/${container_name}"
|
|
||||||
docker tag \
|
|
||||||
"${ARTIFACTORY_HUB}/${container_name}" \
|
|
||||||
"${container_name}"
|
|
||||||
docker images
|
|
||||||
test -d build && rm -rf build
|
|
||||||
mkdir -p build/${pkgtype} && cd build/${pkgtype}
|
|
||||||
time cmake \
|
|
||||||
-Dpackages_only=ON \
|
|
||||||
-Dcontainer_label="${container_tag}" \
|
|
||||||
-Dhave_package_container=ON \
|
|
||||||
-DCMAKE_VERBOSE_MAKEFILE=ON \
|
|
||||||
-Dunity=OFF \
|
|
||||||
-G Ninja ../..
|
|
||||||
time cmake --build . --target ${pkgtype} -- -v
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
set -e
|
|
||||||
# used as a before/setup script for docker steps in gitlab-ci
|
|
||||||
# expects to be run in standard alpine/dind image
|
|
||||||
echo $(nproc)
|
|
||||||
docker login -u rippled \
|
|
||||||
-p ${ARTIFACTORY_DEPLOY_KEY_RIPPLED} ${ARTIFACTORY_HUB}
|
|
||||||
apk add --update py-pip
|
|
||||||
apk add \
|
|
||||||
bash util-linux coreutils binutils grep \
|
|
||||||
make ninja cmake build-base gcc g++ abuild git \
|
|
||||||
python3 python3-dev
|
|
||||||
pip3 install awscli
|
|
||||||
# list curdir contents to build log:
|
|
||||||
ls -la
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
case ${CI_COMMIT_REF_NAME} in
|
|
||||||
develop)
|
|
||||||
export COMPONENT="nightly"
|
|
||||||
;;
|
|
||||||
release)
|
|
||||||
export COMPONENT="unstable"
|
|
||||||
;;
|
|
||||||
master)
|
|
||||||
export COMPONENT="stable"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
export COMPONENT="_unknown_"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
@@ -1,646 +0,0 @@
|
|||||||
#########################################################################
|
|
||||||
## ##
|
|
||||||
## gitlab CI defintition for rippled build containers and distro ##
|
|
||||||
## packages (rpm and dpkg). ##
|
|
||||||
## ##
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
# NOTE: these are sensible defaults for Ripple pipelines. These
|
|
||||||
# can be overridden by project or group variables as needed.
|
|
||||||
variables:
|
|
||||||
# these containers are built manually using the rippled
|
|
||||||
# cmake build (container targets) and tagged/pushed so they
|
|
||||||
# can be used here
|
|
||||||
RPM_CONTAINER_TAG: "2023-02-13"
|
|
||||||
RPM_CONTAINER_NAME: "rippled-rpm-builder"
|
|
||||||
RPM_CONTAINER_FULLNAME: "${RPM_CONTAINER_NAME}:${RPM_CONTAINER_TAG}"
|
|
||||||
DPKG_CONTAINER_TAG: "2023-03-20"
|
|
||||||
DPKG_CONTAINER_NAME: "rippled-dpkg-builder"
|
|
||||||
DPKG_CONTAINER_FULLNAME: "${DPKG_CONTAINER_NAME}:${DPKG_CONTAINER_TAG}"
|
|
||||||
ARTIFACTORY_HOST: "artifactory.ops.ripple.com"
|
|
||||||
ARTIFACTORY_HUB: "${ARTIFACTORY_HOST}:6555"
|
|
||||||
GIT_SIGN_PUBKEYS_URL: "https://gitlab.ops.ripple.com/xrpledger/rippled-packages/snippets/49/raw"
|
|
||||||
PUBLIC_REPO_ROOT: "https://repos.ripple.com/repos"
|
|
||||||
# also need to define this variable ONLY for the primary
|
|
||||||
# build/publish pipeline on the mainline repo:
|
|
||||||
# IS_PRIMARY_REPO = "true"
|
|
||||||
|
|
||||||
stages:
|
|
||||||
- build_packages
|
|
||||||
- sign_packages
|
|
||||||
- smoketest
|
|
||||||
- verify_sig
|
|
||||||
- tag_images
|
|
||||||
- push_to_test
|
|
||||||
- verify_from_test
|
|
||||||
- wait_approval_prod
|
|
||||||
- push_to_prod
|
|
||||||
- verify_from_prod
|
|
||||||
- get_final_hashes
|
|
||||||
- build_containers
|
|
||||||
|
|
||||||
.dind_template: &dind_param
|
|
||||||
before_script:
|
|
||||||
- . ./Builds/containers/gitlab-ci/docker_alpine_setup.sh
|
|
||||||
variables:
|
|
||||||
docker_driver: overlay2
|
|
||||||
DOCKER_TLS_CERTDIR: ""
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/docker:latest
|
|
||||||
services:
|
|
||||||
# workaround for TLS issues - consider going back
|
|
||||||
# back to unversioned `dind` when issues are resolved
|
|
||||||
- name: artifactory.ops.ripple.com/docker:stable-dind
|
|
||||||
alias: docker
|
|
||||||
tags:
|
|
||||||
- 4xlarge
|
|
||||||
|
|
||||||
.only_primary_template: &only_primary
|
|
||||||
only:
|
|
||||||
refs:
|
|
||||||
- /^(master|release|develop)$/
|
|
||||||
variables:
|
|
||||||
- $IS_PRIMARY_REPO == "true"
|
|
||||||
|
|
||||||
.smoketest_local_template: &run_local_smoketest
|
|
||||||
tags:
|
|
||||||
- xlarge
|
|
||||||
script:
|
|
||||||
- . ./Builds/containers/gitlab-ci/smoketest.sh local
|
|
||||||
|
|
||||||
.smoketest_repo_template: &run_repo_smoketest
|
|
||||||
tags:
|
|
||||||
- xlarge
|
|
||||||
script:
|
|
||||||
- . ./Builds/containers/gitlab-ci/smoketest.sh repo
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
## ##
|
|
||||||
## stage: build_packages ##
|
|
||||||
## ##
|
|
||||||
## build packages using containers from previous stage. ##
|
|
||||||
## ##
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
rpm_build:
|
|
||||||
timeout: "1h 30m"
|
|
||||||
stage: build_packages
|
|
||||||
<<: *dind_param
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- build/rpm/packages/
|
|
||||||
script:
|
|
||||||
- . ./Builds/containers/gitlab-ci/build_package.sh rpm
|
|
||||||
|
|
||||||
dpkg_build:
|
|
||||||
timeout: "1h 30m"
|
|
||||||
stage: build_packages
|
|
||||||
<<: *dind_param
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- build/dpkg/packages/
|
|
||||||
script:
|
|
||||||
- . ./Builds/containers/gitlab-ci/build_package.sh dpkg
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
## ##
|
|
||||||
## stage: sign_packages ##
|
|
||||||
## ##
|
|
||||||
## build packages using containers from previous stage. ##
|
|
||||||
## ##
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
rpm_sign:
|
|
||||||
stage: sign_packages
|
|
||||||
dependencies:
|
|
||||||
- rpm_build
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/centos:7
|
|
||||||
<<: *only_primary
|
|
||||||
before_script:
|
|
||||||
- |
|
|
||||||
# Make sure GnuPG is installed
|
|
||||||
yum -y install gnupg rpm-sign
|
|
||||||
# checking GPG signing support
|
|
||||||
if [ -n "$GPG_KEY_B64" ]; then
|
|
||||||
echo "$GPG_KEY_B64"| base64 -d | gpg --batch --no-tty --allow-secret-key-import --import -
|
|
||||||
unset GPG_KEY_B64
|
|
||||||
export GPG_PASSPHRASE=$(echo $GPG_KEY_PASS_B64 | base64 -di)
|
|
||||||
unset GPG_KEY_PASS_B64
|
|
||||||
export GPG_KEYID=$(gpg --with-colon --list-secret-keys | head -n1 | cut -d : -f 5)
|
|
||||||
else
|
|
||||||
echo -e "\033[0;31m****** GPG signing disabled ******\033[0m"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- build/rpm/packages/
|
|
||||||
script:
|
|
||||||
- ls -alh build/rpm/packages
|
|
||||||
- . ./Builds/containers/gitlab-ci/sign_package.sh rpm
|
|
||||||
|
|
||||||
dpkg_sign:
|
|
||||||
stage: sign_packages
|
|
||||||
dependencies:
|
|
||||||
- dpkg_build
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/ubuntu:18.04
|
|
||||||
<<: *only_primary
|
|
||||||
before_script:
|
|
||||||
- |
|
|
||||||
# make sure we have GnuPG
|
|
||||||
apt update
|
|
||||||
apt install -y gpg dpkg-sig
|
|
||||||
# checking GPG signing support
|
|
||||||
if [ -n "$GPG_KEY_B64" ]; then
|
|
||||||
echo "$GPG_KEY_B64"| base64 -d | gpg --batch --no-tty --allow-secret-key-import --import -
|
|
||||||
unset GPG_KEY_B64
|
|
||||||
export GPG_PASSPHRASE=$(echo $GPG_KEY_PASS_B64 | base64 -di)
|
|
||||||
unset GPG_KEY_PASS_B64
|
|
||||||
export GPG_KEYID=$(gpg --with-colon --list-secret-keys | head -n1 | cut -d : -f 5)
|
|
||||||
else
|
|
||||||
echo -e "\033[0;31m****** GPG signing disabled ******\033[0m"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- build/dpkg/packages/
|
|
||||||
script:
|
|
||||||
- ls -alh build/dpkg/packages
|
|
||||||
- . ./Builds/containers/gitlab-ci/sign_package.sh dpkg
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
## ##
|
|
||||||
## stage: smoketest ##
|
|
||||||
## ##
|
|
||||||
## install unsigned packages from previous step and run unit tests. ##
|
|
||||||
## ##
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
centos_7_smoketest:
|
|
||||||
stage: smoketest
|
|
||||||
dependencies:
|
|
||||||
- rpm_build
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/centos:7
|
|
||||||
<<: *run_local_smoketest
|
|
||||||
|
|
||||||
rocky_8_smoketest:
|
|
||||||
stage: smoketest
|
|
||||||
dependencies:
|
|
||||||
- rpm_build
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/rockylinux/rockylinux:8
|
|
||||||
<<: *run_local_smoketest
|
|
||||||
|
|
||||||
fedora_37_smoketest:
|
|
||||||
stage: smoketest
|
|
||||||
dependencies:
|
|
||||||
- rpm_build
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/fedora:37
|
|
||||||
<<: *run_local_smoketest
|
|
||||||
|
|
||||||
fedora_38_smoketest:
|
|
||||||
stage: smoketest
|
|
||||||
dependencies:
|
|
||||||
- rpm_build
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/fedora:38
|
|
||||||
<<: *run_local_smoketest
|
|
||||||
|
|
||||||
ubuntu_18_smoketest:
|
|
||||||
stage: smoketest
|
|
||||||
dependencies:
|
|
||||||
- dpkg_build
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/ubuntu:18.04
|
|
||||||
<<: *run_local_smoketest
|
|
||||||
|
|
||||||
ubuntu_20_smoketest:
|
|
||||||
stage: smoketest
|
|
||||||
dependencies:
|
|
||||||
- dpkg_build
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/ubuntu:20.04
|
|
||||||
<<: *run_local_smoketest
|
|
||||||
|
|
||||||
ubuntu_22_smoketest:
|
|
||||||
stage: smoketest
|
|
||||||
dependencies:
|
|
||||||
- dpkg_build
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/ubuntu:22.04
|
|
||||||
<<: *run_local_smoketest
|
|
||||||
|
|
||||||
debian_10_smoketest:
|
|
||||||
stage: smoketest
|
|
||||||
dependencies:
|
|
||||||
- dpkg_build
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/debian:10
|
|
||||||
<<: *run_local_smoketest
|
|
||||||
|
|
||||||
debian_11_smoketest:
|
|
||||||
stage: smoketest
|
|
||||||
dependencies:
|
|
||||||
- dpkg_build
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/debian:11
|
|
||||||
<<: *run_local_smoketest
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
## ##
|
|
||||||
## stage: verify_sig ##
|
|
||||||
## ##
|
|
||||||
## use git/gpg to verify that HEAD is signed by an approved ##
|
|
||||||
## committer. The whitelist of pubkeys is manually mantained ##
|
|
||||||
## and fetched from GIT_SIGN_PUBKEYS_URL (currently a snippet ##
|
|
||||||
## link). ##
|
|
||||||
## ONLY RUNS FOR PRIMARY BRANCHES/REPO ##
|
|
||||||
## ##
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
verify_head_signed:
|
|
||||||
stage: verify_sig
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/ubuntu:latest
|
|
||||||
<<: *only_primary
|
|
||||||
script:
|
|
||||||
- . ./Builds/containers/gitlab-ci/verify_head_commit.sh
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
## ##
|
|
||||||
## stage: tag_images ##
|
|
||||||
## ##
|
|
||||||
## apply rippled version tag to containers from previous stage. ##
|
|
||||||
## ONLY RUNS FOR PRIMARY BRANCHES/REPO ##
|
|
||||||
## ##
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
tag_bld_images:
|
|
||||||
stage: tag_images
|
|
||||||
variables:
|
|
||||||
docker_driver: overlay2
|
|
||||||
DOCKER_TLS_CERTDIR: ""
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/docker:latest
|
|
||||||
services:
|
|
||||||
# workaround for TLS issues - consider going back
|
|
||||||
# back to unversioned `dind` when issues are resolved
|
|
||||||
- name: artifactory.ops.ripple.com/docker:stable-dind
|
|
||||||
alias: docker
|
|
||||||
tags:
|
|
||||||
- large
|
|
||||||
dependencies:
|
|
||||||
- rpm_sign
|
|
||||||
- dpkg_sign
|
|
||||||
<<: *only_primary
|
|
||||||
script:
|
|
||||||
- . ./Builds/containers/gitlab-ci/tag_docker_image.sh
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
## ##
|
|
||||||
## stage: push_to_test ##
|
|
||||||
## ##
|
|
||||||
## push packages to artifactory repositories (test) ##
|
|
||||||
## ONLY RUNS FOR PRIMARY BRANCHES/REPO ##
|
|
||||||
## ##
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
push_test:
|
|
||||||
stage: push_to_test
|
|
||||||
variables:
|
|
||||||
DEB_REPO: "rippled-deb-test-mirror"
|
|
||||||
RPM_REPO: "rippled-rpm-test-mirror"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/alpine:latest
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- files.info
|
|
||||||
dependencies:
|
|
||||||
- rpm_sign
|
|
||||||
- dpkg_sign
|
|
||||||
<<: *only_primary
|
|
||||||
script:
|
|
||||||
- . ./Builds/containers/gitlab-ci/push_to_artifactory.sh "PUT" "."
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
## ##
|
|
||||||
## stage: verify_from_test ##
|
|
||||||
## ##
|
|
||||||
## install/test packages from test repos. ##
|
|
||||||
## ONLY RUNS FOR PRIMARY BRANCHES/REPO ##
|
|
||||||
## ##
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
centos_7_verify_repo_test:
|
|
||||||
stage: verify_from_test
|
|
||||||
variables:
|
|
||||||
RPM_REPO: "rippled-rpm-test-mirror"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/centos:7
|
|
||||||
dependencies:
|
|
||||||
- rpm_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
|
|
||||||
rocky_8_verify_repo_test:
|
|
||||||
stage: verify_from_test
|
|
||||||
variables:
|
|
||||||
RPM_REPO: "rippled-rpm-test-mirror"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/rockylinux/rockylinux:8
|
|
||||||
dependencies:
|
|
||||||
- rpm_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
fedora_37_verify_repo_test:
|
|
||||||
stage: verify_from_test
|
|
||||||
variables:
|
|
||||||
RPM_REPO: "rippled-rpm-test-mirror"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/fedora:37
|
|
||||||
dependencies:
|
|
||||||
- rpm_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
fedora_38_verify_repo_test:
|
|
||||||
stage: verify_from_test
|
|
||||||
variables:
|
|
||||||
RPM_REPO: "rippled-rpm-test-mirror"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/fedora:38
|
|
||||||
dependencies:
|
|
||||||
- rpm_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
ubuntu_18_verify_repo_test:
|
|
||||||
stage: verify_from_test
|
|
||||||
variables:
|
|
||||||
DISTRO: "bionic"
|
|
||||||
DEB_REPO: "rippled-deb-test-mirror"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/ubuntu:18.04
|
|
||||||
dependencies:
|
|
||||||
- dpkg_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
ubuntu_20_verify_repo_test:
|
|
||||||
stage: verify_from_test
|
|
||||||
variables:
|
|
||||||
DISTRO: "focal"
|
|
||||||
DEB_REPO: "rippled-deb-test-mirror"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/ubuntu:20.04
|
|
||||||
dependencies:
|
|
||||||
- dpkg_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
ubuntu_22_verify_repo_test:
|
|
||||||
stage: verify_from_test
|
|
||||||
variables:
|
|
||||||
DISTRO: "jammy"
|
|
||||||
DEB_REPO: "rippled-deb-test-mirror"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/ubuntu:22.04
|
|
||||||
dependencies:
|
|
||||||
- dpkg_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
debian_10_verify_repo_test:
|
|
||||||
stage: verify_from_test
|
|
||||||
variables:
|
|
||||||
DISTRO: "buster"
|
|
||||||
DEB_REPO: "rippled-deb-test-mirror"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/debian:10
|
|
||||||
dependencies:
|
|
||||||
- dpkg_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
debian_11_verify_repo_test:
|
|
||||||
stage: verify_from_test
|
|
||||||
variables:
|
|
||||||
DISTRO: "bullseye"
|
|
||||||
DEB_REPO: "rippled-deb-test-mirror"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/debian:11
|
|
||||||
dependencies:
|
|
||||||
- dpkg_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
## ##
|
|
||||||
## stage: wait_approval_prod ##
|
|
||||||
## ##
|
|
||||||
## wait for manual approval before proceeding to next stage ##
|
|
||||||
## which pushes to prod repo. ##
|
|
||||||
## ONLY RUNS FOR PRIMARY BRANCHES/REPO ##
|
|
||||||
## ##
|
|
||||||
#########################################################################
|
|
||||||
wait_before_push_prod:
|
|
||||||
stage: wait_approval_prod
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/alpine:latest
|
|
||||||
<<: *only_primary
|
|
||||||
script:
|
|
||||||
- echo "proceeding to next stage"
|
|
||||||
when: manual
|
|
||||||
allow_failure: false
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
## ##
|
|
||||||
## stage: push_to_prod ##
|
|
||||||
## ##
|
|
||||||
## push packages to artifactory repositories (prod) ##
|
|
||||||
## ONLY RUNS FOR PRIMARY BRANCHES/REPO ##
|
|
||||||
## ##
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
push_prod:
|
|
||||||
variables:
|
|
||||||
DEB_REPO: "rippled-deb"
|
|
||||||
RPM_REPO: "rippled-rpm"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/alpine:latest
|
|
||||||
stage: push_to_prod
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- files.info
|
|
||||||
dependencies:
|
|
||||||
- rpm_sign
|
|
||||||
- dpkg_sign
|
|
||||||
<<: *only_primary
|
|
||||||
script:
|
|
||||||
- . ./Builds/containers/gitlab-ci/push_to_artifactory.sh "PUT" "."
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
## ##
|
|
||||||
## stage: verify_from_prod ##
|
|
||||||
## ##
|
|
||||||
## install/test packages from prod repos. ##
|
|
||||||
## ONLY RUNS FOR PRIMARY BRANCHES/REPO ##
|
|
||||||
## ##
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
centos_7_verify_repo_prod:
|
|
||||||
stage: verify_from_prod
|
|
||||||
variables:
|
|
||||||
RPM_REPO: "rippled-rpm"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/centos:7
|
|
||||||
dependencies:
|
|
||||||
- rpm_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
rocky_8_verify_repo_prod:
|
|
||||||
stage: verify_from_prod
|
|
||||||
variables:
|
|
||||||
RPM_REPO: "rippled-rpm"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/rockylinux/rockylinux:8
|
|
||||||
dependencies:
|
|
||||||
- rpm_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
fedora_37_verify_repo_prod:
|
|
||||||
stage: verify_from_prod
|
|
||||||
variables:
|
|
||||||
RPM_REPO: "rippled-rpm"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/fedora:37
|
|
||||||
dependencies:
|
|
||||||
- rpm_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
fedora_38_verify_repo_prod:
|
|
||||||
stage: verify_from_prod
|
|
||||||
variables:
|
|
||||||
RPM_REPO: "rippled-rpm"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/fedora:38
|
|
||||||
dependencies:
|
|
||||||
- rpm_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
ubuntu_18_verify_repo_prod:
|
|
||||||
stage: verify_from_prod
|
|
||||||
variables:
|
|
||||||
DISTRO: "bionic"
|
|
||||||
DEB_REPO: "rippled-deb"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/ubuntu:18.04
|
|
||||||
dependencies:
|
|
||||||
- dpkg_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
ubuntu_20_verify_repo_prod:
|
|
||||||
stage: verify_from_prod
|
|
||||||
variables:
|
|
||||||
DISTRO: "focal"
|
|
||||||
DEB_REPO: "rippled-deb"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/ubuntu:20.04
|
|
||||||
dependencies:
|
|
||||||
- dpkg_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
ubuntu_22_verify_repo_prod:
|
|
||||||
stage: verify_from_prod
|
|
||||||
variables:
|
|
||||||
DISTRO: "jammy"
|
|
||||||
DEB_REPO: "rippled-deb"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/ubuntu:22.04
|
|
||||||
dependencies:
|
|
||||||
- dpkg_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
debian_10_verify_repo_prod:
|
|
||||||
stage: verify_from_prod
|
|
||||||
variables:
|
|
||||||
DISTRO: "buster"
|
|
||||||
DEB_REPO: "rippled-deb"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/debian:10
|
|
||||||
dependencies:
|
|
||||||
- dpkg_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
debian_11_verify_repo_prod:
|
|
||||||
stage: verify_from_prod
|
|
||||||
variables:
|
|
||||||
DISTRO: "bullseye"
|
|
||||||
DEB_REPO: "rippled-deb"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/debian:11
|
|
||||||
dependencies:
|
|
||||||
- dpkg_sign
|
|
||||||
<<: *only_primary
|
|
||||||
<<: *run_repo_smoketest
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
## ##
|
|
||||||
## stage: get_final_hashes ##
|
|
||||||
## ##
|
|
||||||
## fetch final hashes from artifactory. ##
|
|
||||||
## ONLY RUNS FOR PRIMARY BRANCHES/REPO ##
|
|
||||||
## ##
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
get_prod_hashes:
|
|
||||||
variables:
|
|
||||||
DEB_REPO: "rippled-deb"
|
|
||||||
RPM_REPO: "rippled-rpm"
|
|
||||||
image:
|
|
||||||
name: artifactory.ops.ripple.com/alpine:latest
|
|
||||||
stage: get_final_hashes
|
|
||||||
artifacts:
|
|
||||||
paths:
|
|
||||||
- files.info
|
|
||||||
dependencies:
|
|
||||||
- rpm_sign
|
|
||||||
- dpkg_sign
|
|
||||||
<<: *only_primary
|
|
||||||
script:
|
|
||||||
- . ./Builds/containers/gitlab-ci/push_to_artifactory.sh "GET" ".checksums"
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
## ##
|
|
||||||
## stage: build_containers ##
|
|
||||||
## ##
|
|
||||||
## build containers from docker definitions. These containers are NOT ##
|
|
||||||
## used for the package build. This step is only used to ensure that ##
|
|
||||||
## the package build targets and files are still working properly. ##
|
|
||||||
## ##
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
build_centos_container:
|
|
||||||
stage: build_containers
|
|
||||||
<<: *dind_param
|
|
||||||
script:
|
|
||||||
- . ./Builds/containers/gitlab-ci/build_container.sh rpm
|
|
||||||
|
|
||||||
build_ubuntu_container:
|
|
||||||
stage: build_containers
|
|
||||||
<<: *dind_param
|
|
||||||
script:
|
|
||||||
- . ./Builds/containers/gitlab-ci/build_container.sh dpkg
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
set -e
|
|
||||||
action=$1
|
|
||||||
filter=$2
|
|
||||||
|
|
||||||
. ./Builds/containers/gitlab-ci/get_component.sh
|
|
||||||
|
|
||||||
apk add curl jq coreutils util-linux
|
|
||||||
TOPDIR=$(pwd)
|
|
||||||
|
|
||||||
# DPKG
|
|
||||||
|
|
||||||
cd $TOPDIR
|
|
||||||
cd build/dpkg/packages
|
|
||||||
CURLARGS="-sk -X${action} -urippled:${ARTIFACTORY_DEPLOY_KEY_RIPPLED}"
|
|
||||||
RIPPLED_PKG=$(ls rippled_*.deb)
|
|
||||||
RIPPLED_REPORTING_PKG=$(ls rippled-reporting_*.deb)
|
|
||||||
RIPPLED_DBG_PKG=$(ls rippled-dbgsym_*.*deb)
|
|
||||||
RIPPLED_REPORTING_DBG_PKG=$(ls rippled-reporting-dbgsym_*.*deb)
|
|
||||||
# TODO - where to upload src tgz?
|
|
||||||
RIPPLED_SRC=$(ls rippled_*.orig.tar.gz)
|
|
||||||
DEB_MATRIX=";deb.component=${COMPONENT};deb.architecture=amd64"
|
|
||||||
for dist in buster bullseye bionic focal jammy; do
|
|
||||||
DEB_MATRIX="${DEB_MATRIX};deb.distribution=${dist}"
|
|
||||||
done
|
|
||||||
echo "{ \"debs\": {" > "${TOPDIR}/files.info"
|
|
||||||
for deb in ${RIPPLED_PKG} ${RIPPLED_DBG_PKG} ${RIPPLED_REPORTING_PKG} ${RIPPLED_REPORTING_DBG_PKG}; do
|
|
||||||
# first item doesn't get a comma separator
|
|
||||||
if [ $deb != $RIPPLED_PKG ] ; then
|
|
||||||
echo "," >> "${TOPDIR}/files.info"
|
|
||||||
fi
|
|
||||||
echo "\"${deb}\"": | tee -a "${TOPDIR}/files.info"
|
|
||||||
ca="${CURLARGS}"
|
|
||||||
if [ "${action}" = "PUT" ] ; then
|
|
||||||
url="https://${ARTIFACTORY_HOST}/artifactory/${DEB_REPO}/pool/${COMPONENT}/${deb}${DEB_MATRIX}"
|
|
||||||
ca="${ca} -T${deb}"
|
|
||||||
elif [ "${action}" = "GET" ] ; then
|
|
||||||
url="https://${ARTIFACTORY_HOST}/artifactory/api/storage/${DEB_REPO}/pool/${COMPONENT}/${deb}"
|
|
||||||
fi
|
|
||||||
echo "file info request url --> ${url}"
|
|
||||||
eval "curl ${ca} \"${url}\"" | jq -M "${filter}" | tee -a "${TOPDIR}/files.info"
|
|
||||||
done
|
|
||||||
echo "}," >> "${TOPDIR}/files.info"
|
|
||||||
|
|
||||||
# RPM
|
|
||||||
|
|
||||||
cd $TOPDIR
|
|
||||||
cd build/rpm/packages
|
|
||||||
RIPPLED_PKG=$(ls rippled-[0-9]*.x86_64.rpm)
|
|
||||||
RIPPLED_DEV_PKG=$(ls rippled-devel*.rpm)
|
|
||||||
RIPPLED_DBG_PKG=$(ls rippled-debuginfo*.rpm)
|
|
||||||
RIPPLED_REPORTING_PKG=$(ls rippled-reporting*.rpm)
|
|
||||||
# TODO - where to upload src rpm ?
|
|
||||||
RIPPLED_SRC=$(ls rippled-[0-9]*.src.rpm)
|
|
||||||
echo "\"rpms\": {" >> "${TOPDIR}/files.info"
|
|
||||||
for rpm in ${RIPPLED_PKG} ${RIPPLED_DEV_PKG} ${RIPPLED_DBG_PKG} ${RIPPLED_REPORTING_PKG}; do
|
|
||||||
# first item doesn't get a comma separator
|
|
||||||
if [ $rpm != $RIPPLED_PKG ] ; then
|
|
||||||
echo "," >> "${TOPDIR}/files.info"
|
|
||||||
fi
|
|
||||||
echo "\"${rpm}\"": | tee -a "${TOPDIR}/files.info"
|
|
||||||
ca="${CURLARGS}"
|
|
||||||
if [ "${action}" = "PUT" ] ; then
|
|
||||||
url="https://${ARTIFACTORY_HOST}/artifactory/${RPM_REPO}/${COMPONENT}/"
|
|
||||||
ca="${ca} -T${rpm}"
|
|
||||||
elif [ "${action}" = "GET" ] ; then
|
|
||||||
url="https://${ARTIFACTORY_HOST}/artifactory/api/storage/${RPM_REPO}/${COMPONENT}/${rpm}"
|
|
||||||
fi
|
|
||||||
echo "file info request url --> ${url}"
|
|
||||||
eval "curl ${ca} \"${url}\"" | jq -M "${filter}" | tee -a "${TOPDIR}/files.info"
|
|
||||||
done
|
|
||||||
echo "}}" >> "${TOPDIR}/files.info"
|
|
||||||
jq '.' "${TOPDIR}/files.info" > "${TOPDIR}/files.info.tmp"
|
|
||||||
mv "${TOPDIR}/files.info.tmp" "${TOPDIR}/files.info"
|
|
||||||
|
|
||||||
if [ ! -z "${SLACK_NOTIFY_URL}" ] && [ "${action}" = "GET" ] ; then
|
|
||||||
# extract files.info content to variable and sanitize so it can
|
|
||||||
# be interpolated into a slack text field below
|
|
||||||
finfo=$(cat ${TOPDIR}/files.info | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/\\n/g' | sed -E 's/"/\\"/g')
|
|
||||||
# try posting file info to slack.
|
|
||||||
# can add channel field to payload if the
|
|
||||||
# default channel is incorrect. Get rid of
|
|
||||||
# newlines in payload json since slack doesn't accept them
|
|
||||||
CONTENT=$(tr -d '[\n]' <<JSON
|
|
||||||
payload={
|
|
||||||
"username": "GitlabCI",
|
|
||||||
"text": "The package build for branch \`${CI_COMMIT_REF_NAME}\` is complete. File hashes are: \`\`\`${finfo}\`\`\`",
|
|
||||||
"icon_emoji": ":package:"}
|
|
||||||
JSON
|
|
||||||
)
|
|
||||||
curl ${SLACK_NOTIFY_URL} --data-urlencode "${CONTENT}"
|
|
||||||
fi
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -eo pipefail
|
|
||||||
|
|
||||||
sign_dpkg() {
|
|
||||||
if [ -n "${GPG_KEYID}" ]; then
|
|
||||||
dpkg-sig \
|
|
||||||
-g "--no-tty --digest-algo 'sha512' --passphrase '${GPG_PASSPHRASE}' --pinentry-mode=loopback" \
|
|
||||||
-k "${GPG_KEYID}" \
|
|
||||||
--sign builder \
|
|
||||||
"build/dpkg/packages/*.deb"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
sign_rpm() {
|
|
||||||
if [ -n "${GPG_KEYID}" ] ; then
|
|
||||||
find build/rpm/packages -name "*.rpm" -exec bash -c '
|
|
||||||
echo "yes" | setsid rpm \
|
|
||||||
--define "_gpg_name ${GPG_KEYID}" \
|
|
||||||
--define "_signature gpg" \
|
|
||||||
--define "__gpg_check_password_cmd /bin/true" \
|
|
||||||
--define "__gpg_sign_cmd %{__gpg} gpg --batch --no-armor --digest-algo 'sha512' --passphrase '${GPG_PASSPHRASE}' --no-secmem-warning -u '%{_gpg_name}' --sign --detach-sign --output %{__signature_filename} %{__plaintext_filename}" \
|
|
||||||
--addsign '{} \;
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
case "${1}" in
|
|
||||||
dpkg)
|
|
||||||
sign_dpkg
|
|
||||||
;;
|
|
||||||
rpm)
|
|
||||||
sign_rpm
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Usage: ${0} (dpkg|rpm)"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
set -e
|
|
||||||
install_from=$1
|
|
||||||
use_private=${2:-0} # this option not currently needed by any CI scripts,
|
|
||||||
# reserved for possible future use
|
|
||||||
if [ "$use_private" -gt 0 ] ; then
|
|
||||||
REPO_ROOT="https://rippled:${ARTIFACTORY_DEPLOY_KEY_RIPPLED}@${ARTIFACTORY_HOST}/artifactory"
|
|
||||||
else
|
|
||||||
REPO_ROOT="${PUBLIC_REPO_ROOT}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
. ./Builds/containers/gitlab-ci/get_component.sh
|
|
||||||
|
|
||||||
. /etc/os-release
|
|
||||||
case ${ID} in
|
|
||||||
ubuntu|debian)
|
|
||||||
pkgtype="dpkg"
|
|
||||||
;;
|
|
||||||
fedora|centos|rhel|scientific|rocky)
|
|
||||||
pkgtype="rpm"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "unrecognized distro!"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# this script provides info variables about pkg version
|
|
||||||
. build/${pkgtype}/packages/build_vars
|
|
||||||
|
|
||||||
if [ "${pkgtype}" = "dpkg" ] ; then
|
|
||||||
# sometimes update fails and requires a cleanup
|
|
||||||
updateWithRetry()
|
|
||||||
{
|
|
||||||
if ! apt-get -y update ; then
|
|
||||||
rm -rvf /var/lib/apt/lists/*
|
|
||||||
apt-get -y clean
|
|
||||||
apt-get -y update
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
if [ "${install_from}" = "repo" ] ; then
|
|
||||||
apt-get -y upgrade
|
|
||||||
updateWithRetry
|
|
||||||
apt-get -y install apt apt-transport-https ca-certificates coreutils util-linux wget gnupg
|
|
||||||
wget -q -O - "${REPO_ROOT}/api/gpg/key/public" | apt-key add -
|
|
||||||
echo "deb ${REPO_ROOT}/${DEB_REPO} ${DISTRO} ${COMPONENT}" >> /etc/apt/sources.list
|
|
||||||
updateWithRetry
|
|
||||||
# uncomment this next line if you want to see the available package versions
|
|
||||||
# apt-cache policy rippled
|
|
||||||
apt-get -y install rippled=${dpkg_full_version}
|
|
||||||
elif [ "${install_from}" = "local" ] ; then
|
|
||||||
# cached pkg install
|
|
||||||
updateWithRetry
|
|
||||||
apt-get -y install libprotobuf-dev libprotoc-dev protobuf-compiler libssl-dev
|
|
||||||
rm -f build/dpkg/packages/rippled-dbgsym*.*
|
|
||||||
dpkg --no-debsig -i build/dpkg/packages/*.deb
|
|
||||||
else
|
|
||||||
echo "unrecognized pkg source!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
yum -y update
|
|
||||||
if [ "${install_from}" = "repo" ] ; then
|
|
||||||
pkgs=("yum-utils coreutils util-linux")
|
|
||||||
if [ "$ID" = "rocky" ]; then
|
|
||||||
pkgs="${pkgs[@]/coreutils}"
|
|
||||||
fi
|
|
||||||
yum install -y $pkgs
|
|
||||||
REPOFILE="/etc/yum.repos.d/artifactory.repo"
|
|
||||||
echo "[Artifactory]" > ${REPOFILE}
|
|
||||||
echo "name=Artifactory" >> ${REPOFILE}
|
|
||||||
echo "baseurl=${REPO_ROOT}/${RPM_REPO}/${COMPONENT}/" >> ${REPOFILE}
|
|
||||||
echo "enabled=1" >> ${REPOFILE}
|
|
||||||
echo "gpgcheck=0" >> ${REPOFILE}
|
|
||||||
echo "gpgkey=${REPO_ROOT}/${RPM_REPO}/${COMPONENT}/repodata/repomd.xml.key" >> ${REPOFILE}
|
|
||||||
echo "repo_gpgcheck=1" >> ${REPOFILE}
|
|
||||||
yum -y update
|
|
||||||
# uncomment this next line if you want to see the available package versions
|
|
||||||
# yum --showduplicates list rippled
|
|
||||||
yum -y install ${rpm_version_release}
|
|
||||||
elif [ "${install_from}" = "local" ] ; then
|
|
||||||
# cached pkg install
|
|
||||||
pkgs=("yum-utils openssl-static zlib-static")
|
|
||||||
if [[ "$ID" =~ rocky|fedora ]]; then
|
|
||||||
if [[ "$ID" =~ "rocky" ]]; then
|
|
||||||
sed -i 's/enabled=0/enabled=1/g' /etc/yum.repos.d/Rocky-PowerTools.repo
|
|
||||||
fi
|
|
||||||
pkgs="${pkgs[@]/openssl-static}"
|
|
||||||
fi
|
|
||||||
yum install -y $pkgs
|
|
||||||
rm -f build/rpm/packages/rippled-debug*.rpm
|
|
||||||
rm -f build/rpm/packages/*.src.rpm
|
|
||||||
rpm -i build/rpm/packages/*.rpm
|
|
||||||
else
|
|
||||||
echo "unrecognized pkg source!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# verify installed version
|
|
||||||
INSTALLED=$(/opt/ripple/bin/rippled --version | awk '{print $NF}')
|
|
||||||
if [ "${rippled_version}" != "${INSTALLED}" ] ; then
|
|
||||||
echo "INSTALLED version ${INSTALLED} does not match ${rippled_version}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
# run unit tests
|
|
||||||
/opt/ripple/bin/rippled --unittest --unittest-jobs $(nproc)
|
|
||||||
/opt/ripple/bin/validator-keys --unittest
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
set -e
|
|
||||||
docker login -u rippled \
|
|
||||||
-p ${ARTIFACTORY_DEPLOY_KEY_RIPPLED} "${ARTIFACTORY_HUB}"
|
|
||||||
# this gives us rippled_version :
|
|
||||||
source build/rpm/packages/build_vars
|
|
||||||
docker pull "${ARTIFACTORY_HUB}/${RPM_CONTAINER_FULLNAME}"
|
|
||||||
docker pull "${ARTIFACTORY_HUB}/${DPKG_CONTAINER_FULLNAME}"
|
|
||||||
# tag/push two labels...one using the current rippled version and one just using "latest"
|
|
||||||
for label in ${rippled_version} latest ; do
|
|
||||||
docker tag \
|
|
||||||
"${ARTIFACTORY_HUB}/${RPM_CONTAINER_FULLNAME}" \
|
|
||||||
"${ARTIFACTORY_HUB}/${RPM_CONTAINER_NAME}:${label}_${CI_COMMIT_REF_SLUG}"
|
|
||||||
docker push \
|
|
||||||
"${ARTIFACTORY_HUB}/${RPM_CONTAINER_NAME}:${label}_${CI_COMMIT_REF_SLUG}"
|
|
||||||
docker tag \
|
|
||||||
"${ARTIFACTORY_HUB}/${DPKG_CONTAINER_FULLNAME}" \
|
|
||||||
"${ARTIFACTORY_HUB}/${DPKG_CONTAINER_NAME}:${label}_${CI_COMMIT_REF_SLUG}"
|
|
||||||
docker push \
|
|
||||||
"${ARTIFACTORY_HUB}/${DPKG_CONTAINER_NAME}:${label}_${CI_COMMIT_REF_SLUG}"
|
|
||||||
done
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
set -ex
|
|
||||||
apt -y update
|
|
||||||
DEBIAN_FRONTEND="noninteractive" apt-get -y install tzdata
|
|
||||||
apt -y install software-properties-common curl git gnupg
|
|
||||||
curl -sk -o rippled-pubkeys.txt "${GIT_SIGN_PUBKEYS_URL}"
|
|
||||||
gpg --import rippled-pubkeys.txt
|
|
||||||
if git verify-commit HEAD; then
|
|
||||||
echo "git commit signature check passed"
|
|
||||||
else
|
|
||||||
echo "git commit signature check failed"
|
|
||||||
git log -n 5 --color \
|
|
||||||
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an> [%G?]%Creset' \
|
|
||||||
--abbrev-commit
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
# make sure pkg source files are up to date with repo
|
|
||||||
cd /opt/rippled_bld/pkg
|
|
||||||
cp -fpru rippled/Builds/containers/packaging/dpkg/debian/. debian/
|
|
||||||
cp -fpu rippled/Builds/containers/shared/rippled*.service debian/
|
|
||||||
cp -fpu rippled/Builds/containers/shared/update_sources.sh .
|
|
||||||
source update_sources.sh
|
|
||||||
|
|
||||||
# Build the dpkg
|
|
||||||
|
|
||||||
#dpkg uses - as separator, so we need to change our -bN versions to tilde
|
|
||||||
RIPPLED_DPKG_VERSION=$(echo "${RIPPLED_VERSION}" | sed 's!-!~!g')
|
|
||||||
# TODO - decide how to handle the trailing/release
|
|
||||||
# version here (hardcoded to 1). Does it ever need to change?
|
|
||||||
RIPPLED_DPKG_FULL_VERSION="${RIPPLED_DPKG_VERSION}-1"
|
|
||||||
git config --global --add safe.directory /opt/rippled_bld/pkg/rippled
|
|
||||||
cd /opt/rippled_bld/pkg/rippled
|
|
||||||
if [[ -n $(git status --porcelain) ]]; then
|
|
||||||
git status
|
|
||||||
error "Unstaged changes in this repo - please commit first"
|
|
||||||
fi
|
|
||||||
git archive --format tar.gz --prefix rippled-${RIPPLED_DPKG_VERSION}/ -o ../rippled-${RIPPLED_DPKG_VERSION}.tar.gz HEAD
|
|
||||||
cd ..
|
|
||||||
# dpkg debmake would normally create this link, but we do it manually
|
|
||||||
ln -s ./rippled-${RIPPLED_DPKG_VERSION}.tar.gz rippled_${RIPPLED_DPKG_VERSION}.orig.tar.gz
|
|
||||||
tar xvf rippled-${RIPPLED_DPKG_VERSION}.tar.gz
|
|
||||||
cd rippled-${RIPPLED_DPKG_VERSION}
|
|
||||||
cp -pr ../debian .
|
|
||||||
|
|
||||||
# dpkg requires a changelog. We don't currently maintain
|
|
||||||
# a useable one, so let's just fake it with our current version
|
|
||||||
# TODO : not sure if the "unstable" will need to change for
|
|
||||||
# release packages (?)
|
|
||||||
NOWSTR=$(TZ=UTC date -R)
|
|
||||||
cat << CHANGELOG > ./debian/changelog
|
|
||||||
rippled (${RIPPLED_DPKG_FULL_VERSION}) unstable; urgency=low
|
|
||||||
|
|
||||||
* see RELEASENOTES
|
|
||||||
|
|
||||||
-- Ripple Labs Inc. <support@ripple.com> ${NOWSTR}
|
|
||||||
CHANGELOG
|
|
||||||
|
|
||||||
# PATH must be preserved for our more modern cmake in /opt/local
|
|
||||||
# TODO : consider allowing lintian to run in future ?
|
|
||||||
export DH_BUILD_DDEBS=1
|
|
||||||
debuild --no-lintian --preserve-envvar PATH --preserve-env -us -uc
|
|
||||||
rc=$?; if [[ $rc != 0 ]]; then
|
|
||||||
error "error building dpkg"
|
|
||||||
fi
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
# copy artifacts
|
|
||||||
cp rippled-reporting_${RIPPLED_DPKG_FULL_VERSION}_amd64.deb ${PKG_OUTDIR}
|
|
||||||
cp rippled_${RIPPLED_DPKG_FULL_VERSION}_amd64.deb ${PKG_OUTDIR}
|
|
||||||
cp rippled_${RIPPLED_DPKG_FULL_VERSION}.dsc ${PKG_OUTDIR}
|
|
||||||
# dbgsym suffix is ddeb under newer debuild, but just deb under earlier
|
|
||||||
cp rippled-dbgsym_${RIPPLED_DPKG_FULL_VERSION}_amd64.* ${PKG_OUTDIR}
|
|
||||||
cp rippled-reporting-dbgsym_${RIPPLED_DPKG_FULL_VERSION}_amd64.* ${PKG_OUTDIR}
|
|
||||||
cp rippled_${RIPPLED_DPKG_FULL_VERSION}_amd64.changes ${PKG_OUTDIR}
|
|
||||||
cp rippled_${RIPPLED_DPKG_FULL_VERSION}_amd64.build ${PKG_OUTDIR}
|
|
||||||
cp rippled_${RIPPLED_DPKG_VERSION}.orig.tar.gz ${PKG_OUTDIR}
|
|
||||||
cp rippled_${RIPPLED_DPKG_FULL_VERSION}.debian.tar.xz ${PKG_OUTDIR}
|
|
||||||
# buildinfo is only generated by later version of debuild
|
|
||||||
if [ -e rippled_${RIPPLED_DPKG_FULL_VERSION}_amd64.buildinfo ] ; then
|
|
||||||
cp rippled_${RIPPLED_DPKG_FULL_VERSION}_amd64.buildinfo ${PKG_OUTDIR}
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat rippled_${RIPPLED_DPKG_FULL_VERSION}_amd64.changes
|
|
||||||
# extract the text in the .changes file that appears between
|
|
||||||
# Checksums-Sha256: ...
|
|
||||||
# and
|
|
||||||
# Files: ...
|
|
||||||
awk '/Checksums-Sha256:/{hit=1;next}/Files:/{hit=0}hit' \
|
|
||||||
rippled_${RIPPLED_DPKG_VERSION}-1_amd64.changes | \
|
|
||||||
sed -E 's!^[[:space:]]+!!' > shasums
|
|
||||||
DEB_SHA256=$(cat shasums | \
|
|
||||||
grep "rippled_${RIPPLED_DPKG_VERSION}-1_amd64.deb" | cut -d " " -f 1)
|
|
||||||
DBG_SHA256=$(cat shasums | \
|
|
||||||
grep "rippled-dbgsym_${RIPPLED_DPKG_VERSION}-1_amd64.*" | cut -d " " -f 1)
|
|
||||||
REPORTING_DBG_SHA256=$(cat shasums | \
|
|
||||||
grep "rippled-reporting-dbgsym_${RIPPLED_DPKG_VERSION}-1_amd64.*" | cut -d " " -f 1)
|
|
||||||
REPORTING_SHA256=$(cat shasums | \
|
|
||||||
grep "rippled-reporting_${RIPPLED_DPKG_VERSION}-1_amd64.deb" | cut -d " " -f 1)
|
|
||||||
SRC_SHA256=$(cat shasums | \
|
|
||||||
grep "rippled_${RIPPLED_DPKG_VERSION}.orig.tar.gz" | cut -d " " -f 1)
|
|
||||||
echo "deb_sha256=${DEB_SHA256}" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "dbg_sha256=${DBG_SHA256}" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "reporting_sha256=${REPORTING_SHA256}" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "reporting_dbg_sha256=${REPORTING_DBG_SHA256}" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "src_sha256=${SRC_SHA256}" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "rippled_version=${RIPPLED_VERSION}" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "dpkg_version=${RIPPLED_DPKG_VERSION}" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "dpkg_full_version=${RIPPLED_DPKG_FULL_VERSION}" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
rippled daemon
|
|
||||||
|
|
||||||
-- Mike Ellery <mellery451@gmail.com> Tue, 04 Dec 2018 18:19:03 +0000
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
10
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
Source: rippled
|
|
||||||
Section: misc
|
|
||||||
Priority: extra
|
|
||||||
Maintainer: Ripple Labs Inc. <support@ripple.com>
|
|
||||||
Build-Depends: cmake, debhelper (>=9), zlib1g-dev, dh-systemd, ninja-build
|
|
||||||
Standards-Version: 3.9.7
|
|
||||||
Homepage: http://ripple.com/
|
|
||||||
|
|
||||||
Package: rippled
|
|
||||||
Architecture: any
|
|
||||||
Multi-Arch: foreign
|
|
||||||
Depends: ${misc:Depends}, ${shlibs:Depends}
|
|
||||||
Description: rippled daemon
|
|
||||||
|
|
||||||
Package: rippled-reporting
|
|
||||||
Architecture: any
|
|
||||||
Multi-Arch: foreign
|
|
||||||
Depends: ${misc:Depends}, ${shlibs:Depends}
|
|
||||||
Description: rippled reporting daemon
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
|
||||||
Upstream-Name: rippled
|
|
||||||
Source: https://github.com/ripple/rippled
|
|
||||||
|
|
||||||
Files: *
|
|
||||||
Copyright: 2012-2019 Ripple Labs Inc.
|
|
||||||
|
|
||||||
License: __UNKNOWN__
|
|
||||||
|
|
||||||
The accompanying files under various copyrights.
|
|
||||||
|
|
||||||
Copyright (c) 2012, 2013, 2014 Ripple Labs Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
|
|
||||||
The accompanying files incorporate work covered by the following copyright
|
|
||||||
and previous license notice:
|
|
||||||
|
|
||||||
Copyright (c) 2011 Arthur Britto, David Schwartz, Jed McCaleb,
|
|
||||||
Vinnie Falco, Bob Way, Eric Lombrozo, Nikolaos D. Bougalis, Howard Hinnant
|
|
||||||
|
|
||||||
Some code from Raw Material Software, Ltd., provided under the terms of the
|
|
||||||
ISC License. See the corresponding source files for more details.
|
|
||||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
|
||||||
Please visit http://www.juce.com
|
|
||||||
|
|
||||||
Some code from ASIO examples:
|
|
||||||
// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
|
||||||
//
|
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
|
|
||||||
Some code from Bitcoin:
|
|
||||||
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
||||||
// Copyright (c) 2011 The Bitcoin developers
|
|
||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
|
||||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
|
||||||
|
|
||||||
Some code from Tom Wu:
|
|
||||||
This software is covered under the following copyright:
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2003-2005 Tom Wu
|
|
||||||
* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
* a copy of this software and associated documentation files (the
|
|
||||||
* "Software"), to deal in the Software without restriction, including
|
|
||||||
* without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
* permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
* the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be
|
|
||||||
* included in all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
|
|
||||||
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
|
|
||||||
* INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
|
|
||||||
* RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF
|
|
||||||
* THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT
|
|
||||||
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*
|
|
||||||
* In addition, the following condition applies:
|
|
||||||
*
|
|
||||||
* All redistributions must retain an intact copy of this copyright notice
|
|
||||||
* and disclaimer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
Address all questions regarding this license to:
|
|
||||||
|
|
||||||
Tom Wu
|
|
||||||
tjw@cs.Stanford.EDU
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
/var/log/rippled/
|
|
||||||
/var/lib/rippled/
|
|
||||||
/etc/systemd/system/rippled.service.d/
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
README.md
|
|
||||||
LICENSE.md
|
|
||||||
RELEASENOTES.md
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
opt/ripple/include
|
|
||||||
opt/ripple/lib/*.a
|
|
||||||
opt/ripple/lib/cmake/ripple
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
/var/log/rippled-reporting/
|
|
||||||
/var/lib/rippled-reporting/
|
|
||||||
/etc/systemd/system/rippled-reporting.service.d/
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
bld/rippled-reporting/rippled-reporting opt/rippled-reporting/bin
|
|
||||||
cfg/rippled-reporting.cfg opt/rippled-reporting/etc
|
|
||||||
debian/tmp/opt/rippled-reporting/etc/validators.txt opt/rippled-reporting/etc
|
|
||||||
|
|
||||||
opt/rippled-reporting/bin/update-rippled-reporting.sh
|
|
||||||
opt/rippled-reporting/bin/getRippledReportingInfo
|
|
||||||
opt/rippled-reporting/etc/update-rippled-reporting-cron
|
|
||||||
etc/logrotate.d/rippled-reporting
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
opt/rippled-reporting/etc/rippled-reporting.cfg etc/opt/rippled-reporting/rippled-reporting.cfg
|
|
||||||
opt/rippled-reporting/etc/validators.txt etc/opt/rippled-reporting/validators.txt
|
|
||||||
opt/rippled-reporting/bin/rippled-reporting usr/local/bin/rippled-reporting
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
|
|
||||||
USER_NAME=rippled-reporting
|
|
||||||
GROUP_NAME=rippled-reporting
|
|
||||||
case "$1" in
|
|
||||||
configure)
|
|
||||||
id -u $USER_NAME >/dev/null 2>&1 || \
|
|
||||||
adduser --system --quiet \
|
|
||||||
--home /nonexistent --no-create-home \
|
|
||||||
--disabled-password \
|
|
||||||
--group "$GROUP_NAME"
|
|
||||||
chown -R $USER_NAME:$GROUP_NAME /var/log/rippled-reporting/
|
|
||||||
chown -R $USER_NAME:$GROUP_NAME /var/lib/rippled-reporting/
|
|
||||||
chmod 755 /var/log/rippled-reporting/
|
|
||||||
chmod 755 /var/lib/rippled-reporting/
|
|
||||||
chown -R $USER_NAME:$GROUP_NAME /opt/rippled-reporting
|
|
||||||
|
|
||||||
;;
|
|
||||||
|
|
||||||
abort-upgrade|abort-remove|abort-deconfigure)
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo "postinst called with unknown argument \`$1'" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
||||||
#DEBHELPER#
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
/opt/ripple/etc/rippled.cfg
|
|
||||||
/opt/ripple/etc/validators.txt
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
opt/ripple/bin/rippled
|
|
||||||
opt/ripple/bin/validator-keys
|
|
||||||
opt/ripple/bin/update-rippled.sh
|
|
||||||
opt/ripple/bin/getRippledInfo
|
|
||||||
opt/ripple/etc/rippled.cfg
|
|
||||||
opt/ripple/etc/validators.txt
|
|
||||||
opt/ripple/etc/update-rippled-cron
|
|
||||||
etc/logrotate.d/rippled
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
opt/ripple/etc/rippled.cfg etc/opt/ripple/rippled.cfg
|
|
||||||
opt/ripple/etc/validators.txt etc/opt/ripple/validators.txt
|
|
||||||
opt/ripple/bin/rippled usr/local/bin/rippled
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
|
|
||||||
USER_NAME=rippled
|
|
||||||
GROUP_NAME=rippled
|
|
||||||
case "$1" in
|
|
||||||
configure)
|
|
||||||
id -u $USER_NAME >/dev/null 2>&1 || \
|
|
||||||
adduser --system --quiet \
|
|
||||||
--home /nonexistent --no-create-home \
|
|
||||||
--disabled-password \
|
|
||||||
--group "$GROUP_NAME"
|
|
||||||
chown -R $USER_NAME:$GROUP_NAME /var/log/rippled/
|
|
||||||
chown -R $USER_NAME:$GROUP_NAME /var/lib/rippled/
|
|
||||||
chown -R $USER_NAME:$GROUP_NAME /opt/ripple
|
|
||||||
chmod 755 /var/log/rippled/
|
|
||||||
chmod 755 /var/lib/rippled/
|
|
||||||
chmod 644 /opt/ripple/etc/update-rippled-cron
|
|
||||||
chmod 644 /etc/logrotate.d/rippled
|
|
||||||
chown -R root:$GROUP_NAME /opt/ripple/etc/update-rippled-cron
|
|
||||||
;;
|
|
||||||
|
|
||||||
abort-upgrade|abort-remove|abort-deconfigure)
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo "postinst called with unknown argument \`$1'" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
||||||
#DEBHELPER#
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo "postrm called with unknown argument \`$1'" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
||||||
#DEBHELPER#
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
install|upgrade)
|
|
||||||
;;
|
|
||||||
|
|
||||||
abort-upgrade)
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo "preinst called with unknown argument \`$1'" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
||||||
#DEBHELPER#
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
remove|upgrade|deconfigure)
|
|
||||||
;;
|
|
||||||
|
|
||||||
failed-upgrade)
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo "prerm called with unknown argument \`$1'" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
|
|
||||||
#DEBHELPER#
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
#!/usr/bin/make -f
|
|
||||||
export DH_VERBOSE = 1
|
|
||||||
export DH_OPTIONS = -v
|
|
||||||
# debuild sets some warnings that don't work well
|
|
||||||
# for our curent build..so try to remove those flags here:
|
|
||||||
export CFLAGS:=$(subst -Wformat,,$(CFLAGS))
|
|
||||||
export CFLAGS:=$(subst -Werror=format-security,,$(CFLAGS))
|
|
||||||
export CXXFLAGS:=$(subst -Wformat,,$(CXXFLAGS))
|
|
||||||
export CXXFLAGS:=$(subst -Werror=format-security,,$(CXXFLAGS))
|
|
||||||
|
|
||||||
%:
|
|
||||||
dh $@ --with systemd
|
|
||||||
|
|
||||||
override_dh_systemd_start:
|
|
||||||
dh_systemd_start --no-restart-on-upgrade
|
|
||||||
|
|
||||||
override_dh_auto_configure:
|
|
||||||
env
|
|
||||||
rm -rf bld
|
|
||||||
|
|
||||||
conan export external/snappy snappy/1.1.9@
|
|
||||||
|
|
||||||
conan install . \
|
|
||||||
--install-folder bld/rippled \
|
|
||||||
--build missing \
|
|
||||||
--build boost \
|
|
||||||
--build sqlite3 \
|
|
||||||
--settings build_type=Release
|
|
||||||
|
|
||||||
cmake -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \
|
|
||||||
-G Ninja \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=/opt/ripple \
|
|
||||||
-Dstatic=ON \
|
|
||||||
-Dunity=OFF \
|
|
||||||
-DCMAKE_VERBOSE_MAKEFILE=ON \
|
|
||||||
-Dvalidator_keys=ON \
|
|
||||||
-B bld/rippled
|
|
||||||
|
|
||||||
conan install . \
|
|
||||||
--install-folder bld/rippled-reporting \
|
|
||||||
--build missing \
|
|
||||||
--build boost \
|
|
||||||
--build sqlite3 \
|
|
||||||
--build libuv \
|
|
||||||
--settings build_type=Release \
|
|
||||||
--options reporting=True
|
|
||||||
|
|
||||||
cmake -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \
|
|
||||||
-G Ninja \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=/opt/rippled-reporting \
|
|
||||||
-Dstatic=ON \
|
|
||||||
-Dunity=OFF \
|
|
||||||
-DCMAKE_VERBOSE_MAKEFILE=ON \
|
|
||||||
-Dreporting=ON \
|
|
||||||
-B bld/rippled-reporting
|
|
||||||
|
|
||||||
override_dh_auto_build:
|
|
||||||
cmake --build bld/rippled --target rippled --target validator-keys -j${nproc}
|
|
||||||
|
|
||||||
cmake --build bld/rippled-reporting --target rippled -j${nproc}
|
|
||||||
|
|
||||||
override_dh_auto_install:
|
|
||||||
cmake --install bld/rippled --prefix debian/tmp/opt/ripple
|
|
||||||
install -D bld/rippled/validator-keys/validator-keys debian/tmp/opt/ripple/bin/validator-keys
|
|
||||||
install -D Builds/containers/shared/update-rippled.sh debian/tmp/opt/ripple/bin/update-rippled.sh
|
|
||||||
install -D bin/getRippledInfo debian/tmp/opt/ripple/bin/getRippledInfo
|
|
||||||
install -D Builds/containers/shared/update-rippled-cron debian/tmp/opt/ripple/etc/update-rippled-cron
|
|
||||||
install -D Builds/containers/shared/rippled-logrotate debian/tmp/etc/logrotate.d/rippled
|
|
||||||
rm -rf debian/tmp/opt/ripple/lib64/cmake/date
|
|
||||||
|
|
||||||
mkdir -p debian/tmp/opt/rippled-reporting/etc
|
|
||||||
mkdir -p debian/tmp/opt/rippled-reporting/bin
|
|
||||||
cp cfg/validators-example.txt debian/tmp/opt/rippled-reporting/etc/validators.txt
|
|
||||||
|
|
||||||
sed -E 's/rippled?/rippled-reporting/g' Builds/containers/shared/update-rippled.sh > debian/tmp/opt/rippled-reporting/bin/update-rippled-reporting.sh
|
|
||||||
sed -E 's/rippled?/rippled-reporting/g' bin/getRippledInfo > debian/tmp/opt/rippled-reporting/bin/getRippledReportingInfo
|
|
||||||
sed -E 's/rippled?/rippled-reporting/g' Builds/containers/shared/update-rippled-cron > debian/tmp/opt/rippled-reporting/etc/update-rippled-reporting-cron
|
|
||||||
sed -E 's/rippled?/rippled-reporting/g' Builds/containers/shared/rippled-logrotate > debian/tmp/etc/logrotate.d/rippled-reporting
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
3.0 (quilt)
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
#abort-on-upstream-changes
|
|
||||||
#unapply-patches
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
enable rippled-reporting.service
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
enable rippled.service
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
cd /opt/rippled_bld/pkg
|
|
||||||
cp -fpu rippled/Builds/containers/packaging/rpm/rippled.spec .
|
|
||||||
cp -fpu rippled/Builds/containers/shared/update_sources.sh .
|
|
||||||
source update_sources.sh
|
|
||||||
|
|
||||||
# Build the rpm
|
|
||||||
|
|
||||||
IFS='-' read -r RIPPLED_RPM_VERSION RELEASE <<< "$RIPPLED_VERSION"
|
|
||||||
export RIPPLED_RPM_VERSION
|
|
||||||
|
|
||||||
RPM_RELEASE=${RPM_RELEASE-1}
|
|
||||||
|
|
||||||
# post-release version
|
|
||||||
if [ "hf" = "$(echo "$RELEASE" | cut -c -2)" ]; then
|
|
||||||
RPM_RELEASE="${RPM_RELEASE}.${RELEASE}"
|
|
||||||
# pre-release version (-b or -rc)
|
|
||||||
elif [[ $RELEASE ]]; then
|
|
||||||
RPM_RELEASE="0.${RPM_RELEASE}.${RELEASE}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
export RPM_RELEASE
|
|
||||||
|
|
||||||
if [[ $RPM_PATCH ]]; then
|
|
||||||
RPM_PATCH=".${RPM_PATCH}"
|
|
||||||
export RPM_PATCH
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd /opt/rippled_bld/pkg/rippled
|
|
||||||
|
|
||||||
if [[ -n $(git status --porcelain) ]]; then
|
|
||||||
git status
|
|
||||||
error "Unstaged changes in this repo - please commit first"
|
|
||||||
fi
|
|
||||||
|
|
||||||
git archive --format tar.gz --prefix rippled/ -o ../rpmbuild/SOURCES/rippled.tar.gz HEAD
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
source /opt/rh/devtoolset-11/enable
|
|
||||||
|
|
||||||
rpmbuild --define "_topdir ${PWD}/rpmbuild" -ba rippled.spec
|
|
||||||
|
|
||||||
rc=$?; if [[ $rc != 0 ]]; then
|
|
||||||
error "error building rpm"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make a tar of the rpm and source rpm
|
|
||||||
RPM_VERSION_RELEASE=$(rpm -qp --qf='%{NAME}-%{VERSION}-%{RELEASE}' ./rpmbuild/RPMS/x86_64/rippled-[0-9]*.rpm)
|
|
||||||
tar_file=$RPM_VERSION_RELEASE.tar.gz
|
|
||||||
|
|
||||||
cp ./rpmbuild/RPMS/x86_64/* ${PKG_OUTDIR}
|
|
||||||
cp ./rpmbuild/SRPMS/* ${PKG_OUTDIR}
|
|
||||||
|
|
||||||
RPM_MD5SUM=$(rpm -q --queryformat '%{SIGMD5}\n' -p ./rpmbuild/RPMS/x86_64/rippled-[0-9]*.rpm 2>/dev/null)
|
|
||||||
DBG_MD5SUM=$(rpm -q --queryformat '%{SIGMD5}\n' -p ./rpmbuild/RPMS/x86_64/rippled-debuginfo*.rpm 2>/dev/null)
|
|
||||||
DEV_MD5SUM=$(rpm -q --queryformat '%{SIGMD5}\n' -p ./rpmbuild/RPMS/x86_64/rippled-devel*.rpm 2>/dev/null)
|
|
||||||
REP_MD5SUM=$(rpm -q --queryformat '%{SIGMD5}\n' -p ./rpmbuild/RPMS/x86_64/rippled-reporting*.rpm 2>/dev/null)
|
|
||||||
SRC_MD5SUM=$(rpm -q --queryformat '%{SIGMD5}\n' -p ./rpmbuild/SRPMS/*.rpm 2>/dev/null)
|
|
||||||
|
|
||||||
RPM_SHA256="$(sha256sum ./rpmbuild/RPMS/x86_64/rippled-[0-9]*.rpm | awk '{ print $1}')"
|
|
||||||
DBG_SHA256="$(sha256sum ./rpmbuild/RPMS/x86_64/rippled-debuginfo*.rpm | awk '{ print $1}')"
|
|
||||||
REP_SHA256="$(sha256sum ./rpmbuild/RPMS/x86_64/rippled-reporting*.rpm | awk '{ print $1}')"
|
|
||||||
DEV_SHA256="$(sha256sum ./rpmbuild/RPMS/x86_64/rippled-devel*.rpm | awk '{ print $1}')"
|
|
||||||
SRC_SHA256="$(sha256sum ./rpmbuild/SRPMS/*.rpm | awk '{ print $1}')"
|
|
||||||
|
|
||||||
echo "rpm_md5sum=$RPM_MD5SUM" > ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "rep_md5sum=$REP_MD5SUM" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "dbg_md5sum=$DBG_MD5SUM" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "dev_md5sum=$DEV_MD5SUM" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "src_md5sum=$SRC_MD5SUM" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "rpm_sha256=$RPM_SHA256" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "rep_sha256=$REP_SHA256" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "dbg_sha256=$DBG_SHA256" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "dev_sha256=$DEV_SHA256" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "src_sha256=$SRC_SHA256" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "rippled_version=$RIPPLED_VERSION" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "rpm_version=$RIPPLED_RPM_VERSION" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "rpm_file_name=$tar_file" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
echo "rpm_version_release=$RPM_VERSION_RELEASE" >> ${PKG_OUTDIR}/build_vars
|
|
||||||
@@ -1,236 +0,0 @@
|
|||||||
%define rippled_version %(echo $RIPPLED_RPM_VERSION)
|
|
||||||
%define rpm_release %(echo $RPM_RELEASE)
|
|
||||||
%define rpm_patch %(echo $RPM_PATCH)
|
|
||||||
%define _prefix /opt/ripple
|
|
||||||
|
|
||||||
Name: rippled
|
|
||||||
# Dashes in Version extensions must be converted to underscores
|
|
||||||
Version: %{rippled_version}
|
|
||||||
Release: %{rpm_release}%{?dist}%{rpm_patch}
|
|
||||||
Summary: rippled daemon
|
|
||||||
|
|
||||||
License: MIT
|
|
||||||
URL: http://ripple.com/
|
|
||||||
Source0: rippled.tar.gz
|
|
||||||
|
|
||||||
BuildRequires: cmake zlib-static ninja-build
|
|
||||||
|
|
||||||
%description
|
|
||||||
rippled
|
|
||||||
|
|
||||||
%package devel
|
|
||||||
Summary: Files for development of applications using xrpl core library
|
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: zlib-static
|
|
||||||
|
|
||||||
%description devel
|
|
||||||
core library for development of standalone applications that sign transactions.
|
|
||||||
|
|
||||||
%package reporting
|
|
||||||
Summary: Reporting Server for rippled
|
|
||||||
|
|
||||||
%description reporting
|
|
||||||
History server for XRP Ledger
|
|
||||||
|
|
||||||
%prep
|
|
||||||
%setup -c -n rippled
|
|
||||||
|
|
||||||
%build
|
|
||||||
rm -rf ~/.conan/profiles/default
|
|
||||||
|
|
||||||
cp /opt/libcstd/libstdc++.so.6.0.22 /usr/lib64
|
|
||||||
cp /opt/libcstd/libstdc++.so.6.0.22 /lib64
|
|
||||||
ln -sf /usr/lib64/libstdc++.so.6.0.22 /usr/lib64/libstdc++.so.6
|
|
||||||
ln -sf /lib64/libstdc++.so.6.0.22 /usr/lib64/libstdc++.so.6
|
|
||||||
|
|
||||||
source /opt/rh/rh-python38/enable
|
|
||||||
pip install "conan<2"
|
|
||||||
conan profile new default --detect
|
|
||||||
conan profile update settings.compiler.libcxx=libstdc++11 default
|
|
||||||
conan profile update settings.compiler.cppstd=20 default
|
|
||||||
|
|
||||||
cd rippled
|
|
||||||
|
|
||||||
mkdir -p bld.rippled
|
|
||||||
conan export external/snappy snappy/1.1.9@
|
|
||||||
|
|
||||||
pushd bld.rippled
|
|
||||||
conan install .. \
|
|
||||||
--settings build_type=Release \
|
|
||||||
--output-folder . \
|
|
||||||
--build missing
|
|
||||||
|
|
||||||
cmake -G Ninja \
|
|
||||||
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-Dunity=OFF \
|
|
||||||
-Dstatic=ON \
|
|
||||||
-Dvalidator_keys=ON \
|
|
||||||
-DCMAKE_VERBOSE_MAKEFILE=ON \
|
|
||||||
..
|
|
||||||
|
|
||||||
cmake --build . --parallel $(nproc) --target rippled --target validator-keys
|
|
||||||
popd
|
|
||||||
|
|
||||||
mkdir -p bld.rippled-reporting
|
|
||||||
pushd bld.rippled-reporting
|
|
||||||
|
|
||||||
conan install .. \
|
|
||||||
--settings build_type=Release \
|
|
||||||
--output-folder . \
|
|
||||||
--build missing \
|
|
||||||
--settings compiler.cppstd=17 \
|
|
||||||
--options reporting=True
|
|
||||||
|
|
||||||
cmake -G Ninja \
|
|
||||||
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-Dunity=OFF \
|
|
||||||
-Dstatic=ON \
|
|
||||||
-Dvalidator_keys=ON \
|
|
||||||
-Dreporting=ON \
|
|
||||||
-DCMAKE_VERBOSE_MAKEFILE=ON \
|
|
||||||
..
|
|
||||||
|
|
||||||
cmake --build . --parallel $(nproc) --target rippled
|
|
||||||
|
|
||||||
%pre
|
|
||||||
test -e /etc/pki/tls || { mkdir -p /etc/pki; ln -s /usr/lib/ssl /etc/pki/tls; }
|
|
||||||
|
|
||||||
%install
|
|
||||||
rm -rf $RPM_BUILD_ROOT
|
|
||||||
DESTDIR=$RPM_BUILD_ROOT cmake --build rippled/bld.rippled --target install #-- -v
|
|
||||||
mkdir -p $RPM_BUILD_ROOT
|
|
||||||
rm -rf ${RPM_BUILD_ROOT}/%{_prefix}/lib64/
|
|
||||||
install -d ${RPM_BUILD_ROOT}/etc/opt/ripple
|
|
||||||
install -d ${RPM_BUILD_ROOT}/usr/local/bin
|
|
||||||
|
|
||||||
install -D ./rippled/cfg/rippled-example.cfg ${RPM_BUILD_ROOT}/%{_prefix}/etc/rippled.cfg
|
|
||||||
install -D ./rippled/cfg/validators-example.txt ${RPM_BUILD_ROOT}/%{_prefix}/etc/validators.txt
|
|
||||||
|
|
||||||
ln -sf %{_prefix}/etc/rippled.cfg ${RPM_BUILD_ROOT}/etc/opt/ripple/rippled.cfg
|
|
||||||
ln -sf %{_prefix}/etc/validators.txt ${RPM_BUILD_ROOT}/etc/opt/ripple/validators.txt
|
|
||||||
ln -sf %{_prefix}/bin/rippled ${RPM_BUILD_ROOT}/usr/local/bin/rippled
|
|
||||||
install -D rippled/bld.rippled/validator-keys/validator-keys ${RPM_BUILD_ROOT}%{_bindir}/validator-keys
|
|
||||||
install -D ./rippled/Builds/containers/shared/rippled.service ${RPM_BUILD_ROOT}/usr/lib/systemd/system/rippled.service
|
|
||||||
install -D ./rippled/Builds/containers/packaging/rpm/50-rippled.preset ${RPM_BUILD_ROOT}/usr/lib/systemd/system-preset/50-rippled.preset
|
|
||||||
install -D ./rippled/Builds/containers/shared/update-rippled.sh ${RPM_BUILD_ROOT}%{_bindir}/update-rippled.sh
|
|
||||||
install -D ./rippled/bin/getRippledInfo ${RPM_BUILD_ROOT}%{_bindir}/getRippledInfo
|
|
||||||
install -D ./rippled/Builds/containers/shared/update-rippled-cron ${RPM_BUILD_ROOT}%{_prefix}/etc/update-rippled-cron
|
|
||||||
install -D ./rippled/Builds/containers/shared/rippled-logrotate ${RPM_BUILD_ROOT}/etc/logrotate.d/rippled
|
|
||||||
install -d $RPM_BUILD_ROOT/var/log/rippled
|
|
||||||
install -d $RPM_BUILD_ROOT/var/lib/rippled
|
|
||||||
|
|
||||||
# reporting mode
|
|
||||||
%define _prefix /opt/rippled-reporting
|
|
||||||
mkdir -p ${RPM_BUILD_ROOT}/etc/opt/rippled-reporting/
|
|
||||||
install -D rippled/bld.rippled-reporting/rippled-reporting ${RPM_BUILD_ROOT}%{_bindir}/rippled-reporting
|
|
||||||
install -D ./rippled/cfg/rippled-reporting.cfg ${RPM_BUILD_ROOT}%{_prefix}/etc/rippled-reporting.cfg
|
|
||||||
install -D ./rippled/cfg/validators-example.txt ${RPM_BUILD_ROOT}%{_prefix}/etc/validators.txt
|
|
||||||
install -D ./rippled/Builds/containers/packaging/rpm/50-rippled-reporting.preset ${RPM_BUILD_ROOT}/usr/lib/systemd/system-preset/50-rippled-reporting.preset
|
|
||||||
ln -s %{_prefix}/bin/rippled-reporting ${RPM_BUILD_ROOT}/usr/local/bin/rippled-reporting
|
|
||||||
ln -s %{_prefix}/etc/rippled-reporting.cfg ${RPM_BUILD_ROOT}/etc/opt/rippled-reporting/rippled-reporting.cfg
|
|
||||||
ln -s %{_prefix}/etc/validators.txt ${RPM_BUILD_ROOT}/etc/opt/rippled-reporting/validators.txt
|
|
||||||
install -d $RPM_BUILD_ROOT/var/log/rippled-reporting
|
|
||||||
install -d $RPM_BUILD_ROOT/var/lib/rippled-reporting
|
|
||||||
install -D ./rippled/Builds/containers/shared/rippled-reporting.service ${RPM_BUILD_ROOT}/usr/lib/systemd/system/rippled-reporting.service
|
|
||||||
sed -E 's/rippled?/rippled-reporting/g' ./rippled/Builds/containers/shared/update-rippled.sh > ${RPM_BUILD_ROOT}%{_bindir}/update-rippled-reporting.sh
|
|
||||||
sed -E 's/rippled?/rippled-reporting/g' ./rippled/bin/getRippledInfo > ${RPM_BUILD_ROOT}%{_bindir}/getRippledReportingInfo
|
|
||||||
sed -E 's/rippled?/rippled-reporting/g' ./rippled/Builds/containers/shared/update-rippled-cron > ${RPM_BUILD_ROOT}%{_prefix}/etc/update-rippled-reporting-cron
|
|
||||||
sed -E 's/rippled?/rippled-reporting/g' ./rippled/Builds/containers/shared/rippled-logrotate > ${RPM_BUILD_ROOT}/etc/logrotate.d/rippled-reporting
|
|
||||||
|
|
||||||
|
|
||||||
%post
|
|
||||||
%define _prefix /opt/ripple
|
|
||||||
USER_NAME=rippled
|
|
||||||
GROUP_NAME=rippled
|
|
||||||
|
|
||||||
getent passwd $USER_NAME &>/dev/null || useradd $USER_NAME
|
|
||||||
getent group $GROUP_NAME &>/dev/null || groupadd $GROUP_NAME
|
|
||||||
|
|
||||||
chown -R $USER_NAME:$GROUP_NAME /var/log/rippled/
|
|
||||||
chown -R $USER_NAME:$GROUP_NAME /var/lib/rippled/
|
|
||||||
chown -R $USER_NAME:$GROUP_NAME %{_prefix}/
|
|
||||||
|
|
||||||
chmod 755 /var/log/rippled/
|
|
||||||
chmod 755 /var/lib/rippled/
|
|
||||||
|
|
||||||
chmod 644 %{_prefix}/etc/update-rippled-cron
|
|
||||||
chmod 644 /etc/logrotate.d/rippled
|
|
||||||
chown -R root:$GROUP_NAME %{_prefix}/etc/update-rippled-cron
|
|
||||||
|
|
||||||
%post reporting
|
|
||||||
%define _prefix /opt/rippled-reporting
|
|
||||||
USER_NAME=rippled-reporting
|
|
||||||
GROUP_NAME=rippled-reporting
|
|
||||||
|
|
||||||
getent passwd $USER_NAME &>/dev/null || useradd -r $USER_NAME
|
|
||||||
getent group $GROUP_NAME &>/dev/null || groupadd $GROUP_NAME
|
|
||||||
|
|
||||||
chown -R $USER_NAME:$GROUP_NAME /var/log/rippled-reporting/
|
|
||||||
chown -R $USER_NAME:$GROUP_NAME /var/lib/rippled-reporting/
|
|
||||||
chown -R $USER_NAME:$GROUP_NAME %{_prefix}/
|
|
||||||
|
|
||||||
chmod 755 /var/log/rippled-reporting/
|
|
||||||
chmod 755 /var/lib/rippled-reporting/
|
|
||||||
chmod -x /usr/lib/systemd/system/rippled-reporting.service
|
|
||||||
|
|
||||||
|
|
||||||
%files
|
|
||||||
%define _prefix /opt/ripple
|
|
||||||
%doc rippled/README.md rippled/LICENSE.md
|
|
||||||
%{_bindir}/rippled
|
|
||||||
/usr/local/bin/rippled
|
|
||||||
%{_bindir}/update-rippled.sh
|
|
||||||
%{_bindir}/getRippledInfo
|
|
||||||
%{_prefix}/etc/update-rippled-cron
|
|
||||||
%{_bindir}/validator-keys
|
|
||||||
%config(noreplace) %{_prefix}/etc/rippled.cfg
|
|
||||||
%config(noreplace) /etc/opt/ripple/rippled.cfg
|
|
||||||
%config(noreplace) %{_prefix}/etc/validators.txt
|
|
||||||
%config(noreplace) /etc/opt/ripple/validators.txt
|
|
||||||
%config(noreplace) /etc/logrotate.d/rippled
|
|
||||||
%config(noreplace) /usr/lib/systemd/system/rippled.service
|
|
||||||
%config(noreplace) /usr/lib/systemd/system-preset/50-rippled.preset
|
|
||||||
|
|
||||||
%dir /var/log/rippled/
|
|
||||||
%dir /var/lib/rippled/
|
|
||||||
|
|
||||||
%files devel
|
|
||||||
%{_prefix}/include
|
|
||||||
%{_prefix}/lib/*.a
|
|
||||||
%{_prefix}/lib/cmake/ripple
|
|
||||||
|
|
||||||
%files reporting
|
|
||||||
%define _prefix /opt/rippled-reporting
|
|
||||||
%doc rippled/README.md rippled/LICENSE.md
|
|
||||||
|
|
||||||
%{_bindir}/rippled-reporting
|
|
||||||
/usr/local/bin/rippled-reporting
|
|
||||||
%config(noreplace) /etc/opt/rippled-reporting/rippled-reporting.cfg
|
|
||||||
%config(noreplace) %{_prefix}/etc/rippled-reporting.cfg
|
|
||||||
%config(noreplace) %{_prefix}/etc/validators.txt
|
|
||||||
%config(noreplace) /etc/opt/rippled-reporting/validators.txt
|
|
||||||
%config(noreplace) /usr/lib/systemd/system/rippled-reporting.service
|
|
||||||
%config(noreplace) /usr/lib/systemd/system-preset/50-rippled-reporting.preset
|
|
||||||
%dir /var/log/rippled-reporting/
|
|
||||||
%dir /var/lib/rippled-reporting/
|
|
||||||
%{_bindir}/update-rippled-reporting.sh
|
|
||||||
%{_bindir}/getRippledReportingInfo
|
|
||||||
%{_prefix}/etc/update-rippled-reporting-cron
|
|
||||||
%config(noreplace) /etc/logrotate.d/rippled-reporting
|
|
||||||
|
|
||||||
%changelog
|
|
||||||
* Wed Aug 28 2019 Mike Ellery <mellery451@gmail.com>
|
|
||||||
- Switch to subproject build for validator-keys
|
|
||||||
|
|
||||||
* Wed May 15 2019 Mike Ellery <mellery451@gmail.com>
|
|
||||||
- Make validator-keys use local rippled build for core lib
|
|
||||||
|
|
||||||
* Wed Aug 01 2018 Mike Ellery <mellery451@gmail.com>
|
|
||||||
- add devel package for signing library
|
|
||||||
|
|
||||||
* Thu Jun 02 2016 Brandon Wilson <bwilson@ripple.com>
|
|
||||||
- Install validators.txt
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
IFS=. read cm_maj cm_min cm_rel <<<"$1"
|
|
||||||
: ${cm_rel:-0}
|
|
||||||
CMAKE_ROOT=${2:-"${HOME}/cmake"}
|
|
||||||
|
|
||||||
function cmake_version ()
|
|
||||||
{
|
|
||||||
if [[ -d ${CMAKE_ROOT} ]] ; then
|
|
||||||
local perms=$(test $(uname) = "Linux" && echo "/111" || echo "+111")
|
|
||||||
local installed=$(find ${CMAKE_ROOT} -perm ${perms} -type f -name cmake)
|
|
||||||
if [[ "${installed}" != "" ]] ; then
|
|
||||||
echo "$(${installed} --version | head -1)"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
installed=$(cmake_version)
|
|
||||||
if [[ "${installed}" != "" && ${installed} =~ ${cm_maj}.${cm_min}.${cm_rel} ]] ; then
|
|
||||||
echo "cmake already installed: ${installed}"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
# From CMake 20+ "Linux" is lowercase so using `uname` won't create be the correct path
|
|
||||||
if [ ${cm_min} -gt 19 ]; then
|
|
||||||
linux="linux"
|
|
||||||
else
|
|
||||||
linux=$(uname)
|
|
||||||
fi
|
|
||||||
pkgname="cmake-${cm_maj}.${cm_min}.${cm_rel}-${linux}-x86_64.tar.gz"
|
|
||||||
tmppkg="/tmp/cmake.tar.gz"
|
|
||||||
wget --quiet https://cmake.org/files/v${cm_maj}.${cm_min}/${pkgname} -O ${tmppkg}
|
|
||||||
mkdir -p ${CMAKE_ROOT}
|
|
||||||
cd ${CMAKE_ROOT}
|
|
||||||
tar --strip-components 1 -xf ${tmppkg}
|
|
||||||
rm -f ${tmppkg}
|
|
||||||
echo "installed: $(cmake_version)"
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
/var/log/rippled/*.log {
|
|
||||||
daily
|
|
||||||
minsize 200M
|
|
||||||
rotate 7
|
|
||||||
nocreate
|
|
||||||
missingok
|
|
||||||
notifempty
|
|
||||||
compress
|
|
||||||
compresscmd /usr/bin/nice
|
|
||||||
compressoptions -n19 ionice -c3 gzip
|
|
||||||
compressext .gz
|
|
||||||
postrotate
|
|
||||||
/opt/ripple/bin/rippled --conf /opt/ripple/etc/rippled.cfg logrotate
|
|
||||||
endscript
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Ripple Daemon
|
|
||||||
After=network-online.target
|
|
||||||
Wants=network-online.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
ExecStart=/opt/rippled-reporting/bin/rippled-reporting --silent --conf /etc/opt/rippled-reporting/rippled-reporting.cfg
|
|
||||||
Restart=on-failure
|
|
||||||
User=rippled-reporting
|
|
||||||
Group=rippled-reporting
|
|
||||||
LimitNOFILE=65536
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Ripple Daemon
|
|
||||||
After=network-online.target
|
|
||||||
Wants=network-online.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
ExecStart=/opt/ripple/bin/rippled --net --silent --conf /etc/opt/ripple/rippled.cfg
|
|
||||||
Restart=on-failure
|
|
||||||
User=rippled
|
|
||||||
Group=rippled
|
|
||||||
LimitNOFILE=65536
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
# For automatic updates, symlink this file to /etc/cron.d/
|
|
||||||
# Do not remove the newline at the end of this cron script
|
|
||||||
|
|
||||||
# bash required for use of RANDOM below.
|
|
||||||
SHELL=/bin/bash
|
|
||||||
PATH=/sbin;/bin;/usr/sbin;/usr/bin
|
|
||||||
|
|
||||||
# invoke check/update script with random delay up to 59 mins
|
|
||||||
0 * * * * root sleep $((RANDOM*3540/32768)) && /opt/ripple/bin/update-rippled.sh
|
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user