mirror of
				https://github.com/XRPLF/clio.git
				synced 2025-11-04 11:55:51 +00:00 
			
		
		
		
	chore: Use conan options to only control dependencies (#2503)
This commit is contained in:
		
							
								
								
									
										78
									
								
								.github/actions/cmake/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								.github/actions/cmake/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
			
		||||
name: Run CMake
 | 
			
		||||
description: Run CMake to generate build files
 | 
			
		||||
 | 
			
		||||
inputs:
 | 
			
		||||
  build_dir:
 | 
			
		||||
    description: Build directory
 | 
			
		||||
    required: false
 | 
			
		||||
    default: "build"
 | 
			
		||||
  conan_profile:
 | 
			
		||||
    description: Conan profile name
 | 
			
		||||
    required: true
 | 
			
		||||
  build_type:
 | 
			
		||||
    description: Build type for third-party libraries and clio. Could be 'Release', 'Debug'
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "Release"
 | 
			
		||||
  integration_tests:
 | 
			
		||||
    description: Whether to generate target integration tests
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "true"
 | 
			
		||||
  benchmark:
 | 
			
		||||
    description: Whether to generate targets for benchmarks
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "true"
 | 
			
		||||
  code_coverage:
 | 
			
		||||
    description: Whether to enable code coverage
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "false"
 | 
			
		||||
  static:
 | 
			
		||||
    description: Whether Clio is to be statically linked
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "false"
 | 
			
		||||
  time_trace:
 | 
			
		||||
    description: Whether to enable compiler trace reports
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "false"
 | 
			
		||||
  use_mold:
 | 
			
		||||
    description: Whether to use mold linker
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "false"
 | 
			
		||||
  package:
 | 
			
		||||
    description: Whether to generate Debian package
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "false"
 | 
			
		||||
 | 
			
		||||
runs:
 | 
			
		||||
  using: composite
 | 
			
		||||
  steps:
 | 
			
		||||
    - name: Run cmake
 | 
			
		||||
      shell: bash
 | 
			
		||||
      env:
 | 
			
		||||
        BUILD_TYPE: "${{ inputs.build_type }}"
 | 
			
		||||
        SANITIZER_OPTION: |-
 | 
			
		||||
          ${{ endsWith(inputs.conan_profile, '.asan') && '-Dsan=address' ||
 | 
			
		||||
              endsWith(inputs.conan_profile, '.tsan') && '-Dsan=thread' ||
 | 
			
		||||
              endsWith(inputs.conan_profile, '.ubsan') && '-Dsan=undefined' ||
 | 
			
		||||
              '' }}
 | 
			
		||||
        INTEGRATION_TESTS: "${{ inputs.integration_tests == 'true' && 'ON' || 'OFF' }}"
 | 
			
		||||
        BENCHMARK: "${{ inputs.benchmark == 'true' && 'ON' || 'OFF' }}"
 | 
			
		||||
        COVERAGE: "${{ inputs.code_coverage == 'true' && 'ON' || 'OFF' }}"
 | 
			
		||||
        STATIC: "${{ inputs.static == 'true' && 'ON' || 'OFF' }}"
 | 
			
		||||
        TIME_TRACE: "${{ inputs.time_trace == 'true' && 'ON' || 'OFF' }}"
 | 
			
		||||
        USE_MOLD: "${{ inputs.use_mold == 'true' && 'ON' || 'OFF' }}"
 | 
			
		||||
        PACKAGE: "${{ inputs.package == 'true' && 'ON' || 'OFF' }}"
 | 
			
		||||
      run: |
 | 
			
		||||
        cmake \
 | 
			
		||||
          -B ${{inputs.build_dir}} \
 | 
			
		||||
          -S . \
 | 
			
		||||
          -G Ninja \
 | 
			
		||||
          -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \
 | 
			
		||||
          -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
 | 
			
		||||
          "${SANITIZER_OPTION}" \
 | 
			
		||||
          -Dintegration_tests="${INTEGRATION_TESTS}" \
 | 
			
		||||
          -Dbenchmark="${BENCHMARK}" \
 | 
			
		||||
          -Dcoverage="${COVERAGE}" \
 | 
			
		||||
          -Dstatic="${STATIC}" \
 | 
			
		||||
          -Dtime_trace="${TIME_TRACE}" \
 | 
			
		||||
          -Duse_mold="${USE_MOLD}" \
 | 
			
		||||
          -Dpackage="${PACKAGE}"
 | 
			
		||||
							
								
								
									
										45
									
								
								.github/actions/conan/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								.github/actions/conan/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
name: Run Conan
 | 
			
		||||
description: Run conan to install dependencies
 | 
			
		||||
 | 
			
		||||
inputs:
 | 
			
		||||
  build_dir:
 | 
			
		||||
    description: Build directory
 | 
			
		||||
    required: false
 | 
			
		||||
    default: "build"
 | 
			
		||||
  conan_profile:
 | 
			
		||||
    description: Conan profile name
 | 
			
		||||
    required: true
 | 
			
		||||
  force_conan_source_build:
 | 
			
		||||
    description: Whether conan should build all dependencies from source
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "false"
 | 
			
		||||
  build_type:
 | 
			
		||||
    description: Build type for third-party libraries and clio. Could be 'Release', 'Debug'
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "Release"
 | 
			
		||||
  build_benchmark:
 | 
			
		||||
    description: Whether to build benchmark tests
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "true"
 | 
			
		||||
 | 
			
		||||
runs:
 | 
			
		||||
  using: composite
 | 
			
		||||
  steps:
 | 
			
		||||
    - name: Create build directory
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: mkdir -p "${{ inputs.build_dir }}"
 | 
			
		||||
 | 
			
		||||
    - name: Run conan
 | 
			
		||||
      shell: bash
 | 
			
		||||
      env:
 | 
			
		||||
        CONAN_BUILD_OPTION: "${{ inputs.force_conan_source_build == 'true' && '*' || 'missing' }}"
 | 
			
		||||
        BUILD_BENCHMARK: "${{ inputs.build_benchmark == 'true' && 'True' || 'False' }}"
 | 
			
		||||
      run: |
 | 
			
		||||
        conan \
 | 
			
		||||
          install . \
 | 
			
		||||
          -of build \
 | 
			
		||||
          -b "$CONAN_BUILD_OPTION" \
 | 
			
		||||
          -s "build_type=${{ inputs.build_type }}" \
 | 
			
		||||
          -o "&:tests=True" \
 | 
			
		||||
          -o "&:benchmark=${BUILD_BENCHMARK}" \
 | 
			
		||||
          --profile:all "${{ inputs.conan_profile }}"
 | 
			
		||||
							
								
								
									
										99
									
								
								.github/actions/generate/action.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										99
									
								
								.github/actions/generate/action.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,99 +0,0 @@
 | 
			
		||||
name: Run conan and cmake
 | 
			
		||||
description: Run conan and cmake
 | 
			
		||||
 | 
			
		||||
inputs:
 | 
			
		||||
  conan_profile:
 | 
			
		||||
    description: Conan profile name
 | 
			
		||||
    required: true
 | 
			
		||||
  force_conan_source_build:
 | 
			
		||||
    description: Whether conan should build all dependencies from source
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "false"
 | 
			
		||||
  build_type:
 | 
			
		||||
    description: Build type for third-party libraries and clio. Could be 'Release', 'Debug'
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "Release"
 | 
			
		||||
  build_integration_tests:
 | 
			
		||||
    description: Whether to build integration tests
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "true"
 | 
			
		||||
  build_benchmark:
 | 
			
		||||
    description: Whether to build benchmark tests
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "true"
 | 
			
		||||
  code_coverage:
 | 
			
		||||
    description: Whether conan's coverage option should be on or not
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "false"
 | 
			
		||||
  static:
 | 
			
		||||
    description: Whether Clio is to be statically linked
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "false"
 | 
			
		||||
  time_trace:
 | 
			
		||||
    description: Whether to enable compiler trace reports
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "false"
 | 
			
		||||
  use_mold:
 | 
			
		||||
    description: Whether to use mold linker
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "false"
 | 
			
		||||
  package:
 | 
			
		||||
    description: Whether to generate Debian package
 | 
			
		||||
    required: true
 | 
			
		||||
    default: "false"
 | 
			
		||||
 | 
			
		||||
runs:
 | 
			
		||||
  using: composite
 | 
			
		||||
  steps:
 | 
			
		||||
    - name: Create build directory
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: mkdir -p build
 | 
			
		||||
 | 
			
		||||
    - name: Run conan
 | 
			
		||||
      shell: bash
 | 
			
		||||
      env:
 | 
			
		||||
        CONAN_BUILD_OPTION: "${{ inputs.force_conan_source_build == 'true' && '*' || 'missing' }}"
 | 
			
		||||
        CODE_COVERAGE: "${{ inputs.code_coverage == 'true' && 'True' || 'False' }}"
 | 
			
		||||
        STATIC_OPTION: "${{ inputs.static == 'true' && 'True' || 'False' }}"
 | 
			
		||||
        INTEGRATION_TESTS_OPTION: "${{ inputs.build_integration_tests == 'true' && 'True' || 'False' }}"
 | 
			
		||||
        BENCHMARK_OPTION: "${{ inputs.build_benchmark == 'true' && 'True' || 'False' }}"
 | 
			
		||||
        TIME_TRACE: "${{ inputs.time_trace == 'true' && 'True' || 'False' }}"
 | 
			
		||||
        USE_MOLD: "${{ inputs.use_mold == 'true' && 'True' || 'False' }}"
 | 
			
		||||
        PACKAGE: "${{ inputs.package == 'true' && 'True' || 'False' }}"
 | 
			
		||||
      run: |
 | 
			
		||||
        cd build
 | 
			
		||||
        conan \
 | 
			
		||||
          install .. \
 | 
			
		||||
          -of . \
 | 
			
		||||
          -b "$CONAN_BUILD_OPTION" \
 | 
			
		||||
          -s "build_type=${{ inputs.build_type }}" \
 | 
			
		||||
          -o "&:static=${STATIC_OPTION}" \
 | 
			
		||||
          -o "&:tests=True" \
 | 
			
		||||
          -o "&:integration_tests=${INTEGRATION_TESTS_OPTION}" \
 | 
			
		||||
          -o "&:benchmark=${BENCHMARK_OPTION}" \
 | 
			
		||||
          -o "&:lint=False" \
 | 
			
		||||
          -o "&:coverage=${CODE_COVERAGE}" \
 | 
			
		||||
          -o "&:time_trace=${TIME_TRACE}" \
 | 
			
		||||
          -o "&:use_mold=${USE_MOLD}" \
 | 
			
		||||
          -o "&:package=${PACKAGE}" \
 | 
			
		||||
          --profile:all "${{ inputs.conan_profile }}"
 | 
			
		||||
 | 
			
		||||
    - name: Run cmake
 | 
			
		||||
      shell: bash
 | 
			
		||||
      env:
 | 
			
		||||
        BUILD_TYPE: "${{ inputs.build_type }}"
 | 
			
		||||
        SANITIZER_OPTION: |-
 | 
			
		||||
          ${{ endsWith(inputs.conan_profile, '.asan') && '-Dsan=address' ||
 | 
			
		||||
              endsWith(inputs.conan_profile, '.tsan') && '-Dsan=thread' ||
 | 
			
		||||
              endsWith(inputs.conan_profile, '.ubsan') && '-Dsan=undefined' ||
 | 
			
		||||
              '' }}
 | 
			
		||||
        USE_MOLD_OPTION: "${{ inputs.use_mold == 'true' && '-Duse_mold=ON' || '' }}"
 | 
			
		||||
      run: |
 | 
			
		||||
        cd build
 | 
			
		||||
        cmake \
 | 
			
		||||
          -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \
 | 
			
		||||
          -DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
 | 
			
		||||
          "${USE_MOLD_OPTION}" \
 | 
			
		||||
          "${SANITIZER_OPTION}" \
 | 
			
		||||
          .. \
 | 
			
		||||
          -G Ninja
 | 
			
		||||
							
								
								
									
										17
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
								
							@@ -39,6 +39,19 @@ updates:
 | 
			
		||||
      prefix: "ci: [DEPENDABOT] "
 | 
			
		||||
    target-branch: develop
 | 
			
		||||
 | 
			
		||||
  - package-ecosystem: github-actions
 | 
			
		||||
    directory: .github/actions/cmake/
 | 
			
		||||
    schedule:
 | 
			
		||||
      interval: weekly
 | 
			
		||||
      day: monday
 | 
			
		||||
      time: "04:00"
 | 
			
		||||
      timezone: Etc/GMT
 | 
			
		||||
    reviewers:
 | 
			
		||||
      - XRPLF/clio-dev-team
 | 
			
		||||
    commit-message:
 | 
			
		||||
      prefix: "ci: [DEPENDABOT] "
 | 
			
		||||
    target-branch: develop
 | 
			
		||||
 | 
			
		||||
  - package-ecosystem: github-actions
 | 
			
		||||
    directory: .github/actions/code_coverage/
 | 
			
		||||
    schedule:
 | 
			
		||||
@@ -53,7 +66,7 @@ updates:
 | 
			
		||||
    target-branch: develop
 | 
			
		||||
 | 
			
		||||
  - package-ecosystem: github-actions
 | 
			
		||||
    directory: .github/actions/create_issue/
 | 
			
		||||
    directory: .github/actions/conan/
 | 
			
		||||
    schedule:
 | 
			
		||||
      interval: weekly
 | 
			
		||||
      day: monday
 | 
			
		||||
@@ -66,7 +79,7 @@ updates:
 | 
			
		||||
    target-branch: develop
 | 
			
		||||
 | 
			
		||||
  - package-ecosystem: github-actions
 | 
			
		||||
    directory: .github/actions/generate/
 | 
			
		||||
    directory: .github/actions/create_issue/
 | 
			
		||||
    schedule:
 | 
			
		||||
      interval: weekly
 | 
			
		||||
      day: monday
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								.github/workflows/build_impl.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/build_impl.yml
									
									
									
									
										vendored
									
									
								
							@@ -107,8 +107,14 @@ jobs:
 | 
			
		||||
          build_type: ${{ inputs.build_type }}
 | 
			
		||||
          code_coverage: ${{ inputs.code_coverage }}
 | 
			
		||||
 | 
			
		||||
      - name: Run conan and cmake
 | 
			
		||||
        uses: ./.github/actions/generate
 | 
			
		||||
      - name: Run conan
 | 
			
		||||
        uses: ./.github/actions/conan
 | 
			
		||||
        with:
 | 
			
		||||
          conan_profile: ${{ inputs.conan_profile }}
 | 
			
		||||
          build_type: ${{ inputs.build_type }}
 | 
			
		||||
 | 
			
		||||
      - name: Run CMake
 | 
			
		||||
        uses: ./.github/actions/cmake
 | 
			
		||||
        with:
 | 
			
		||||
          conan_profile: ${{ inputs.conan_profile }}
 | 
			
		||||
          build_type: ${{ inputs.build_type }}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								.github/workflows/check_libxrpl.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.github/workflows/check_libxrpl.yml
									
									
									
									
										vendored
									
									
								
							@@ -40,8 +40,13 @@ jobs:
 | 
			
		||||
        run: |
 | 
			
		||||
          conan lock create . -o '&:tests=True' -o '&:benchmark=True' --profile:all ${{ env.CONAN_PROFILE }}
 | 
			
		||||
 | 
			
		||||
      - name: Run conan and cmake
 | 
			
		||||
        uses: ./.github/actions/generate
 | 
			
		||||
      - name: Run conan
 | 
			
		||||
        uses: ./.github/actions/conan
 | 
			
		||||
        with:
 | 
			
		||||
          conan_profile: ${{ env.CONAN_PROFILE }}
 | 
			
		||||
 | 
			
		||||
      - name: Run CMake
 | 
			
		||||
        uses: ./.github/actions/cmake
 | 
			
		||||
        with:
 | 
			
		||||
          conan_profile: ${{ env.CONAN_PROFILE }}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								.github/workflows/clang-tidy.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.github/workflows/clang-tidy.yml
									
									
									
									
										vendored
									
									
								
							@@ -48,8 +48,13 @@ jobs:
 | 
			
		||||
          conan_profile: ${{ env.CONAN_PROFILE }}
 | 
			
		||||
          ccache_dir: ${{ env.CCACHE_DIR }}
 | 
			
		||||
 | 
			
		||||
      - name: Run conan and cmake
 | 
			
		||||
        uses: ./.github/actions/generate
 | 
			
		||||
      - name: Run conan
 | 
			
		||||
        uses: ./.github/actions/conan
 | 
			
		||||
        with:
 | 
			
		||||
          conan_profile: ${{ env.CONAN_PROFILE }}
 | 
			
		||||
 | 
			
		||||
      - name: Run CMake
 | 
			
		||||
        uses: ./.github/actions/cmake
 | 
			
		||||
        with:
 | 
			
		||||
          conan_profile: ${{ env.CONAN_PROFILE }}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								.github/workflows/upload_conan_deps.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/upload_conan_deps.yml
									
									
									
									
										vendored
									
									
								
							@@ -20,7 +20,7 @@ on:
 | 
			
		||||
    paths:
 | 
			
		||||
      - .github/workflows/upload_conan_deps.yml
 | 
			
		||||
 | 
			
		||||
      - .github/actions/generate/action.yml
 | 
			
		||||
      - .github/actions/conan/action.yml
 | 
			
		||||
      - ".github/scripts/conan/**"
 | 
			
		||||
 | 
			
		||||
      - conanfile.py
 | 
			
		||||
@@ -30,7 +30,7 @@ on:
 | 
			
		||||
    paths:
 | 
			
		||||
      - .github/workflows/upload_conan_deps.yml
 | 
			
		||||
 | 
			
		||||
      - .github/actions/generate/action.yml
 | 
			
		||||
      - .github/actions/conan/action.yml
 | 
			
		||||
      - ".github/scripts/conan/**"
 | 
			
		||||
 | 
			
		||||
      - conanfile.py
 | 
			
		||||
@@ -83,8 +83,8 @@ jobs:
 | 
			
		||||
      - name: Show conan profile
 | 
			
		||||
        run: conan profile show --profile:all ${{ env.CONAN_PROFILE }}
 | 
			
		||||
 | 
			
		||||
      - name: Run conan and cmake
 | 
			
		||||
        uses: ./.github/actions/generate
 | 
			
		||||
      - name: Run conan
 | 
			
		||||
        uses: ./.github/actions/conan
 | 
			
		||||
        with:
 | 
			
		||||
          conan_profile: ${{ env.CONAN_PROFILE }}
 | 
			
		||||
          # We check that everything builds fine from source on scheduled runs
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user