mirror of
				https://github.com/XRPLF/rippled.git
				synced 2025-11-04 11:15:56 +00:00 
			
		
		
		
	chore: Update CI to use Conan 2 (#5556)
This is a minimally invasive update to use Conan 2 provided by our new build images.
This commit is contained in:
		
							
								
								
									
										43
									
								
								.github/actions/dependencies/action.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										43
									
								
								.github/actions/dependencies/action.yml
									
									
									
									
										vendored
									
									
								
							@@ -6,36 +6,33 @@ inputs:
 | 
			
		||||
runs:
 | 
			
		||||
  using: composite
 | 
			
		||||
  steps:
 | 
			
		||||
    - name: unlock Conan
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: conan remove --locks
 | 
			
		||||
    - name: export custom recipes
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        conan config set general.revisions_enabled=1
 | 
			
		||||
        conan export external/snappy snappy/1.1.10@
 | 
			
		||||
        conan export external/rocksdb rocksdb/9.7.3@
 | 
			
		||||
        conan export external/soci soci/4.0.3@
 | 
			
		||||
        conan export external/nudb nudb/2.0.8@
 | 
			
		||||
        conan export --version 1.1.10 external/snappy
 | 
			
		||||
        conan export --version 9.7.3 external/rocksdb
 | 
			
		||||
        conan export --version 4.0.3 external/soci
 | 
			
		||||
        conan export --version 2.0.8 external/nudb
 | 
			
		||||
    - name: add Ripple Conan remote
 | 
			
		||||
      if: env.CONAN_URL != ''
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        conan remote list
 | 
			
		||||
        conan remote remove ripple || true
 | 
			
		||||
        # Do not quote the URL. An empty string will be accepted (with
 | 
			
		||||
        # a non-fatal warning), but a missing argument will not.
 | 
			
		||||
        conan remote add ripple ${{ env.CONAN_URL }} --insert 0
 | 
			
		||||
        if conan remote list | grep -q "ripple"; then
 | 
			
		||||
            conan remote remove ripple
 | 
			
		||||
            echo "Removed conan remote ripple"
 | 
			
		||||
        fi
 | 
			
		||||
        conan remote add --index 0 ripple "${CONAN_URL}"
 | 
			
		||||
        echo "Added conan remote ripple at ${CONAN_URL}"
 | 
			
		||||
 | 
			
		||||
    - name: try to authenticate to Ripple Conan remote
 | 
			
		||||
      if: env.CONAN_LOGIN_USERNAME_RIPPLE != '' && env.CONAN_PASSWORD_RIPPLE != ''
 | 
			
		||||
      id: remote
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        # `conan user` implicitly uses the environment variables
 | 
			
		||||
        # CONAN_LOGIN_USERNAME_<REMOTE> and CONAN_PASSWORD_<REMOTE>.
 | 
			
		||||
        # https://docs.conan.io/1/reference/commands/misc/user.html#using-environment-variables
 | 
			
		||||
        # https://docs.conan.io/1/reference/env_vars.html#conan-login-username-conan-login-username-remote-name
 | 
			
		||||
        # https://docs.conan.io/1/reference/env_vars.html#conan-password-conan-password-remote-name
 | 
			
		||||
        echo outcome=$(conan user --remote ripple --password >&2 \
 | 
			
		||||
          && echo success || echo failure) | tee ${GITHUB_OUTPUT}
 | 
			
		||||
        echo "Authenticating to ripple remote..."
 | 
			
		||||
        conan remote auth ripple --force
 | 
			
		||||
        conan remote list-users
 | 
			
		||||
 | 
			
		||||
    - name: list missing binaries
 | 
			
		||||
      id: binaries
 | 
			
		||||
      shell: bash
 | 
			
		||||
@@ -51,7 +48,7 @@ runs:
 | 
			
		||||
        conan install \
 | 
			
		||||
          --output-folder . \
 | 
			
		||||
          --build missing \
 | 
			
		||||
          --options tests=True \
 | 
			
		||||
          --options xrpld=True \
 | 
			
		||||
          --settings build_type=${{ inputs.configuration }} \
 | 
			
		||||
          --options:host "&:tests=True" \
 | 
			
		||||
          --options:host "&:xrpld=True" \
 | 
			
		||||
          --settings:all build_type=${{ inputs.configuration }} \
 | 
			
		||||
          ..
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								.github/workflows/clang-format.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/clang-format.yml
									
									
									
									
										vendored
									
									
								
							@@ -9,24 +9,16 @@ jobs:
 | 
			
		||||
  check:
 | 
			
		||||
    if: ${{ github.event_name == 'push' || github.event.pull_request.draft != true || contains(github.event.pull_request.labels.*.name, 'DraftRunCI') }}
 | 
			
		||||
    runs-on: ubuntu-24.04
 | 
			
		||||
    env:
 | 
			
		||||
      CLANG_VERSION: 18
 | 
			
		||||
    container: ghcr.io/xrplf/ci/tools-rippled-clang-format
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - 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
 | 
			
		||||
          sudo apt-get install clang-format-${CLANG_VERSION}
 | 
			
		||||
      - name: Format first-party sources
 | 
			
		||||
        run: find include src tests -type f \( -name '*.cpp' -o -name '*.hpp' -o -name '*.h' -o -name '*.ipp' \) -exec clang-format-${CLANG_VERSION} -i {} +
 | 
			
		||||
        run: |
 | 
			
		||||
          clang-format --version
 | 
			
		||||
          find include src tests -type f \( -name '*.cpp' -o -name '*.hpp' -o -name '*.h' -o -name '*.ipp' \) -exec clang-format -i {} +
 | 
			
		||||
      - name: Check for differences
 | 
			
		||||
        id: assert
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          set -o pipefail
 | 
			
		||||
          git diff --exit-code | tee "clang-format.patch"
 | 
			
		||||
@@ -58,6 +50,6 @@ jobs:
 | 
			
		||||
               in your repo, commit, and push.
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "${PREAMBLE}"
 | 
			
		||||
          clang-format-${CLANG_VERSION} --version
 | 
			
		||||
          clang-format --version
 | 
			
		||||
          echo "${SUGGESTION}"
 | 
			
		||||
          exit 1
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										45
									
								
								.github/workflows/macos.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								.github/workflows/macos.yml
									
									
									
									
										vendored
									
									
								
							@@ -15,6 +15,18 @@ on:
 | 
			
		||||
concurrency:
 | 
			
		||||
  group: ${{ github.workflow }}-${{ github.ref }}
 | 
			
		||||
  cancel-in-progress: true
 | 
			
		||||
# This part of Conan configuration is specific to this workflow only; we do not want
 | 
			
		||||
# to pollute conan/profiles directory with settings which might not work for others
 | 
			
		||||
env:
 | 
			
		||||
  CONAN_URL: http://18.143.149.228:8081/artifactory/api/conan/dev
 | 
			
		||||
  CONAN_LOGIN_USERNAME_RIPPLE: ${{ secrets.CONAN_USERNAME }}
 | 
			
		||||
  CONAN_PASSWORD_RIPPLE: ${{ secrets.CONAN_TOKEN }}
 | 
			
		||||
  CONAN_GLOBAL_CONF: |
 | 
			
		||||
    core.download:parallel={{os.cpu_count()}}
 | 
			
		||||
    core.upload:parallel={{os.cpu_count()}}
 | 
			
		||||
    tools.build:jobs={{ (os.cpu_count() * 4/5) | int }}
 | 
			
		||||
    tools.build:verbosity=verbose
 | 
			
		||||
    tools.compilation:verbosity=verbose
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
 | 
			
		||||
@@ -35,16 +47,15 @@ jobs:
 | 
			
		||||
      NUM_PROCESSORS: 12
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: checkout
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 | 
			
		||||
      - name: install Conan
 | 
			
		||||
        run: |
 | 
			
		||||
          brew install conan@1
 | 
			
		||||
          echo '/opt/homebrew/opt/conan@1/bin' >> $GITHUB_PATH
 | 
			
		||||
          brew install conan
 | 
			
		||||
      - name: install Ninja
 | 
			
		||||
        if: matrix.generator == 'Ninja'
 | 
			
		||||
        run: brew install ninja
 | 
			
		||||
      - name: install python
 | 
			
		||||
        run: | 
 | 
			
		||||
        run: |
 | 
			
		||||
          if which python > /dev/null 2>&1; then
 | 
			
		||||
              echo "Python executable exists"
 | 
			
		||||
          else
 | 
			
		||||
@@ -76,14 +87,28 @@ jobs:
 | 
			
		||||
          clang --version
 | 
			
		||||
      - name: configure Conan
 | 
			
		||||
        run : |
 | 
			
		||||
          conan profile new default --detect || true
 | 
			
		||||
          conan profile update settings.compiler.cppstd=20 default
 | 
			
		||||
          echo "${CONAN_GLOBAL_CONF}" > global.conf
 | 
			
		||||
          conan config install conan/profiles/ -tf $(conan config home)/profiles/
 | 
			
		||||
          conan profile show
 | 
			
		||||
      - name: export custom recipes
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          conan export --version 1.1.10 external/snappy
 | 
			
		||||
          conan export --version 9.7.3 external/rocksdb
 | 
			
		||||
          conan export --version 4.0.3 external/soci
 | 
			
		||||
          conan export --version 2.0.8 external/nudb
 | 
			
		||||
      - name: add Ripple Conan remote
 | 
			
		||||
        if: env.CONAN_URL != ''
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          if conan remote list | grep -q "ripple"; then
 | 
			
		||||
              conan remote remove ripple
 | 
			
		||||
              echo "Removed conan remote ripple"
 | 
			
		||||
          fi
 | 
			
		||||
          conan remote add --index 0 ripple "${CONAN_URL}"
 | 
			
		||||
          echo "Added conan remote ripple at ${CONAN_URL}"
 | 
			
		||||
      - name: build dependencies
 | 
			
		||||
        uses: ./.github/actions/dependencies
 | 
			
		||||
        env:
 | 
			
		||||
          CONAN_URL: http://18.143.149.228:8081/artifactory/api/conan/conan-non-prod
 | 
			
		||||
          CONAN_LOGIN_USERNAME_RIPPLE: ${{ secrets.CONAN_USERNAME }}
 | 
			
		||||
          CONAN_PASSWORD_RIPPLE: ${{ secrets.CONAN_TOKEN }}
 | 
			
		||||
        with:
 | 
			
		||||
          configuration: ${{ matrix.configuration }}
 | 
			
		||||
      - name: build
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										197
									
								
								.github/workflows/nix.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										197
									
								
								.github/workflows/nix.yml
									
									
									
									
										vendored
									
									
								
							@@ -16,6 +16,19 @@ concurrency:
 | 
			
		||||
  group: ${{ github.workflow }}-${{ github.ref }}
 | 
			
		||||
  cancel-in-progress: true
 | 
			
		||||
 | 
			
		||||
# This part of Conan configuration is specific to this workflow only; we do not want
 | 
			
		||||
# to pollute conan/profiles directory with settings which might not work for others
 | 
			
		||||
env:
 | 
			
		||||
  CONAN_URL: http://18.143.149.228:8081/artifactory/api/conan/dev
 | 
			
		||||
  CONAN_LOGIN_USERNAME_RIPPLE: ${{ secrets.CONAN_USERNAME }}
 | 
			
		||||
  CONAN_PASSWORD_RIPPLE: ${{ secrets.CONAN_TOKEN }}
 | 
			
		||||
  CONAN_GLOBAL_CONF: |
 | 
			
		||||
    core.download:parallel={{ os.cpu_count() }}
 | 
			
		||||
    core.upload:parallel={{ os.cpu_count() }}
 | 
			
		||||
    tools.build:jobs={{ (os.cpu_count() * 4/5) | int }}
 | 
			
		||||
    tools.build:verbosity=verbose
 | 
			
		||||
    tools.compilation:verbosity=verbose
 | 
			
		||||
 | 
			
		||||
# This workflow has multiple job matrixes.
 | 
			
		||||
# They can be considered phases because most of the matrices ("test",
 | 
			
		||||
# "coverage", "conan", ) depend on the first ("dependencies").
 | 
			
		||||
@@ -54,59 +67,45 @@ jobs:
 | 
			
		||||
          - Release
 | 
			
		||||
        include:
 | 
			
		||||
          - compiler: gcc
 | 
			
		||||
            profile:
 | 
			
		||||
              version: 11
 | 
			
		||||
              cc: /usr/bin/gcc
 | 
			
		||||
              cxx: /usr/bin/g++
 | 
			
		||||
            compiler_version: 12
 | 
			
		||||
            distro: ubuntu
 | 
			
		||||
            codename: jammy
 | 
			
		||||
          - compiler: clang
 | 
			
		||||
            profile:
 | 
			
		||||
              version: 14
 | 
			
		||||
              cc: /usr/bin/clang-14
 | 
			
		||||
              cxx: /usr/bin/clang++-14
 | 
			
		||||
            compiler_version: 16
 | 
			
		||||
            distro: debian
 | 
			
		||||
            codename: bookworm
 | 
			
		||||
    runs-on: [self-hosted, heavy]
 | 
			
		||||
    container: ghcr.io/xrplf/rippled-build-ubuntu:aaf5e3e
 | 
			
		||||
    container: ghcr.io/xrplf/ci/${{ matrix.distro }}-${{ matrix.codename }}:${{ matrix.compiler }}-${{ matrix.compiler_version }}
 | 
			
		||||
    env:
 | 
			
		||||
      build_dir: .build
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: upgrade conan
 | 
			
		||||
        run: |
 | 
			
		||||
          pip install --upgrade "conan<2"
 | 
			
		||||
      - name: checkout
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 | 
			
		||||
      - name: check environment
 | 
			
		||||
        run: |
 | 
			
		||||
          echo ${PATH} | tr ':' '\n'
 | 
			
		||||
          lsb_release -a || true
 | 
			
		||||
          ${{ matrix.profile.cc }} --version
 | 
			
		||||
          ${{ matrix.compiler }}-${{ matrix.compiler_version }} --version
 | 
			
		||||
          conan --version
 | 
			
		||||
          cmake --version
 | 
			
		||||
          env | sort
 | 
			
		||||
      - name: configure Conan
 | 
			
		||||
        run: |
 | 
			
		||||
          conan profile new default --detect
 | 
			
		||||
          conan profile update settings.compiler.cppstd=20 default
 | 
			
		||||
          conan profile update settings.compiler=${{ matrix.compiler }} default
 | 
			
		||||
          conan profile update settings.compiler.version=${{ matrix.profile.version }} default
 | 
			
		||||
          conan profile update settings.compiler.libcxx=libstdc++11 default
 | 
			
		||||
          conan profile update env.CC=${{ matrix.profile.cc }} default
 | 
			
		||||
          conan profile update env.CXX=${{ matrix.profile.cxx }} default
 | 
			
		||||
          conan profile update conf.tools.build:compiler_executables='{"c": "${{ matrix.profile.cc }}", "cpp": "${{ matrix.profile.cxx }}"}' default
 | 
			
		||||
          echo "${CONAN_GLOBAL_CONF}" >> ${CONAN_HOME}/global.conf
 | 
			
		||||
          conan profile show
 | 
			
		||||
      - name: archive profile
 | 
			
		||||
        # Create this archive before dependencies are added to the local cache.
 | 
			
		||||
        run: tar -czf conan.tar -C ~/.conan .
 | 
			
		||||
        run: tar -czf conan.tar.gz -C ${CONAN_HOME} .
 | 
			
		||||
      - name: build dependencies
 | 
			
		||||
        uses: ./.github/actions/dependencies
 | 
			
		||||
        env:
 | 
			
		||||
          CONAN_URL: http://18.143.149.228:8081/artifactory/api/conan/conan-non-prod
 | 
			
		||||
          CONAN_LOGIN_USERNAME_RIPPLE: ${{ secrets.CONAN_USERNAME }}
 | 
			
		||||
          CONAN_PASSWORD_RIPPLE: ${{ secrets.CONAN_TOKEN }}
 | 
			
		||||
 | 
			
		||||
        with:
 | 
			
		||||
          configuration: ${{ matrix.configuration }}
 | 
			
		||||
      - name: upload archive
 | 
			
		||||
        uses: actions/upload-artifact@v4
 | 
			
		||||
        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
 | 
			
		||||
        with:
 | 
			
		||||
          name: ${{ matrix.platform }}-${{ matrix.compiler }}-${{ matrix.configuration }}
 | 
			
		||||
          path: conan.tar
 | 
			
		||||
          path: conan.tar.gz
 | 
			
		||||
          if-no-files-found: error
 | 
			
		||||
 | 
			
		||||
  test:
 | 
			
		||||
@@ -121,26 +120,32 @@ jobs:
 | 
			
		||||
        configuration:
 | 
			
		||||
          - Debug
 | 
			
		||||
          - Release
 | 
			
		||||
        include:
 | 
			
		||||
          - compiler: gcc
 | 
			
		||||
            compiler_version: 12
 | 
			
		||||
            distro: ubuntu
 | 
			
		||||
            codename: jammy
 | 
			
		||||
          - compiler: clang
 | 
			
		||||
            compiler_version: 16
 | 
			
		||||
            distro: debian
 | 
			
		||||
            codename: bookworm
 | 
			
		||||
        cmake-args:
 | 
			
		||||
          -
 | 
			
		||||
          - "-Dunity=ON"
 | 
			
		||||
    needs: dependencies
 | 
			
		||||
    runs-on: [self-hosted, heavy]
 | 
			
		||||
    container: ghcr.io/xrplf/rippled-build-ubuntu:aaf5e3e
 | 
			
		||||
    container: ghcr.io/xrplf/ci/${{ matrix.distro }}-${{ matrix.codename }}:${{ matrix.compiler }}-${{ matrix.compiler_version }}
 | 
			
		||||
    env:
 | 
			
		||||
      build_dir: .build
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: upgrade conan
 | 
			
		||||
        run: |
 | 
			
		||||
          pip install --upgrade "conan<2"
 | 
			
		||||
      - name: download cache
 | 
			
		||||
        uses: actions/download-artifact@v4
 | 
			
		||||
        uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
 | 
			
		||||
        with:
 | 
			
		||||
          name: ${{ matrix.platform }}-${{ matrix.compiler }}-${{ matrix.configuration }}
 | 
			
		||||
      - name: extract cache
 | 
			
		||||
        run: |
 | 
			
		||||
          mkdir -p ~/.conan
 | 
			
		||||
          tar -xzf conan.tar -C ~/.conan
 | 
			
		||||
          mkdir -p ${CONAN_HOME}
 | 
			
		||||
          tar -xzf conan.tar.gz -C ${CONAN_HOME}
 | 
			
		||||
      - name: check environment
 | 
			
		||||
        run: |
 | 
			
		||||
          env | sort
 | 
			
		||||
@@ -148,11 +153,9 @@ jobs:
 | 
			
		||||
          conan --version
 | 
			
		||||
          cmake --version
 | 
			
		||||
      - name: checkout
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 | 
			
		||||
      - name: dependencies
 | 
			
		||||
        uses: ./.github/actions/dependencies
 | 
			
		||||
        env:
 | 
			
		||||
          CONAN_URL: http://18.143.149.228:8081/artifactory/api/conan/conan-non-prod
 | 
			
		||||
        with:
 | 
			
		||||
          configuration: ${{ matrix.configuration }}
 | 
			
		||||
      - name: build
 | 
			
		||||
@@ -182,21 +185,18 @@ jobs:
 | 
			
		||||
          - "-DUNIT_TEST_REFERENCE_FEE=1000"
 | 
			
		||||
    needs: dependencies
 | 
			
		||||
    runs-on: [self-hosted, heavy]
 | 
			
		||||
    container: ghcr.io/xrplf/rippled-build-ubuntu:aaf5e3e
 | 
			
		||||
    container: ghcr.io/xrplf/ci/ubuntu-jammy:gcc-12
 | 
			
		||||
    env:
 | 
			
		||||
      build_dir: .build
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: upgrade conan
 | 
			
		||||
        run: |
 | 
			
		||||
          pip install --upgrade "conan<2"
 | 
			
		||||
      - name: download cache
 | 
			
		||||
        uses: actions/download-artifact@v4
 | 
			
		||||
        uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
 | 
			
		||||
        with:
 | 
			
		||||
          name: ${{ matrix.platform }}-${{ matrix.compiler }}-${{ matrix.configuration }}
 | 
			
		||||
      - name: extract cache
 | 
			
		||||
        run: |
 | 
			
		||||
          mkdir -p ~/.conan
 | 
			
		||||
          tar -xzf conan.tar -C ~/.conan
 | 
			
		||||
          mkdir -p ${CONAN_HOME}
 | 
			
		||||
          tar -xzf conan.tar.gz -C ${CONAN_HOME}
 | 
			
		||||
      - name: check environment
 | 
			
		||||
        run: |
 | 
			
		||||
          env | sort
 | 
			
		||||
@@ -204,11 +204,9 @@ jobs:
 | 
			
		||||
          conan --version
 | 
			
		||||
          cmake --version
 | 
			
		||||
      - name: checkout
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 | 
			
		||||
      - name: dependencies
 | 
			
		||||
        uses: ./.github/actions/dependencies
 | 
			
		||||
        env:
 | 
			
		||||
          CONAN_URL: http://18.143.149.228:8081/artifactory/api/conan/conan-non-prod
 | 
			
		||||
        with:
 | 
			
		||||
          configuration: ${{ matrix.configuration }}
 | 
			
		||||
      - name: build
 | 
			
		||||
@@ -234,23 +232,18 @@ jobs:
 | 
			
		||||
          - Debug
 | 
			
		||||
    needs: dependencies
 | 
			
		||||
    runs-on: [self-hosted, heavy]
 | 
			
		||||
    container: ghcr.io/xrplf/rippled-build-ubuntu:aaf5e3e
 | 
			
		||||
    container: ghcr.io/xrplf/ci/ubuntu-jammy:gcc-12
 | 
			
		||||
    env:
 | 
			
		||||
      build_dir: .build
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: upgrade conan
 | 
			
		||||
        run: |
 | 
			
		||||
          pip install --upgrade "conan<2"
 | 
			
		||||
      - name: download cache
 | 
			
		||||
        uses: actions/download-artifact@v4
 | 
			
		||||
        uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
 | 
			
		||||
        with:
 | 
			
		||||
          name: ${{ matrix.platform }}-${{ matrix.compiler }}-${{ matrix.configuration }}
 | 
			
		||||
      - name: extract cache
 | 
			
		||||
        run: |
 | 
			
		||||
          mkdir -p ~/.conan
 | 
			
		||||
          tar -xzf conan.tar -C ~/.conan
 | 
			
		||||
      - name: install gcovr
 | 
			
		||||
        run: pip install "gcovr>=7,<9"
 | 
			
		||||
          mkdir -p ${CONAN_HOME}
 | 
			
		||||
          tar -xzf conan.tar.gz -C ${CONAN_HOME}
 | 
			
		||||
      - name: check environment
 | 
			
		||||
        run: |
 | 
			
		||||
          echo ${PATH} | tr ':' '\n'
 | 
			
		||||
@@ -258,13 +251,11 @@ jobs:
 | 
			
		||||
          cmake --version
 | 
			
		||||
          gcovr --version
 | 
			
		||||
          env | sort
 | 
			
		||||
          ls ~/.conan
 | 
			
		||||
          ls ${CONAN_HOME}
 | 
			
		||||
      - name: checkout
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 | 
			
		||||
      - name: dependencies
 | 
			
		||||
        uses: ./.github/actions/dependencies
 | 
			
		||||
        env:
 | 
			
		||||
          CONAN_URL: http://18.143.149.228:8081/artifactory/api/conan/conan-non-prod
 | 
			
		||||
        with:
 | 
			
		||||
          configuration: ${{ matrix.configuration }}
 | 
			
		||||
      - name: build
 | 
			
		||||
@@ -286,7 +277,7 @@ jobs:
 | 
			
		||||
        run: |
 | 
			
		||||
          mv "${build_dir}/coverage.xml" ./
 | 
			
		||||
      - name: archive coverage report
 | 
			
		||||
        uses: actions/upload-artifact@v4
 | 
			
		||||
        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
 | 
			
		||||
        with:
 | 
			
		||||
          name: coverage.xml
 | 
			
		||||
          path: coverage.xml
 | 
			
		||||
@@ -305,25 +296,28 @@ jobs:
 | 
			
		||||
          attempt_limit: 5
 | 
			
		||||
          attempt_delay: 210000 # in milliseconds
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  conan:
 | 
			
		||||
    needs: dependencies
 | 
			
		||||
    runs-on: [self-hosted, heavy]
 | 
			
		||||
    container: ghcr.io/xrplf/rippled-build-ubuntu:aaf5e3e
 | 
			
		||||
    container:
 | 
			
		||||
      image: ghcr.io/xrplf/ci/ubuntu-jammy:gcc-12
 | 
			
		||||
    env:
 | 
			
		||||
      build_dir: .build
 | 
			
		||||
      platform: linux
 | 
			
		||||
      compiler: gcc
 | 
			
		||||
      compiler_version: 12
 | 
			
		||||
      configuration: Release
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: upgrade conan
 | 
			
		||||
        run: |
 | 
			
		||||
          pip install --upgrade "conan<2"
 | 
			
		||||
      - name: download cache
 | 
			
		||||
        uses: actions/download-artifact@v4
 | 
			
		||||
        uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
 | 
			
		||||
        with:
 | 
			
		||||
          name: linux-gcc-${{ env.configuration }}
 | 
			
		||||
          name: ${{ env.platform }}-${{ env.compiler }}-${{ env.configuration }}
 | 
			
		||||
 | 
			
		||||
      - name: extract cache
 | 
			
		||||
        run: |
 | 
			
		||||
          mkdir -p ~/.conan
 | 
			
		||||
          tar -xzf conan.tar -C ~/.conan
 | 
			
		||||
          mkdir -p ${CONAN_HOME}
 | 
			
		||||
          tar -xzf conan.tar.gz -C ${CONAN_HOME}
 | 
			
		||||
      - name: check environment
 | 
			
		||||
        run: |
 | 
			
		||||
          env | sort
 | 
			
		||||
@@ -331,27 +325,22 @@ jobs:
 | 
			
		||||
          conan --version
 | 
			
		||||
          cmake --version
 | 
			
		||||
      - name: checkout
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 | 
			
		||||
      - name: dependencies
 | 
			
		||||
        uses: ./.github/actions/dependencies
 | 
			
		||||
        env:
 | 
			
		||||
          CONAN_URL: http://18.143.149.228:8081/artifactory/api/conan/conan-non-prod
 | 
			
		||||
        with:
 | 
			
		||||
          configuration: ${{ env.configuration }}
 | 
			
		||||
      - name: export
 | 
			
		||||
        run: |
 | 
			
		||||
          version=$(conan inspect --raw version .)
 | 
			
		||||
          reference="xrpl/${version}@local/test"
 | 
			
		||||
          conan remove -f ${reference} || true
 | 
			
		||||
          conan export . local/test
 | 
			
		||||
          echo "reference=${reference}" >> "${GITHUB_ENV}"
 | 
			
		||||
          conan export . --version head
 | 
			
		||||
      - name: build
 | 
			
		||||
        run: |
 | 
			
		||||
          cd tests/conan
 | 
			
		||||
          mkdir ${build_dir}
 | 
			
		||||
          cd ${build_dir}
 | 
			
		||||
          conan install .. --output-folder . \
 | 
			
		||||
            --require-override ${reference} --build missing
 | 
			
		||||
          mkdir ${build_dir} && cd ${build_dir}
 | 
			
		||||
          conan install .. \
 | 
			
		||||
            --settings:all build_type=${configuration} \
 | 
			
		||||
            --output-folder . \
 | 
			
		||||
            --build missing
 | 
			
		||||
          cmake .. \
 | 
			
		||||
            -DCMAKE_TOOLCHAIN_FILE:FILEPATH=./build/${configuration}/generators/conan_toolchain.cmake \
 | 
			
		||||
            -DCMAKE_BUILD_TYPE=${configuration}
 | 
			
		||||
@@ -366,60 +355,30 @@ jobs:
 | 
			
		||||
    if: ${{ github.event_name == 'push' || github.event.pull_request.draft != true || contains(github.event.pull_request.labels.*.name, 'DraftRunCI') }}
 | 
			
		||||
    env:
 | 
			
		||||
      CLANG_RELEASE: 16
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
    runs-on: [self-hosted, heavy]
 | 
			
		||||
    container: debian:bookworm
 | 
			
		||||
    steps:
 | 
			
		||||
        - name: install prerequisites
 | 
			
		||||
          env:
 | 
			
		||||
            DEBIAN_FRONTEND: noninteractive
 | 
			
		||||
          run: |
 | 
			
		||||
            apt-get update
 | 
			
		||||
            apt-get install --yes --no-install-recommends \
 | 
			
		||||
              clang-${CLANG_RELEASE} clang++-${CLANG_RELEASE} \
 | 
			
		||||
              python3-pip python-is-python3 make cmake git wget
 | 
			
		||||
            apt-get clean
 | 
			
		||||
            update-alternatives --install \
 | 
			
		||||
              /usr/bin/clang clang /usr/bin/clang-${CLANG_RELEASE} 100 \
 | 
			
		||||
              --slave /usr/bin/clang++ clang++ /usr/bin/clang++-${CLANG_RELEASE}
 | 
			
		||||
            update-alternatives --auto clang
 | 
			
		||||
            pip install --no-cache --break-system-packages "conan<2"
 | 
			
		||||
    container: ghcr.io/xrplf/ci/debian-bookworm:clang-16
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
        - name: checkout
 | 
			
		||||
          uses: actions/checkout@v4
 | 
			
		||||
          uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 | 
			
		||||
 | 
			
		||||
        - name: prepare environment
 | 
			
		||||
          run: |
 | 
			
		||||
            mkdir ${GITHUB_WORKSPACE}/.build
 | 
			
		||||
            echo "SOURCE_DIR=$GITHUB_WORKSPACE" >> $GITHUB_ENV
 | 
			
		||||
            echo "BUILD_DIR=$GITHUB_WORKSPACE/.build" >> $GITHUB_ENV
 | 
			
		||||
            echo "CC=/usr/bin/clang" >> $GITHUB_ENV
 | 
			
		||||
            echo "CXX=/usr/bin/clang++" >> $GITHUB_ENV
 | 
			
		||||
 | 
			
		||||
        - name: configure Conan
 | 
			
		||||
          run: |
 | 
			
		||||
            conan profile new --detect default
 | 
			
		||||
            conan profile update settings.compiler=clang default
 | 
			
		||||
            conan profile update settings.compiler.version=${CLANG_RELEASE} default
 | 
			
		||||
            conan profile update settings.compiler.libcxx=libstdc++11 default
 | 
			
		||||
            conan profile update settings.compiler.cppstd=20 default
 | 
			
		||||
            conan profile update options.rocksdb=False default
 | 
			
		||||
            conan profile update \
 | 
			
		||||
              'conf.tools.build:compiler_executables={"c": "/usr/bin/clang", "cpp": "/usr/bin/clang++"}' default
 | 
			
		||||
            conan profile update 'env.CXXFLAGS="-DBOOST_ASIO_DISABLE_CONCEPTS"' default
 | 
			
		||||
            conan profile update 'conf.tools.build:cxxflags+=["-DBOOST_ASIO_DISABLE_CONCEPTS"]' default
 | 
			
		||||
            conan export external/snappy snappy/1.1.10@
 | 
			
		||||
            conan export external/soci soci/4.0.3@
 | 
			
		||||
 | 
			
		||||
            echo "${CONAN_GLOBAL_CONF}" >> ${CONAN_HOME}/global.conf
 | 
			
		||||
            conan profile show
 | 
			
		||||
        - name: build dependencies
 | 
			
		||||
          run: |
 | 
			
		||||
            cd ${BUILD_DIR}
 | 
			
		||||
            conan install ${SOURCE_DIR} \
 | 
			
		||||
              --output-folder ${BUILD_DIR} \
 | 
			
		||||
              --install-folder ${BUILD_DIR} \
 | 
			
		||||
              --build missing \
 | 
			
		||||
              --settings build_type=Debug
 | 
			
		||||
              --settings:all build_type=Debug
 | 
			
		||||
 | 
			
		||||
        - name: build with instrumentation
 | 
			
		||||
          run: |
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										52
									
								
								.github/workflows/windows.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										52
									
								
								.github/workflows/windows.yml
									
									
									
									
										vendored
									
									
								
							@@ -18,6 +18,18 @@ on:
 | 
			
		||||
concurrency:
 | 
			
		||||
  group: ${{ github.workflow }}-${{ github.ref }}
 | 
			
		||||
  cancel-in-progress: true
 | 
			
		||||
# This part of Conan configuration is specific to this workflow only; we do not want
 | 
			
		||||
# to pollute conan/profiles directory with settings which might not work for others
 | 
			
		||||
env:
 | 
			
		||||
  CONAN_URL: http://18.143.149.228:8081/artifactory/api/conan/dev
 | 
			
		||||
  CONAN_LOGIN_USERNAME_RIPPLE: ${{ secrets.CONAN_USERNAME }}
 | 
			
		||||
  CONAN_PASSWORD_RIPPLE: ${{ secrets.CONAN_TOKEN }}
 | 
			
		||||
  CONAN_GLOBAL_CONF: |
 | 
			
		||||
    core.download:parallel={{os.cpu_count()}}
 | 
			
		||||
    core.upload:parallel={{os.cpu_count()}}
 | 
			
		||||
    tools.build:jobs=24
 | 
			
		||||
    tools.build:verbosity=verbose
 | 
			
		||||
    tools.compilation:verbosity=verbose
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
 | 
			
		||||
@@ -42,11 +54,11 @@ jobs:
 | 
			
		||||
      build_dir: .build
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: checkout
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 | 
			
		||||
      - name: choose Python
 | 
			
		||||
        uses: actions/setup-python@v5
 | 
			
		||||
        uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
 | 
			
		||||
        with:
 | 
			
		||||
          python-version: 3.9
 | 
			
		||||
          python-version: 3.13
 | 
			
		||||
      - name: learn Python cache directory
 | 
			
		||||
        id: pip-cache
 | 
			
		||||
        shell: bash
 | 
			
		||||
@@ -54,12 +66,12 @@ jobs:
 | 
			
		||||
          python -m pip install --upgrade pip
 | 
			
		||||
          echo "dir=$(pip cache dir)" | tee ${GITHUB_OUTPUT}
 | 
			
		||||
      - name: restore Python cache directory
 | 
			
		||||
        uses: actions/cache@v4
 | 
			
		||||
        uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684
 | 
			
		||||
        with:
 | 
			
		||||
            path: ${{ steps.pip-cache.outputs.dir }}
 | 
			
		||||
            key: ${{ runner.os }}-${{ hashFiles('.github/workflows/windows.yml') }}
 | 
			
		||||
      - name: install Conan
 | 
			
		||||
        run: pip install wheel 'conan<2'
 | 
			
		||||
        run: pip install wheel conan
 | 
			
		||||
      - name: check environment
 | 
			
		||||
        run: |
 | 
			
		||||
          dir env:
 | 
			
		||||
@@ -70,17 +82,29 @@ jobs:
 | 
			
		||||
      - name: configure Conan
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          conan profile new default --detect
 | 
			
		||||
          conan profile update settings.compiler.cppstd=20 default
 | 
			
		||||
          conan profile update \
 | 
			
		||||
            settings.compiler.runtime=MT${{ matrix.configuration.runtime }} \
 | 
			
		||||
            default
 | 
			
		||||
          echo "${CONAN_GLOBAL_CONF}" > global.conf
 | 
			
		||||
          mv conan/profiles/libxrpl conan/profiles/default
 | 
			
		||||
          conan config install conan/profiles/ -tf $(conan config home)/profiles/
 | 
			
		||||
          conan profile show
 | 
			
		||||
      - name: export custom recipes
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          conan export --version 1.1.10 external/snappy
 | 
			
		||||
          conan export --version 9.7.3 external/rocksdb
 | 
			
		||||
          conan export --version 4.0.3 external/soci
 | 
			
		||||
          conan export --version 2.0.8 external/nudb
 | 
			
		||||
      - name: add Ripple Conan remote
 | 
			
		||||
        if: env.CONAN_URL != ''
 | 
			
		||||
        shell: bash
 | 
			
		||||
        run: |
 | 
			
		||||
          if conan remote list | grep -q "ripple"; then
 | 
			
		||||
              conan remote remove ripple
 | 
			
		||||
              echo "Removed conan remote ripple"
 | 
			
		||||
          fi
 | 
			
		||||
          conan remote add --index 0 ripple "${CONAN_URL}"
 | 
			
		||||
          echo "Added conan remote ripple at ${CONAN_URL}"
 | 
			
		||||
      - name: build dependencies
 | 
			
		||||
        uses: ./.github/actions/dependencies
 | 
			
		||||
        env:
 | 
			
		||||
          CONAN_URL: http://18.143.149.228:8081/artifactory/api/conan/conan-non-prod
 | 
			
		||||
          CONAN_LOGIN_USERNAME_RIPPLE: ${{ secrets.CONAN_USERNAME }}
 | 
			
		||||
          CONAN_PASSWORD_RIPPLE: ${{ secrets.CONAN_TOKEN }}
 | 
			
		||||
        with:
 | 
			
		||||
          configuration: ${{ matrix.configuration.type }}
 | 
			
		||||
      - name: build
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
# .pre-commit-config.yaml
 | 
			
		||||
repos:
 | 
			
		||||
- repo: https://github.com/pre-commit/mirrors-clang-format
 | 
			
		||||
  rev: v18.1.3
 | 
			
		||||
  rev: v18.1.8
 | 
			
		||||
  hooks:
 | 
			
		||||
  - id: clang-format
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										23
									
								
								conan/profiles/libxrpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								conan/profiles/libxrpl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
{% set os = detect_api.detect_os() %}
 | 
			
		||||
{% set arch = detect_api.detect_arch() %}
 | 
			
		||||
{% set compiler, version, compiler_exe = detect_api.detect_default_compiler() %}
 | 
			
		||||
{% set compiler_version = version %}
 | 
			
		||||
{% if os == "Linux" %}
 | 
			
		||||
{% set compiler_version = detect_api.default_compiler_version(compiler, version) %}
 | 
			
		||||
{% endif %}
 | 
			
		||||
 | 
			
		||||
{% if os == "Linux" %}
 | 
			
		||||
include(default)
 | 
			
		||||
{% endif %}
 | 
			
		||||
 | 
			
		||||
[settings]
 | 
			
		||||
os={{ os }}
 | 
			
		||||
arch={{ arch }}
 | 
			
		||||
compiler={{compiler}}
 | 
			
		||||
compiler.version={{ compiler_version }}
 | 
			
		||||
compiler.cppstd=20
 | 
			
		||||
{% if os == "Windows" %}
 | 
			
		||||
compiler.runtime=static
 | 
			
		||||
{% else %}
 | 
			
		||||
compiler.libcxx={{detect_api.detect_libcxx(compiler, version, compiler_exe)}}
 | 
			
		||||
{% endif %}
 | 
			
		||||
							
								
								
									
										20
									
								
								conanfile.py
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								conanfile.py
									
									
									
									
									
								
							@@ -24,7 +24,6 @@ class Xrpl(ConanFile):
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    requires = [
 | 
			
		||||
        'doctest/2.4.11',
 | 
			
		||||
        'grpc/1.50.1',
 | 
			
		||||
        'libarchive/3.7.6',
 | 
			
		||||
        'nudb/2.0.8',
 | 
			
		||||
@@ -33,6 +32,10 @@ class Xrpl(ConanFile):
 | 
			
		||||
        'zlib/1.3.1',
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    test_requires = [
 | 
			
		||||
        'doctest/2.4.11',
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    tool_requires = [
 | 
			
		||||
        'protobuf/3.21.9',
 | 
			
		||||
    ]
 | 
			
		||||
@@ -86,12 +89,13 @@ class Xrpl(ConanFile):
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    def set_version(self):
 | 
			
		||||
        path = f'{self.recipe_folder}/src/libxrpl/protocol/BuildInfo.cpp'
 | 
			
		||||
        regex = r'versionString\s?=\s?\"(.*)\"'
 | 
			
		||||
        with open(path, 'r') as file:
 | 
			
		||||
            matches = (re.search(regex, line) for line in file)
 | 
			
		||||
            match = next(m for m in matches if m)
 | 
			
		||||
            self.version = match.group(1)
 | 
			
		||||
        if self.version is None:
 | 
			
		||||
            path = f'{self.recipe_folder}/src/libxrpl/protocol/BuildInfo.cpp'
 | 
			
		||||
            regex = r'versionString\s?=\s?\"(.*)\"'
 | 
			
		||||
            with open(path, encoding='utf-8') as file:
 | 
			
		||||
                matches = (re.search(regex, line) for line in file)
 | 
			
		||||
                match = next(m for m in matches if m)
 | 
			
		||||
                self.version = match.group(1)
 | 
			
		||||
 | 
			
		||||
    def configure(self):
 | 
			
		||||
        if self.settings.compiler == 'apple-clang':
 | 
			
		||||
@@ -139,6 +143,8 @@ class Xrpl(ConanFile):
 | 
			
		||||
        tc.variables['static'] = self.options.static
 | 
			
		||||
        tc.variables['unity'] = self.options.unity
 | 
			
		||||
        tc.variables['xrpld'] = self.options.xrpld
 | 
			
		||||
        if self.settings.compiler == 'clang' and self.settings.compiler.version == 16:
 | 
			
		||||
            tc.extra_cxxflags = ["-DBOOST_ASIO_DISABLE_CONCEPTS"]
 | 
			
		||||
        tc.generate()
 | 
			
		||||
 | 
			
		||||
    def build(self):
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ project(
 | 
			
		||||
  LANGUAGES CXX
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
find_package(xrpl REQUIRED)
 | 
			
		||||
find_package(xrpl CONFIG REQUIRED)
 | 
			
		||||
 | 
			
		||||
add_executable(example)
 | 
			
		||||
target_sources(example PRIVATE src/example.cpp)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,59 +1,42 @@
 | 
			
		||||
from conan import ConanFile, conan_version
 | 
			
		||||
from pathlib import Path
 | 
			
		||||
 | 
			
		||||
from conan import ConanFile
 | 
			
		||||
from conan.tools.build import can_run
 | 
			
		||||
from conan.tools.cmake import CMake, cmake_layout
 | 
			
		||||
 | 
			
		||||
class Example(ConanFile):
 | 
			
		||||
 | 
			
		||||
    def set_name(self):
 | 
			
		||||
        if self.name is None:
 | 
			
		||||
            self.name = 'example'
 | 
			
		||||
    name = 'example'
 | 
			
		||||
    license = 'ISC'
 | 
			
		||||
    author = 'John Freeman <jfreeman08@gmail.com>, Michael Legleux <mlegleux@ripple.com'
 | 
			
		||||
 | 
			
		||||
    settings = 'os', 'compiler', 'build_type', 'arch'
 | 
			
		||||
 | 
			
		||||
    requires = ["xrpl/head"]
 | 
			
		||||
 | 
			
		||||
    default_options = {
 | 
			
		||||
        'xrpl/*:xrpld': False,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    generators = ['CMakeDeps', 'CMakeToolchain']
 | 
			
		||||
 | 
			
		||||
    def set_version(self):
 | 
			
		||||
        if self.version is None:
 | 
			
		||||
            self.version = '0.1.0'
 | 
			
		||||
 | 
			
		||||
    license = 'ISC'
 | 
			
		||||
    author = 'John Freeman <jfreeman08@gmail.com>'
 | 
			
		||||
 | 
			
		||||
    settings = 'os', 'compiler', 'build_type', 'arch'
 | 
			
		||||
    options = {'shared': [True, False], 'fPIC': [True, False]}
 | 
			
		||||
    default_options = {
 | 
			
		||||
        'shared': False,
 | 
			
		||||
        'fPIC': True,
 | 
			
		||||
        'xrpl:xrpld': False,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    requires = ['xrpl/2.2.0-rc1@jfreeman/nodestore']
 | 
			
		||||
    generators = ['CMakeDeps', 'CMakeToolchain']
 | 
			
		||||
 | 
			
		||||
    exports_sources = [
 | 
			
		||||
        'CMakeLists.txt',
 | 
			
		||||
        'cmake/*',
 | 
			
		||||
        'external/*',
 | 
			
		||||
        'include/*',
 | 
			
		||||
        'src/*',
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    # For out-of-source build.
 | 
			
		||||
    # https://docs.conan.io/en/latest/reference/build_helpers/cmake.html#configure
 | 
			
		||||
    no_copy_source = True
 | 
			
		||||
 | 
			
		||||
    def layout(self):
 | 
			
		||||
        cmake_layout(self)
 | 
			
		||||
 | 
			
		||||
    def config_options(self):
 | 
			
		||||
        if self.settings.os == 'Windows':
 | 
			
		||||
            del self.options.fPIC
 | 
			
		||||
 | 
			
		||||
    def build(self):
 | 
			
		||||
        cmake = CMake(self)
 | 
			
		||||
        cmake.configure(variables={'BUILD_TESTING': 'NO'})
 | 
			
		||||
        cmake.configure()
 | 
			
		||||
        cmake.build()
 | 
			
		||||
 | 
			
		||||
    def package(self):
 | 
			
		||||
        cmake = CMake(self)
 | 
			
		||||
        cmake.install()
 | 
			
		||||
 | 
			
		||||
    def package_info(self):
 | 
			
		||||
        path = f'{self.package_folder}/share/{self.name}/cpp_info.py'
 | 
			
		||||
        with open(path, 'r') as file:
 | 
			
		||||
            exec(file.read(), {}, {'self': self.cpp_info})
 | 
			
		||||
    def test(self):
 | 
			
		||||
        if can_run(self):
 | 
			
		||||
            cmd_path = Path(self.build_folder) / self.cpp.build.bindir / "example"
 | 
			
		||||
            self.run(cmd_path, env="conanrun")
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user