mirror of
				https://github.com/Xahau/xahaud.git
				synced 2025-11-04 02:35:48 +00:00 
			
		
		
		
	Add Conan Building For Development (#432)
This commit is contained in:
		
							
								
								
									
										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
 | 
				
			||||||
							
								
								
									
										108
									
								
								.github/actions/xahau-ga-build/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								.github/actions/xahau-ga-build/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,108 @@
 | 
				
			|||||||
 | 
					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 }}-
 | 
				
			||||||
 | 
					          ${{ runner.os }}-ccache-v${{ inputs.cache_version }}-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - 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 }}
 | 
				
			||||||
							
								
								
									
										86
									
								
								.github/actions/xahau-ga-dependencies/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								.github/actions/xahau-ga-dependencies/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,86 @@
 | 
				
			|||||||
 | 
					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 }}-
 | 
				
			||||||
 | 
					          ${{ runner.os }}-conan-v${{ inputs.cache_version }}-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: Export custom recipes
 | 
				
			||||||
 | 
					      shell: bash
 | 
				
			||||||
 | 
					      run: |
 | 
				
			||||||
 | 
					        conan export external/snappy snappy/1.1.9@
 | 
				
			||||||
 | 
					        conan export external/soci soci/4.0.3@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - 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 }}
 | 
				
			||||||
							
								
								
									
										20
									
								
								.github/workflows/checkpatterns.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/checkpatterns.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					name: checkpatterns
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					on: [push, pull_request]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  checkpatterns:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - name: Checkout
 | 
				
			||||||
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Check for suspicious patterns
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          if [ -f "suspicious_patterns.sh" ]; then
 | 
				
			||||||
 | 
					            bash suspicious_patterns.sh
 | 
				
			||||||
 | 
					          else
 | 
				
			||||||
 | 
					            echo "Warning: suspicious_patterns.sh not found, skipping check"
 | 
				
			||||||
 | 
					            # Still exit with success for compatibility with dependent jobs
 | 
				
			||||||
 | 
					            exit 0
 | 
				
			||||||
 | 
					          fi
 | 
				
			||||||
							
								
								
									
										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:
 | 
					 | 
				
			||||||
      - dev
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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
 | 
					 | 
				
			||||||
							
								
								
									
										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)
 | 
				
			||||||
							
								
								
									
										123
									
								
								.github/workflows/xahau-ga-nix.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								.github/workflows/xahau-ga-nix.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,123 @@
 | 
				
			|||||||
 | 
					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-11
 | 
				
			||||||
 | 
					            cxx: g++-11
 | 
				
			||||||
 | 
					            compiler_id: gcc-11
 | 
				
			||||||
 | 
					    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 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 correct compiler version based on matrix.compiler
 | 
				
			||||||
 | 
					          if [ "${{ matrix.compiler }}" = "gcc" ]; then
 | 
				
			||||||
 | 
					            conan profile update settings.compiler.version=11 default
 | 
				
			||||||
 | 
					          elif [ "${{ matrix.compiler }}" = "clang" ]; then
 | 
				
			||||||
 | 
					            conan profile update settings.compiler.version=14 default
 | 
				
			||||||
 | 
					          fi
 | 
				
			||||||
 | 
					          # 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
 | 
				
			||||||
							
								
								
									
										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.9@
 | 
				
			||||||
 | 
					   ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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@
 | 
				
			||||||
 | 
					   ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 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)
 | 
				
			||||||
#[=================================[
 | 
					#[=================================[
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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()
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										52
									
								
								Builds/CMake/conan/Boost.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								Builds/CMake/conan/Boost.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
				
			|||||||
 | 
					find_package(Boost 1.83 REQUIRED
 | 
				
			||||||
 | 
					  COMPONENTS
 | 
				
			||||||
 | 
					    chrono
 | 
				
			||||||
 | 
					    container
 | 
				
			||||||
 | 
					    context
 | 
				
			||||||
 | 
					    coroutine
 | 
				
			||||||
 | 
					    date_time
 | 
				
			||||||
 | 
					    filesystem
 | 
				
			||||||
 | 
					    program_options
 | 
				
			||||||
 | 
					    regex
 | 
				
			||||||
 | 
					    system
 | 
				
			||||||
 | 
					    thread
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_library(ripple_boost INTERFACE)
 | 
				
			||||||
 | 
					add_library(Ripple::boost ALIAS ripple_boost)
 | 
				
			||||||
 | 
					if(XCODE)
 | 
				
			||||||
 | 
					  target_include_directories(ripple_boost BEFORE INTERFACE ${Boost_INCLUDE_DIRS})
 | 
				
			||||||
 | 
					  target_compile_options(ripple_boost INTERFACE --system-header-prefix="boost/")
 | 
				
			||||||
 | 
					else()
 | 
				
			||||||
 | 
					  target_include_directories(ripple_boost SYSTEM BEFORE INTERFACE ${Boost_INCLUDE_DIRS})
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					target_link_libraries(ripple_boost
 | 
				
			||||||
 | 
					  INTERFACE
 | 
				
			||||||
 | 
					    Boost::boost
 | 
				
			||||||
 | 
					    Boost::chrono
 | 
				
			||||||
 | 
					    Boost::container
 | 
				
			||||||
 | 
					    Boost::coroutine
 | 
				
			||||||
 | 
					    Boost::date_time
 | 
				
			||||||
 | 
					    Boost::filesystem
 | 
				
			||||||
 | 
					    Boost::program_options
 | 
				
			||||||
 | 
					    Boost::regex
 | 
				
			||||||
 | 
					    Boost::system
 | 
				
			||||||
 | 
					    Boost::iostreams
 | 
				
			||||||
 | 
					    Boost::thread)
 | 
				
			||||||
 | 
					if(Boost_COMPILER)
 | 
				
			||||||
 | 
					  target_link_libraries(ripple_boost INTERFACE Boost::disable_autolinking)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					if(san AND is_clang)
 | 
				
			||||||
 | 
					  # TODO: gcc does not support -fsanitize-blacklist...can we do something else
 | 
				
			||||||
 | 
					  # for gcc ?
 | 
				
			||||||
 | 
					  if(NOT Boost_INCLUDE_DIRS AND TARGET Boost::headers)
 | 
				
			||||||
 | 
					    get_target_property(Boost_INCLUDE_DIRS Boost::headers INTERFACE_INCLUDE_DIRECTORIES)
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					  message(STATUS "Adding [${Boost_INCLUDE_DIRS}] to sanitizer blacklist")
 | 
				
			||||||
 | 
					  file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/san_bl.txt "src:${Boost_INCLUDE_DIRS}/*")
 | 
				
			||||||
 | 
					  target_compile_options(opts
 | 
				
			||||||
 | 
					    INTERFACE
 | 
				
			||||||
 | 
					      # ignore boost headers for sanitizing
 | 
				
			||||||
 | 
					      -fsanitize-blacklist=${CMAKE_CURRENT_BINARY_DIR}/san_bl.txt)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
							
								
								
									
										22
									
								
								Builds/CMake/conan/Protobuf.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								Builds/CMake/conan/Protobuf.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					find_package(Protobuf 3.8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/proto_gen)
 | 
				
			||||||
 | 
					set(ccbd ${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 ${ccbd})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_library(pbufs STATIC ${PROTO_SRCS} ${PROTO_HDRS})
 | 
				
			||||||
 | 
					target_include_directories(pbufs SYSTEM PUBLIC
 | 
				
			||||||
 | 
					  ${CMAKE_BINARY_DIR}/proto_gen
 | 
				
			||||||
 | 
					  ${CMAKE_BINARY_DIR}/proto_gen/src/ripple/proto
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					target_link_libraries(pbufs protobuf::libprotobuf)
 | 
				
			||||||
 | 
					target_compile_options(pbufs
 | 
				
			||||||
 | 
					  PUBLIC
 | 
				
			||||||
 | 
					    $<$<BOOL:${XCODE}>:
 | 
				
			||||||
 | 
					      --system-header-prefix="google/protobuf"
 | 
				
			||||||
 | 
					      -Wno-deprecated-dynamic-exception-spec
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					add_library(Ripple::pbufs ALIAS pbufs)
 | 
				
			||||||
							
								
								
									
										62
									
								
								Builds/CMake/conan/gRPC.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								Builds/CMake/conan/gRPC.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					find_package(gRPC 1.23)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[=================================[
 | 
				
			||||||
 | 
					   generate protobuf sources for
 | 
				
			||||||
 | 
					   grpc defs and bundle into a
 | 
				
			||||||
 | 
					   static lib
 | 
				
			||||||
 | 
					#]=================================]
 | 
				
			||||||
 | 
					set(GRPC_GEN_DIR "${CMAKE_BINARY_DIR}/proto_gen_grpc")
 | 
				
			||||||
 | 
					file(MAKE_DIRECTORY ${GRPC_GEN_DIR})
 | 
				
			||||||
 | 
					set(GRPC_PROTO_SRCS)
 | 
				
			||||||
 | 
					set(GRPC_PROTO_HDRS)
 | 
				
			||||||
 | 
					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")
 | 
				
			||||||
 | 
					foreach(file ${GRPC_DEFINITION_FILES})
 | 
				
			||||||
 | 
					  get_filename_component(_abs_file ${file} ABSOLUTE)
 | 
				
			||||||
 | 
					  get_filename_component(_abs_dir ${_abs_file} DIRECTORY)
 | 
				
			||||||
 | 
					  get_filename_component(_basename ${file} NAME_WE)
 | 
				
			||||||
 | 
					  get_filename_component(_proto_inc ${GRPC_PROTO_ROOT} DIRECTORY) # updir one level
 | 
				
			||||||
 | 
					  file(RELATIVE_PATH _rel_root_file ${_proto_inc} ${_abs_file})
 | 
				
			||||||
 | 
					  get_filename_component(_rel_root_dir ${_rel_root_file} DIRECTORY)
 | 
				
			||||||
 | 
					  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_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_2 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.pb.h")
 | 
				
			||||||
 | 
					  add_custom_command(
 | 
				
			||||||
 | 
					    OUTPUT ${src_1} ${src_2} ${hdr_1} ${hdr_2}
 | 
				
			||||||
 | 
					    COMMAND protobuf::protoc
 | 
				
			||||||
 | 
					    ARGS --grpc_out=${GRPC_GEN_DIR}
 | 
				
			||||||
 | 
					         --cpp_out=${GRPC_GEN_DIR}
 | 
				
			||||||
 | 
					         --plugin=protoc-gen-grpc=$<TARGET_FILE:gRPC::grpc_cpp_plugin>
 | 
				
			||||||
 | 
					         -I ${_proto_inc} -I ${_rel_dir}
 | 
				
			||||||
 | 
					         ${_abs_file}
 | 
				
			||||||
 | 
					    DEPENDS ${_abs_file} protobuf::protoc gRPC::grpc_cpp_plugin
 | 
				
			||||||
 | 
					    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 | 
				
			||||||
 | 
					    COMMENT "Running gRPC C++ protocol buffer compiler on ${file}"
 | 
				
			||||||
 | 
					    VERBATIM)
 | 
				
			||||||
 | 
					    set_source_files_properties(${src_1} ${src_2} ${hdr_1} ${hdr_2} PROPERTIES GENERATED TRUE)
 | 
				
			||||||
 | 
					    list(APPEND GRPC_PROTO_SRCS ${src_1} ${src_2})
 | 
				
			||||||
 | 
					    list(APPEND GRPC_PROTO_HDRS ${hdr_1} ${hdr_2})
 | 
				
			||||||
 | 
					endforeach()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_library(grpc_pbufs STATIC ${GRPC_PROTO_SRCS} ${GRPC_PROTO_HDRS})
 | 
				
			||||||
 | 
					#target_include_directories(grpc_pbufs PRIVATE src)
 | 
				
			||||||
 | 
					target_include_directories(grpc_pbufs SYSTEM PUBLIC ${GRPC_GEN_DIR})
 | 
				
			||||||
 | 
					target_link_libraries(grpc_pbufs
 | 
				
			||||||
 | 
					  "gRPC::grpc++"
 | 
				
			||||||
 | 
					  # libgrpc is missing references.
 | 
				
			||||||
 | 
					  absl::random_random
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					target_compile_options(grpc_pbufs
 | 
				
			||||||
 | 
					  PRIVATE
 | 
				
			||||||
 | 
					    $<$<BOOL:${MSVC}>:-wd4065>
 | 
				
			||||||
 | 
					    $<$<NOT:$<BOOL:${MSVC}>>:-Wno-deprecated-declarations>
 | 
				
			||||||
 | 
					  PUBLIC
 | 
				
			||||||
 | 
					    $<$<BOOL:${MSVC}>:-wd4996>
 | 
				
			||||||
 | 
					    $<$<BOOL:${XCODE}>:
 | 
				
			||||||
 | 
					      --system-header-prefix="google/protobuf"
 | 
				
			||||||
 | 
					      -Wno-deprecated-dynamic-exception-spec
 | 
				
			||||||
 | 
					    >)
 | 
				
			||||||
 | 
					add_library(Ripple::grpc_pbufs ALIAS grpc_pbufs)
 | 
				
			||||||
@@ -81,4 +81,4 @@ if(XAR_LIBRARY)
 | 
				
			|||||||
else()
 | 
					else()
 | 
				
			||||||
  message(WARNING "xar library not found... (only important for mac builds)")
 | 
					  message(WARNING "xar library not found... (only important for mac builds)")
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
add_library (NIH::WasmEdge ALIAS wasmedge)
 | 
					add_library (wasmedge::wasmedge ALIAS wasmedge)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										130
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						
									
										130
									
								
								CMakeLists.txt
									
									
									
									
									
								
							@@ -3,10 +3,16 @@ set(CMAKE_CXX_EXTENSIONS OFF)
 | 
				
			|||||||
set(CMAKE_CXX_STANDARD 20)
 | 
					set(CMAKE_CXX_STANDARD 20)
 | 
				
			||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
 | 
					set(CMAKE_CXX_STANDARD_REQUIRED ON)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(POLICY CMP0074)
 | 
				
			||||||
if (POLICY CMP0074)
 | 
					 | 
				
			||||||
  cmake_policy(SET CMP0074 NEW)
 | 
					  cmake_policy(SET CMP0074 NEW)
 | 
				
			||||||
endif ()
 | 
					endif()
 | 
				
			||||||
 | 
					if(POLICY CMP0077)
 | 
				
			||||||
 | 
					  cmake_policy(SET CMP0077 NEW)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Fix "unrecognized escape" issues when passing CMAKE_MODULE_PATH on Windows.
 | 
				
			||||||
 | 
					file(TO_CMAKE_PATH "${CMAKE_MODULE_PATH}" CMAKE_MODULE_PATH)
 | 
				
			||||||
 | 
					list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if(POLICY CMP0144)
 | 
					if(POLICY CMP0144)
 | 
				
			||||||
  cmake_policy(SET CMP0144 NEW)
 | 
					  cmake_policy(SET CMP0144 NEW)
 | 
				
			||||||
@@ -27,14 +33,27 @@ if(Git_FOUND)
 | 
				
			|||||||
    endif()
 | 
					    endif()
 | 
				
			||||||
endif() #git
 | 
					endif() #git
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (thread_safety_analysis)
 | 
					if(thread_safety_analysis)
 | 
				
			||||||
  add_compile_options(-Wthread-safety -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -DRIPPLE_ENABLE_THREAD_SAFETY_ANNOTATIONS)
 | 
					  add_compile_options(-Wthread-safety -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -DRIPPLE_ENABLE_THREAD_SAFETY_ANNOTATIONS)
 | 
				
			||||||
  add_compile_options("-stdlib=libc++")
 | 
					  add_compile_options("-stdlib=libc++")
 | 
				
			||||||
  add_link_options("-stdlib=libc++")
 | 
					  add_link_options("-stdlib=libc++")
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake")
 | 
					option(USE_CONAN "Use Conan package manager for dependencies" OFF)
 | 
				
			||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake/deps")
 | 
					# Then, auto-detect if conan_toolchain.cmake is being used
 | 
				
			||||||
 | 
					if(CMAKE_TOOLCHAIN_FILE)
 | 
				
			||||||
 | 
					  # Check if the toolchain file path contains "conan_toolchain"
 | 
				
			||||||
 | 
					  if(CMAKE_TOOLCHAIN_FILE MATCHES "conan_toolchain")
 | 
				
			||||||
 | 
					    set(USE_CONAN ON CACHE BOOL "Using Conan detected from toolchain file" FORCE)
 | 
				
			||||||
 | 
					    message(STATUS "Conan toolchain detected: ${CMAKE_TOOLCHAIN_FILE}")
 | 
				
			||||||
 | 
					    message(STATUS "Building with Conan dependencies")
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (NOT USE_CONAN)
 | 
				
			||||||
 | 
					  list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake")
 | 
				
			||||||
 | 
					  list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake/deps")
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include (CheckCXXCompilerFlag)
 | 
					include (CheckCXXCompilerFlag)
 | 
				
			||||||
include (FetchContent)
 | 
					include (FetchContent)
 | 
				
			||||||
@@ -48,7 +67,9 @@ endif ()
 | 
				
			|||||||
include(RippledSanity)
 | 
					include(RippledSanity)
 | 
				
			||||||
include(RippledVersion)
 | 
					include(RippledVersion)
 | 
				
			||||||
include(RippledSettings)
 | 
					include(RippledSettings)
 | 
				
			||||||
include(RippledNIH)
 | 
					if (NOT USE_CONAN)
 | 
				
			||||||
 | 
					  include(RippledNIH)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
# this check has to remain in the top-level cmake
 | 
					# this check has to remain in the top-level cmake
 | 
				
			||||||
# because of the early return statement
 | 
					# because of the early return statement
 | 
				
			||||||
if (packages_only)
 | 
					if (packages_only)
 | 
				
			||||||
@@ -61,24 +82,85 @@ include(RippledCompiler)
 | 
				
			|||||||
include(RippledInterface)
 | 
					include(RippledInterface)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
###
 | 
					###
 | 
				
			||||||
 | 
					if (NOT USE_CONAN)
 | 
				
			||||||
 | 
					  add_subdirectory(src/secp256k1)
 | 
				
			||||||
 | 
					  add_subdirectory(src/ed25519-donna)
 | 
				
			||||||
 | 
					  include(deps/Boost)
 | 
				
			||||||
 | 
					  include(deps/OpenSSL)
 | 
				
			||||||
 | 
					  # include(deps/Secp256k1)
 | 
				
			||||||
 | 
					  # include(deps/Ed25519-donna)
 | 
				
			||||||
 | 
					  include(deps/Lz4)
 | 
				
			||||||
 | 
					  include(deps/Libarchive)
 | 
				
			||||||
 | 
					  include(deps/Sqlite)
 | 
				
			||||||
 | 
					  include(deps/Soci)
 | 
				
			||||||
 | 
					  include(deps/Snappy)
 | 
				
			||||||
 | 
					  include(deps/Rocksdb)
 | 
				
			||||||
 | 
					  include(deps/Nudb)
 | 
				
			||||||
 | 
					  include(deps/date)
 | 
				
			||||||
 | 
					  include(deps/Protobuf)
 | 
				
			||||||
 | 
					  include(deps/gRPC)
 | 
				
			||||||
 | 
					  include(deps/cassandra)
 | 
				
			||||||
 | 
					  include(deps/Postgres)
 | 
				
			||||||
 | 
					  include(deps/WasmEdge)
 | 
				
			||||||
 | 
					else()
 | 
				
			||||||
 | 
					  include(conan/Boost)
 | 
				
			||||||
 | 
					  find_package(OpenSSL 1.1.1 REQUIRED)
 | 
				
			||||||
 | 
					  set_target_properties(OpenSSL::SSL PROPERTIES
 | 
				
			||||||
 | 
					    INTERFACE_COMPILE_DEFINITIONS OPENSSL_NO_SSL2
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					  add_subdirectory(src/secp256k1)
 | 
				
			||||||
 | 
					  add_subdirectory(src/ed25519-donna)
 | 
				
			||||||
 | 
					  find_package(lz4 REQUIRED)
 | 
				
			||||||
 | 
					  # Target names with :: are not allowed in a generator expression.
 | 
				
			||||||
 | 
					  # We need to pull the include directories and imported location properties
 | 
				
			||||||
 | 
					  # from separate targets.
 | 
				
			||||||
 | 
					  find_package(LibArchive REQUIRED)
 | 
				
			||||||
 | 
					  find_package(SOCI REQUIRED)
 | 
				
			||||||
 | 
					  find_package(SQLite3 REQUIRED)
 | 
				
			||||||
 | 
					  find_package(Snappy REQUIRED)
 | 
				
			||||||
 | 
					  find_package(wasmedge REQUIRED)
 | 
				
			||||||
 | 
					  option(rocksdb "Enable RocksDB" ON)
 | 
				
			||||||
 | 
					  if(rocksdb)
 | 
				
			||||||
 | 
					    find_package(RocksDB REQUIRED)
 | 
				
			||||||
 | 
					    set_target_properties(RocksDB::rocksdb PROPERTIES
 | 
				
			||||||
 | 
					      INTERFACE_COMPILE_DEFINITIONS RIPPLE_ROCKSDB_AVAILABLE=1
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    target_link_libraries(ripple_libs INTERFACE RocksDB::rocksdb)
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					  find_package(nudb REQUIRED)
 | 
				
			||||||
 | 
					  find_package(date REQUIRED)
 | 
				
			||||||
 | 
					  include(conan/Protobuf)
 | 
				
			||||||
 | 
					  include(conan/gRPC)
 | 
				
			||||||
 | 
					    if(TARGET nudb::core)
 | 
				
			||||||
 | 
					    set(nudb nudb::core)
 | 
				
			||||||
 | 
					  elseif(TARGET NuDB::nudb)
 | 
				
			||||||
 | 
					    set(nudb NuDB::nudb)
 | 
				
			||||||
 | 
					  else()
 | 
				
			||||||
 | 
					    message(FATAL_ERROR "unknown nudb target")
 | 
				
			||||||
 | 
					  endif()
 | 
				
			||||||
 | 
					  target_link_libraries(ripple_libs INTERFACE ${nudb})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include(deps/Boost)
 | 
					  if(reporting)
 | 
				
			||||||
include(deps/OpenSSL)
 | 
					    find_package(cassandra-cpp-driver REQUIRED)
 | 
				
			||||||
include(deps/Secp256k1)
 | 
					    find_package(PostgreSQL REQUIRED)
 | 
				
			||||||
include(deps/Ed25519-donna)
 | 
					    target_link_libraries(ripple_libs INTERFACE
 | 
				
			||||||
include(deps/Lz4)
 | 
					      cassandra-cpp-driver::cassandra-cpp-driver
 | 
				
			||||||
include(deps/Libarchive)
 | 
					      PostgreSQL::PostgreSQL
 | 
				
			||||||
include(deps/Sqlite)
 | 
					    )
 | 
				
			||||||
include(deps/Soci)
 | 
					  endif()
 | 
				
			||||||
include(deps/Snappy)
 | 
					  target_link_libraries(ripple_libs INTERFACE
 | 
				
			||||||
include(deps/Rocksdb)
 | 
					    ed25519::ed25519
 | 
				
			||||||
include(deps/Nudb)
 | 
					    LibArchive::LibArchive
 | 
				
			||||||
include(deps/date)
 | 
					    lz4::lz4
 | 
				
			||||||
include(deps/Protobuf)
 | 
					    OpenSSL::Crypto
 | 
				
			||||||
include(deps/gRPC)
 | 
					    OpenSSL::SSL
 | 
				
			||||||
include(deps/cassandra)
 | 
					    Ripple::grpc_pbufs
 | 
				
			||||||
include(deps/Postgres)
 | 
					    Ripple::pbufs
 | 
				
			||||||
include(deps/WasmEdge)
 | 
					    secp256k1::secp256k1
 | 
				
			||||||
 | 
					    soci::soci
 | 
				
			||||||
 | 
					    SQLite::SQLite3
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
###
 | 
					###
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										124
									
								
								RELEASENOTES.md
									
									
									
									
									
								
							
							
						
						
									
										124
									
								
								RELEASENOTES.md
									
									
									
									
									
								
							@@ -8,6 +8,130 @@ This document contains the release notes for `rippled`, the reference server imp
 | 
				
			|||||||
Have new ideas? Need help with setting up your node? [Please open an issue here](https://github.com/xrplf/rippled/issues/new/choose).
 | 
					Have new ideas? Need help with setting up your node? [Please open an issue here](https://github.com/xrplf/rippled/issues/new/choose).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Introducing XRP Ledger version 1.11.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Version 1.11.0 of `rippled`, the reference server implementation of the XRP Ledger protocol, is now available.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This release reduces memory usage, introduces the `fixNFTokenRemint` amendment, and adds new features and bug fixes. For example, the new NetworkID field in transactions helps to prevent replay attacks with side-chains.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Sign Up for Future Release Announcements](https://groups.google.com/g/ripple-server)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- BREAK -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Action Required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `fixNFTokenRemint` amendment is now open for voting according to the XRP Ledger's [amendment process](https://xrpl.org/amendments.html), which enables protocol changes following two weeks of >80% support from trusted validators.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you operate an XRP Ledger server, upgrade to version 1.11.0 by July 5 to ensure service continuity. The exact time that protocol changes take effect depends on the voting decisions of the decentralized network.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Install / Upgrade
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					On supported platforms, see the [instructions on installing or updating `rippled`](https://xrpl.org/install-rippled.html).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## What's Changed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### New Features and Improvements
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Allow port numbers be be specified using a either a colon or a space by @RichardAH in https://github.com/XRPLF/rippled/pull/4328
 | 
				
			||||||
 | 
					* Eliminate memory allocation from critical path: by @nbougalis in https://github.com/XRPLF/rippled/pull/4353
 | 
				
			||||||
 | 
					* Make it easy for projects to depend on libxrpl by @thejohnfreeman in https://github.com/XRPLF/rippled/pull/4449
 | 
				
			||||||
 | 
					* Add the ability to mark amendments as obsolete by @ximinez in https://github.com/XRPLF/rippled/pull/4291
 | 
				
			||||||
 | 
					* Always create the FeeSettings object in genesis ledger by @ximinez in https://github.com/XRPLF/rippled/pull/4319
 | 
				
			||||||
 | 
					* Log exception messages in several locations by @drlongle in https://github.com/XRPLF/rippled/pull/4400
 | 
				
			||||||
 | 
					* Parse flags in account_info method by @drlongle in https://github.com/XRPLF/rippled/pull/4459
 | 
				
			||||||
 | 
					* Add NFTokenPages to account_objects RPC by @RichardAH in https://github.com/XRPLF/rippled/pull/4352
 | 
				
			||||||
 | 
					* add jss fields used by clio `nft_info` by @ledhed2222 in https://github.com/XRPLF/rippled/pull/4320
 | 
				
			||||||
 | 
					* Introduce a slab-based memory allocator and optimize SHAMapItem by @nbougalis in https://github.com/XRPLF/rippled/pull/4218
 | 
				
			||||||
 | 
					* Add NetworkID field to transactions to help prevent replay attacks on and from side-chains by @RichardAH in https://github.com/XRPLF/rippled/pull/4370
 | 
				
			||||||
 | 
					* If present, set quorum based on command line. by @mtrippled in https://github.com/XRPLF/rippled/pull/4489
 | 
				
			||||||
 | 
					* API does not accept seed or public key for account by @drlongle in https://github.com/XRPLF/rippled/pull/4404
 | 
				
			||||||
 | 
					* Add `nftoken_id`, `nftoken_ids` and `offer_id` meta fields into NFT `Tx` responses by @shawnxie999 in https://github.com/XRPLF/rippled/pull/4447
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Bug Fixes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* fix(gateway_balances): handle overflow exception by @RichardAH in https://github.com/XRPLF/rippled/pull/4355
 | 
				
			||||||
 | 
					* fix(ValidatorSite): handle rare null pointer dereference in timeout by @ximinez in https://github.com/XRPLF/rippled/pull/4420
 | 
				
			||||||
 | 
					* RPC commands understand markers derived from all ledger object types by @ximinez in https://github.com/XRPLF/rippled/pull/4361
 | 
				
			||||||
 | 
					* `fixNFTokenRemint`: prevent NFT re-mint: by @shawnxie999 in https://github.com/XRPLF/rippled/pull/4406
 | 
				
			||||||
 | 
					* Fix a case where ripple::Expected returned a json array, not a value by @scottschurr in https://github.com/XRPLF/rippled/pull/4401
 | 
				
			||||||
 | 
					* fix: Ledger data returns an empty list (instead of null) when all entries are filtered out by @drlongle in https://github.com/XRPLF/rippled/pull/4398
 | 
				
			||||||
 | 
					* Fix unit test ripple.app.LedgerData by @drlongle in https://github.com/XRPLF/rippled/pull/4484
 | 
				
			||||||
 | 
					* Fix the fix for std::result_of by @thejohnfreeman in https://github.com/XRPLF/rippled/pull/4496
 | 
				
			||||||
 | 
					* Fix errors for Clang 16 by @thejohnfreeman in https://github.com/XRPLF/rippled/pull/4501
 | 
				
			||||||
 | 
					* Ensure that switchover vars are initialized before use: by @seelabs in https://github.com/XRPLF/rippled/pull/4527
 | 
				
			||||||
 | 
					* Move faulty assert by @ximinez in https://github.com/XRPLF/rippled/pull/4533
 | 
				
			||||||
 | 
					* Fix unaligned load and stores: (#4528) by @seelabs in https://github.com/XRPLF/rippled/pull/4531
 | 
				
			||||||
 | 
					* fix node size estimation by @dangell7 in https://github.com/XRPLF/rippled/pull/4536
 | 
				
			||||||
 | 
					* fix: remove redundant moves by @ckeshava in https://github.com/XRPLF/rippled/pull/4565
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Code Cleanup and Testing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Replace compare() with the three-way comparison operator in base_uint, Issue and Book by @drlongle in https://github.com/XRPLF/rippled/pull/4411
 | 
				
			||||||
 | 
					* Rectify the import paths of boost::function_output_iterator by @ckeshava in https://github.com/XRPLF/rippled/pull/4293
 | 
				
			||||||
 | 
					* Expand Linux test matrix by @thejohnfreeman in https://github.com/XRPLF/rippled/pull/4454
 | 
				
			||||||
 | 
					* Add patched recipe for SOCI by @thejohnfreeman in https://github.com/XRPLF/rippled/pull/4510
 | 
				
			||||||
 | 
					* Switch to self-hosted runners for macOS by @thejohnfreeman in https://github.com/XRPLF/rippled/pull/4511
 | 
				
			||||||
 | 
					* [TRIVIAL] Add missing includes by @seelabs in https://github.com/XRPLF/rippled/pull/4555
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Docs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Refactor build instructions by @thejohnfreeman in https://github.com/XRPLF/rippled/pull/4381
 | 
				
			||||||
 | 
					* Add install instructions for package managers by @thejohnfreeman in https://github.com/XRPLF/rippled/pull/4472
 | 
				
			||||||
 | 
					* Fix typo by @solmsted in https://github.com/XRPLF/rippled/pull/4508
 | 
				
			||||||
 | 
					* Update environment.md by @sappenin in https://github.com/XRPLF/rippled/pull/4498
 | 
				
			||||||
 | 
					* Update BUILD.md by @oeggert in https://github.com/XRPLF/rippled/pull/4514
 | 
				
			||||||
 | 
					* Trivial: add comments for NFToken-related invariants by @scottschurr in https://github.com/XRPLF/rippled/pull/4558
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## New Contributors
 | 
				
			||||||
 | 
					* @drlongle made their first contribution in https://github.com/XRPLF/rippled/pull/4411
 | 
				
			||||||
 | 
					* @ckeshava made their first contribution in https://github.com/XRPLF/rippled/pull/4293
 | 
				
			||||||
 | 
					* @solmsted made their first contribution in https://github.com/XRPLF/rippled/pull/4508
 | 
				
			||||||
 | 
					* @sappenin made their first contribution in https://github.com/XRPLF/rippled/pull/4498
 | 
				
			||||||
 | 
					* @oeggert made their first contribution in https://github.com/XRPLF/rippled/pull/4514
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**Full Changelog**: https://github.com/XRPLF/rippled/compare/1.10.1...1.11.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### GitHub
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The public source code repository for `rippled` is hosted on GitHub at <https://github.com/XRPLF/rippled>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					We welcome all contributions and invite everyone to join the community of XRP Ledger developers to help build the Internet of Value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Credits
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The following people contributed directly to this release:
 | 
				
			||||||
 | 
					- Alloy Networks <45832257+alloynetworks@users.noreply.github.com>
 | 
				
			||||||
 | 
					- Brandon Wilson <brandon@coil.com>
 | 
				
			||||||
 | 
					- Chenna Keshava B S <21219765+ckeshava@users.noreply.github.com>
 | 
				
			||||||
 | 
					- David Fuelling <sappenin@gmail.com>
 | 
				
			||||||
 | 
					- Denis Angell <dangell@transia.co>
 | 
				
			||||||
 | 
					- Ed Hennis <ed@ripple.com>
 | 
				
			||||||
 | 
					- Elliot Lee <github.public@intelliot.com>
 | 
				
			||||||
 | 
					- John Freeman <jfreeman08@gmail.com>
 | 
				
			||||||
 | 
					- Mark Travis <mtrippled@users.noreply.github.com>
 | 
				
			||||||
 | 
					- Nik Bougalis <nikb@bougalis.net>
 | 
				
			||||||
 | 
					- RichardAH <richard.holland@starstone.co.nz>
 | 
				
			||||||
 | 
					- Scott Determan <scott.determan@yahoo.com>
 | 
				
			||||||
 | 
					- Scott Schurr <scott@ripple.com>
 | 
				
			||||||
 | 
					- Shawn Xie <35279399+shawnxie999@users.noreply.github.com>
 | 
				
			||||||
 | 
					- drlongle <drlongle@gmail.com>
 | 
				
			||||||
 | 
					- ledhed2222 <ledhed2222@users.noreply.github.com>
 | 
				
			||||||
 | 
					- oeggert <117319296+oeggert@users.noreply.github.com>
 | 
				
			||||||
 | 
					- solmsted <steven.olm@gmail.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Bug Bounties and Responsible Disclosures:
 | 
				
			||||||
 | 
					We welcome reviews of the rippled code and urge researchers to
 | 
				
			||||||
 | 
					responsibly disclose any issues they may find.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To report a bug, please send a detailed report to:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bugs@xrpl.org
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Introducing XRP Ledger version 1.10.1
 | 
					# Introducing XRP Ledger version 1.10.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Version 1.10.1 of `rippled`, the reference server implementation of the XRP Ledger protocol, is now available. This release restores packages for Ubuntu 18.04.
 | 
					Version 1.10.1 of `rippled`, the reference server implementation of the XRP Ledger protocol, is now available. This release restores packages for Ubuntu 18.04.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								SECURITY.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								SECURITY.md
									
									
									
									
									
								
							@@ -61,13 +61,12 @@ For these complaints or reports, please [contact our support team](mailto:bugs@x
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
### The following type of security problems are excluded
 | 
					### The following type of security problems are excluded
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (D)DOS attacks
 | 
					1. **In scope**. Only bugs in software under the scope of the program qualify. Currently, that means `xahaud` and `xahau-lib`.
 | 
				
			||||||
- Error messages or error pages without sensitive data
 | 
					2. **Relevant**. A security issue, posing a danger to user funds, privacy or the operation of the Xahau Ledger.
 | 
				
			||||||
- Tests & sample data as publicly available in our repositories at Github
 | 
					3. **Original and previously unknown**. Bugs that are already known and discussed in public do not qualify. Previously reported bugs, even if publicly unknown, are not eligible.
 | 
				
			||||||
- Common issues like browser header warnings or DNS configuration, identified by vulnerability scans
 | 
					4. **Specific**. We welcome general security advice or recommendations, but we cannot pay bounties for that.
 | 
				
			||||||
- Vulnerability scan reports for software we publicly use
 | 
					5. **Fixable**. There has to be something we can do to permanently fix the problem. Note that bugs in other people’s software may still qualify in some cases. For example, if you find a bug in a library that we use which can compromise the security of software that is in scope and we can get it fixed, you may qualify for a bounty.
 | 
				
			||||||
- Security issues related to outdated OS's, browsers or plugins
 | 
					6. **Unused**. If you use the exploit to attack the Xahau Ledger, you do not qualify for a bounty. If you report a vulnerability used in an ongoing or past attack and there is specific, concrete evidence that suggests you are the attacker we reserve the right not to pay a bounty.
 | 
				
			||||||
- Reports for security problems that we have been notified of before
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Please note: Reports that are lacking any proof (such as screenshots or other data), detailed information or details on how to reproduce any unexpected result will be investigated but will not be eligible for any reward.
 | 
					Please note: Reports that are lacking any proof (such as screenshots or other data), detailed information or details on how to reproduce any unexpected result will be investigated but will not be eligible for any reward.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,7 +35,7 @@ message(STATUS \"Using LLVMConfig.cmake in: \${LLVM_DIR}\")
 | 
				
			|||||||
add_library (wasmedge STATIC IMPORTED GLOBAL)
 | 
					add_library (wasmedge STATIC IMPORTED GLOBAL)
 | 
				
			||||||
set_target_properties(wasmedge PROPERTIES IMPORTED_LOCATION \${WasmEdge_LIB})
 | 
					set_target_properties(wasmedge PROPERTIES IMPORTED_LOCATION \${WasmEdge_LIB})
 | 
				
			||||||
target_link_libraries (ripple_libs INTERFACE wasmedge)
 | 
					target_link_libraries (ripple_libs INTERFACE wasmedge)
 | 
				
			||||||
add_library (NIH::WasmEdge ALIAS wasmedge)
 | 
					add_library (wasmedge::wasmedge ALIAS wasmedge)
 | 
				
			||||||
message(\"WasmEdge DONE\")
 | 
					message(\"WasmEdge DONE\")
 | 
				
			||||||
" > Builds/CMake/deps/WasmEdge.cmake &&
 | 
					" > Builds/CMake/deps/WasmEdge.cmake &&
 | 
				
			||||||
git checkout src/ripple/protocol/impl/BuildInfo.cpp &&
 | 
					git checkout src/ripple/protocol/impl/BuildInfo.cpp &&
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										0
									
								
								build-full.sh
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								build-full.sh
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										155
									
								
								conanfile.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										155
									
								
								conanfile.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,155 @@
 | 
				
			|||||||
 | 
					from conan import ConanFile
 | 
				
			||||||
 | 
					from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout
 | 
				
			||||||
 | 
					import re
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Xrpl(ConanFile):
 | 
				
			||||||
 | 
					    name = 'xrpl'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    license = 'ISC'
 | 
				
			||||||
 | 
					    author = 'John Freeman <jfreeman@ripple.com>'
 | 
				
			||||||
 | 
					    url = 'https://github.com/xrplf/rippled'
 | 
				
			||||||
 | 
					    description = 'The XRP Ledger'
 | 
				
			||||||
 | 
					    settings = 'os', 'compiler', 'build_type', 'arch'
 | 
				
			||||||
 | 
					    options = {
 | 
				
			||||||
 | 
					        'assertions': [True, False],
 | 
				
			||||||
 | 
					        'coverage': [True, False],
 | 
				
			||||||
 | 
					        'fPIC': [True, False],
 | 
				
			||||||
 | 
					        'jemalloc': [True, False],
 | 
				
			||||||
 | 
					        'reporting': [True, False],
 | 
				
			||||||
 | 
					        'rocksdb': [True, False],
 | 
				
			||||||
 | 
					        'shared': [True, False],
 | 
				
			||||||
 | 
					        'static': [True, False],
 | 
				
			||||||
 | 
					        'tests': [True, False],
 | 
				
			||||||
 | 
					        'unity': [True, False],
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    requires = [
 | 
				
			||||||
 | 
					        'boost/1.86.0',
 | 
				
			||||||
 | 
					        'date/3.0.1',
 | 
				
			||||||
 | 
					        'libarchive/3.6.0',
 | 
				
			||||||
 | 
					        'lz4/1.9.3',
 | 
				
			||||||
 | 
					        'grpc/1.50.1',
 | 
				
			||||||
 | 
					        'nudb/2.0.8',
 | 
				
			||||||
 | 
					        'openssl/1.1.1u',
 | 
				
			||||||
 | 
					        'protobuf/3.21.9',
 | 
				
			||||||
 | 
					        'snappy/1.1.10',
 | 
				
			||||||
 | 
					        'soci/4.0.3',
 | 
				
			||||||
 | 
					        'sqlite3/3.42.0',
 | 
				
			||||||
 | 
					        'zlib/1.2.13',
 | 
				
			||||||
 | 
					        'wasmedge/0.11.2',
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    default_options = {
 | 
				
			||||||
 | 
					        'assertions': False,
 | 
				
			||||||
 | 
					        'coverage': False,
 | 
				
			||||||
 | 
					        'fPIC': True,
 | 
				
			||||||
 | 
					        'jemalloc': False,
 | 
				
			||||||
 | 
					        'reporting': False,
 | 
				
			||||||
 | 
					        'rocksdb': True,
 | 
				
			||||||
 | 
					        'shared': False,
 | 
				
			||||||
 | 
					        'static': True,
 | 
				
			||||||
 | 
					        'tests': True,
 | 
				
			||||||
 | 
					        'unity': False,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        'cassandra-cpp-driver:shared': False,
 | 
				
			||||||
 | 
					        'date:header_only': True,
 | 
				
			||||||
 | 
					        'grpc:shared': False,
 | 
				
			||||||
 | 
					        'grpc:secure': True,
 | 
				
			||||||
 | 
					        'libarchive:shared': False,
 | 
				
			||||||
 | 
					        'libarchive:with_acl': False,
 | 
				
			||||||
 | 
					        'libarchive:with_bzip2': False,
 | 
				
			||||||
 | 
					        'libarchive:with_cng': False,
 | 
				
			||||||
 | 
					        'libarchive:with_expat': False,
 | 
				
			||||||
 | 
					        'libarchive:with_iconv': False,
 | 
				
			||||||
 | 
					        'libarchive:with_libxml2': False,
 | 
				
			||||||
 | 
					        'libarchive:with_lz4': True,
 | 
				
			||||||
 | 
					        'libarchive:with_lzma': False,
 | 
				
			||||||
 | 
					        'libarchive:with_lzo': False,
 | 
				
			||||||
 | 
					        'libarchive:with_nettle': False,
 | 
				
			||||||
 | 
					        'libarchive:with_openssl': False,
 | 
				
			||||||
 | 
					        'libarchive:with_pcreposix': False,
 | 
				
			||||||
 | 
					        'libarchive:with_xattr': False,
 | 
				
			||||||
 | 
					        'libarchive:with_zlib': False,
 | 
				
			||||||
 | 
					        'libpq:shared': False,
 | 
				
			||||||
 | 
					        'lz4:shared': False,
 | 
				
			||||||
 | 
					        'openssl:shared': False,
 | 
				
			||||||
 | 
					        'protobuf:shared': False,
 | 
				
			||||||
 | 
					        'protobuf:with_zlib': True,
 | 
				
			||||||
 | 
					        'rocksdb:enable_sse': False,
 | 
				
			||||||
 | 
					        'rocksdb:lite': False,
 | 
				
			||||||
 | 
					        'rocksdb:shared': False,
 | 
				
			||||||
 | 
					        'rocksdb:use_rtti': True,
 | 
				
			||||||
 | 
					        'rocksdb:with_jemalloc': False,
 | 
				
			||||||
 | 
					        'rocksdb:with_lz4': True,
 | 
				
			||||||
 | 
					        'rocksdb:with_snappy': True,
 | 
				
			||||||
 | 
					        'snappy:shared': False,
 | 
				
			||||||
 | 
					        'soci:shared': False,
 | 
				
			||||||
 | 
					        'soci:with_sqlite3': True,
 | 
				
			||||||
 | 
					        'soci:with_boost': True,
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def set_version(self):
 | 
				
			||||||
 | 
					        path = f'{self.recipe_folder}/src/ripple/protocol/impl/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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def configure(self):
 | 
				
			||||||
 | 
					        if self.settings.compiler == 'apple-clang':
 | 
				
			||||||
 | 
					            self.options['boost'].visibility = 'global'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def requirements(self):
 | 
				
			||||||
 | 
					        if self.options.jemalloc:
 | 
				
			||||||
 | 
					            self.requires('jemalloc/5.2.1')
 | 
				
			||||||
 | 
					        if self.options.reporting:
 | 
				
			||||||
 | 
					            self.requires('cassandra-cpp-driver/2.15.3')
 | 
				
			||||||
 | 
					            self.requires('libpq/13.6')
 | 
				
			||||||
 | 
					        if self.options.rocksdb:
 | 
				
			||||||
 | 
					            self.requires('rocksdb/6.27.3')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    exports_sources = (
 | 
				
			||||||
 | 
					        'CMakeLists.txt', 'Builds/*', 'bin/getRippledInfo', 'src/*', 'cfg/*'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def layout(self):
 | 
				
			||||||
 | 
					        cmake_layout(self)
 | 
				
			||||||
 | 
					        # Fix this setting to follow the default introduced in Conan 1.48
 | 
				
			||||||
 | 
					        # to align with our build instructions.
 | 
				
			||||||
 | 
					        self.folders.generators = 'build/generators'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    generators = 'CMakeDeps'
 | 
				
			||||||
 | 
					    def generate(self):
 | 
				
			||||||
 | 
					        tc = CMakeToolchain(self)
 | 
				
			||||||
 | 
					        tc.variables['tests'] = self.options.tests
 | 
				
			||||||
 | 
					        tc.variables['assert'] = self.options.assertions
 | 
				
			||||||
 | 
					        tc.variables['coverage'] = self.options.coverage
 | 
				
			||||||
 | 
					        tc.variables['jemalloc'] = self.options.jemalloc
 | 
				
			||||||
 | 
					        tc.variables['reporting'] = self.options.reporting
 | 
				
			||||||
 | 
					        tc.variables['rocksdb'] = self.options.rocksdb
 | 
				
			||||||
 | 
					        tc.variables['BUILD_SHARED_LIBS'] = self.options.shared
 | 
				
			||||||
 | 
					        tc.variables['static'] = self.options.static
 | 
				
			||||||
 | 
					        tc.variables['unity'] = self.options.unity
 | 
				
			||||||
 | 
					        tc.generate()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def build(self):
 | 
				
			||||||
 | 
					        cmake = CMake(self)
 | 
				
			||||||
 | 
					        cmake.verbose = True
 | 
				
			||||||
 | 
					        cmake.configure()
 | 
				
			||||||
 | 
					        cmake.build()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def package(self):
 | 
				
			||||||
 | 
					        cmake = CMake(self)
 | 
				
			||||||
 | 
					        cmake.verbose = True
 | 
				
			||||||
 | 
					        cmake.install()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def package_info(self):
 | 
				
			||||||
 | 
					        libxrpl = self.cpp_info.components['libxrpl']
 | 
				
			||||||
 | 
					        libxrpl.libs = [
 | 
				
			||||||
 | 
					            'libxrpl_core.a',
 | 
				
			||||||
 | 
					            'libed25519.a',
 | 
				
			||||||
 | 
					            'libsecp256k1.a',
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					        libxrpl.includedirs = ['include']
 | 
				
			||||||
 | 
					        libxrpl.requires = ['boost::boost']
 | 
				
			||||||
							
								
								
									
										84
									
								
								docs/build/environment.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								docs/build/environment.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,84 @@
 | 
				
			|||||||
 | 
					Our [build instructions][BUILD.md] assume you have a C++ development
 | 
				
			||||||
 | 
					environment complete with Git, Python, Conan, CMake, and a C++ compiler.
 | 
				
			||||||
 | 
					This document exists to help readers set one up on any of the Big Three
 | 
				
			||||||
 | 
					platforms: Linux, macOS, or Windows.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[BUILD.md]: ../../BUILD.md
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Linux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package ecosystems vary across Linux distributions,
 | 
				
			||||||
 | 
					so there is no one set of instructions that will work for every Linux user.
 | 
				
			||||||
 | 
					These instructions are written for Ubuntu 22.04.
 | 
				
			||||||
 | 
					They are largely copied from the [script][1] used to configure our Docker
 | 
				
			||||||
 | 
					container for continuous integration.
 | 
				
			||||||
 | 
					That script handles many more responsibilities.
 | 
				
			||||||
 | 
					These instructions are just the bare minimum to build one configuration of
 | 
				
			||||||
 | 
					rippled.
 | 
				
			||||||
 | 
					You can check that codebase for other Linux distributions and versions.
 | 
				
			||||||
 | 
					If you cannot find yours there,
 | 
				
			||||||
 | 
					then we hope that these instructions can at least guide you in the right
 | 
				
			||||||
 | 
					direction.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					apt update
 | 
				
			||||||
 | 
					apt install --yes curl git libssl-dev python3.10-dev python3-pip make g++-11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					curl --location --remote-name \
 | 
				
			||||||
 | 
					  "https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1.tar.gz"
 | 
				
			||||||
 | 
					tar -xzf cmake-3.25.1.tar.gz
 | 
				
			||||||
 | 
					rm cmake-3.25.1.tar.gz
 | 
				
			||||||
 | 
					cd cmake-3.25.1
 | 
				
			||||||
 | 
					./bootstrap --parallel=$(nproc)
 | 
				
			||||||
 | 
					make --jobs $(nproc)
 | 
				
			||||||
 | 
					make install
 | 
				
			||||||
 | 
					cd ..
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pip3 install 'conan<2'
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[1]: https://github.com/thejohnfreeman/rippled-docker/blob/master/ubuntu-22.04/install.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## macOS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Open a Terminal and enter the below command to bring up a dialog to install
 | 
				
			||||||
 | 
					the command line developer tools.
 | 
				
			||||||
 | 
					Once it is finished, this command should return a version greater than the
 | 
				
			||||||
 | 
					minimum required (see [BUILD.md][]).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					clang --version
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The command line developer tools should include Git too:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					git --version
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Install [Homebrew][],
 | 
				
			||||||
 | 
					use it to install [pyenv][],
 | 
				
			||||||
 | 
					use it to install Python,
 | 
				
			||||||
 | 
					and use it to install Conan:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Homebrew]: https://brew.sh/
 | 
				
			||||||
 | 
					[pyenv]: https://github.com/pyenv/pyenv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
 | 
				
			||||||
 | 
					brew update
 | 
				
			||||||
 | 
					brew install xz
 | 
				
			||||||
 | 
					brew install pyenv
 | 
				
			||||||
 | 
					pyenv install 3.10-dev
 | 
				
			||||||
 | 
					pyenv global 3.10-dev
 | 
				
			||||||
 | 
					eval "$(pyenv init -)"
 | 
				
			||||||
 | 
					pip install 'conan<2'
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Install CMake with Homebrew too:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					brew install cmake
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
							
								
								
									
										159
									
								
								docs/build/install.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								docs/build/install.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,159 @@
 | 
				
			|||||||
 | 
					This document contains instructions for installing rippled.
 | 
				
			||||||
 | 
					The APT package manager is common on Debian-based Linux distributions like
 | 
				
			||||||
 | 
					Ubuntu,
 | 
				
			||||||
 | 
					while the YUM package manager is common on Red Hat-based Linux distributions
 | 
				
			||||||
 | 
					like CentOS.
 | 
				
			||||||
 | 
					Installing from source is an option for all platforms,
 | 
				
			||||||
 | 
					and the only supported option for installing custom builds.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## From source
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					From a source build, you can install rippled and libxrpl using CMake's
 | 
				
			||||||
 | 
					`--install` mode:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					cmake --install . --prefix /opt/local
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The default [prefix][1] is typically `/usr/local` on Linux and macOS and
 | 
				
			||||||
 | 
					`C:/Program Files/rippled` on Windows.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[1]: https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX.html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## With the APT package manager
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. Update repositories:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sudo apt update -y
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2. Install utilities:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sudo apt install -y apt-transport-https ca-certificates wget gnupg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					3. Add Ripple's package-signing GPG key to your list of trusted keys:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sudo mkdir /usr/local/share/keyrings/
 | 
				
			||||||
 | 
					        wget -q -O - "https://repos.ripple.com/repos/api/gpg/key/public" | gpg --dearmor > ripple-key.gpg
 | 
				
			||||||
 | 
					        sudo mv ripple-key.gpg /usr/local/share/keyrings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					4. Check the fingerprint of the newly-added key:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        gpg /usr/local/share/keyrings/ripple-key.gpg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    The output should include an entry for Ripple such as the following:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        gpg: WARNING: no command supplied.  Trying to guess what you mean ...
 | 
				
			||||||
 | 
					        pub   rsa3072 2019-02-14 [SC] [expires: 2026-02-17]
 | 
				
			||||||
 | 
					            C0010EC205B35A3310DC90DE395F97FFCCAFD9A2
 | 
				
			||||||
 | 
					        uid           TechOps Team at Ripple <techops+rippled@ripple.com>
 | 
				
			||||||
 | 
					        sub   rsa3072 2019-02-14 [E] [expires: 2026-02-17]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    In particular, make sure that the fingerprint matches. (In the above example, the fingerprint is on the third line, starting with `C001`.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					4. Add the appropriate Ripple repository for your operating system version:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        echo "deb [signed-by=/usr/local/share/keyrings/ripple-key.gpg] https://repos.ripple.com/repos/rippled-deb focal stable" | \
 | 
				
			||||||
 | 
					            sudo tee -a /etc/apt/sources.list.d/ripple.list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    The above example is appropriate for **Ubuntu 20.04 Focal Fossa**. For other operating systems, replace the word `focal` with one of the following:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - `jammy` for **Ubuntu 22.04 Jammy Jellyfish**
 | 
				
			||||||
 | 
					    - `bionic` for **Ubuntu 18.04 Bionic Beaver**
 | 
				
			||||||
 | 
					    - `bullseye` for **Debian 11 Bullseye**
 | 
				
			||||||
 | 
					    - `buster` for **Debian 10 Buster**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    If you want access to development or pre-release versions of `rippled`, use one of the following instead of `stable`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - `unstable` - Pre-release builds ([`release` branch](https://github.com/ripple/rippled/tree/release))
 | 
				
			||||||
 | 
					    - `nightly` - Experimental/development builds ([`develop` branch](https://github.com/ripple/rippled/tree/develop))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    **Warning:** Unstable and nightly builds may be broken at any time. Do not use these builds for production servers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					5. Fetch the Ripple repository.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sudo apt -y update
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					6. Install the `rippled` software package:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sudo apt -y install rippled
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					7. Check the status of the `rippled` service:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        systemctl status rippled.service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    The `rippled` service should start automatically. If not, you can start it manually:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sudo systemctl start rippled.service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					8. Optional: allow `rippled` to bind to privileged ports.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    This allows you to serve incoming API requests on port 80 or 443. (If you want to do so, you must also update the config file's port settings.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sudo setcap 'cap_net_bind_service=+ep' /opt/ripple/bin/rippled
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## With the YUM package manager
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. Install the Ripple RPM repository:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Choose the appropriate RPM repository for the stability of releases you want:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - `stable` for the latest production release (`master` branch)
 | 
				
			||||||
 | 
					    - `unstable` for pre-release builds (`release` branch)
 | 
				
			||||||
 | 
					    - `nightly` for experimental/development builds (`develop` branch)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    *Stable*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        cat << REPOFILE | sudo tee /etc/yum.repos.d/ripple.repo
 | 
				
			||||||
 | 
					        [ripple-stable]
 | 
				
			||||||
 | 
					        name=XRP Ledger Packages
 | 
				
			||||||
 | 
					        enabled=1
 | 
				
			||||||
 | 
					        gpgcheck=0
 | 
				
			||||||
 | 
					        repo_gpgcheck=1
 | 
				
			||||||
 | 
					        baseurl=https://repos.ripple.com/repos/rippled-rpm/stable/
 | 
				
			||||||
 | 
					        gpgkey=https://repos.ripple.com/repos/rippled-rpm/stable/repodata/repomd.xml.key
 | 
				
			||||||
 | 
					        REPOFILE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    *Unstable*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        cat << REPOFILE | sudo tee /etc/yum.repos.d/ripple.repo
 | 
				
			||||||
 | 
					        [ripple-unstable]
 | 
				
			||||||
 | 
					        name=XRP Ledger Packages
 | 
				
			||||||
 | 
					        enabled=1
 | 
				
			||||||
 | 
					        gpgcheck=0
 | 
				
			||||||
 | 
					        repo_gpgcheck=1
 | 
				
			||||||
 | 
					        baseurl=https://repos.ripple.com/repos/rippled-rpm/unstable/
 | 
				
			||||||
 | 
					        gpgkey=https://repos.ripple.com/repos/rippled-rpm/unstable/repodata/repomd.xml.key
 | 
				
			||||||
 | 
					        REPOFILE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    *Nightly*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        cat << REPOFILE | sudo tee /etc/yum.repos.d/ripple.repo
 | 
				
			||||||
 | 
					        [ripple-nightly]
 | 
				
			||||||
 | 
					        name=XRP Ledger Packages
 | 
				
			||||||
 | 
					        enabled=1
 | 
				
			||||||
 | 
					        gpgcheck=0
 | 
				
			||||||
 | 
					        repo_gpgcheck=1
 | 
				
			||||||
 | 
					        baseurl=https://repos.ripple.com/repos/rippled-rpm/nightly/
 | 
				
			||||||
 | 
					        gpgkey=https://repos.ripple.com/repos/rippled-rpm/nightly/repodata/repomd.xml.key
 | 
				
			||||||
 | 
					        REPOFILE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2. Fetch the latest repo updates:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sudo yum -y update
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					3. Install the new `rippled` package:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sudo yum install -y rippled
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					4. Configure the `rippled` service to start on boot:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sudo systemctl enable rippled.service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					5. Start the `rippled` service:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sudo systemctl start rippled.service
 | 
				
			||||||
							
								
								
									
										193
									
								
								external/rocksdb/conanfile.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								external/rocksdb/conanfile.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,193 @@
 | 
				
			|||||||
 | 
					import os
 | 
				
			||||||
 | 
					import shutil
 | 
				
			||||||
 | 
					from conans import ConanFile, CMake
 | 
				
			||||||
 | 
					from conan.tools import microsoft as ms
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class RocksDB(ConanFile):
 | 
				
			||||||
 | 
					    name = 'rocksdb'
 | 
				
			||||||
 | 
					    version = '6.27.3'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    license = ('GPL-2.0-only', 'Apache-2.0')
 | 
				
			||||||
 | 
					    url = 'https://github.com/conan-io/conan-center-index'
 | 
				
			||||||
 | 
					    description = 'A library that provides an embeddable, persistent key-value store for fast storage'
 | 
				
			||||||
 | 
					    topics = ('rocksdb', 'database', 'leveldb', 'facebook', 'key-value')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    settings = 'os', 'compiler', 'build_type', 'arch'
 | 
				
			||||||
 | 
					    options = {
 | 
				
			||||||
 | 
					        'enable_sse': [False, 'sse42', 'avx2'],
 | 
				
			||||||
 | 
					        'fPIC': [True, False],
 | 
				
			||||||
 | 
					        'lite': [True, False],
 | 
				
			||||||
 | 
					        'shared': [True, False],
 | 
				
			||||||
 | 
					        'use_rtti': [True, False],
 | 
				
			||||||
 | 
					        'with_gflags': [True, False],
 | 
				
			||||||
 | 
					        'with_jemalloc': [True, False],
 | 
				
			||||||
 | 
					        'with_lz4': [True, False],
 | 
				
			||||||
 | 
					        'with_snappy': [True, False],
 | 
				
			||||||
 | 
					        'with_tbb': [True, False],
 | 
				
			||||||
 | 
					        'with_zlib': [True, False],
 | 
				
			||||||
 | 
					        'with_zstd': [True, False],
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    default_options = {
 | 
				
			||||||
 | 
					        'enable_sse': False,
 | 
				
			||||||
 | 
					        'fPIC': True,
 | 
				
			||||||
 | 
					        'lite': False,
 | 
				
			||||||
 | 
					        'shared': False,
 | 
				
			||||||
 | 
					        'use_rtti': False,
 | 
				
			||||||
 | 
					        'with_gflags': False,
 | 
				
			||||||
 | 
					        'with_jemalloc': False,
 | 
				
			||||||
 | 
					        'with_lz4': False,
 | 
				
			||||||
 | 
					        'with_snappy': False,
 | 
				
			||||||
 | 
					        'with_tbb': False,
 | 
				
			||||||
 | 
					        'with_zlib': False,
 | 
				
			||||||
 | 
					        'with_zstd': False,
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def requirements(self):
 | 
				
			||||||
 | 
					        if self.options.with_gflags:
 | 
				
			||||||
 | 
					            self.requires('gflags/2.2.2')
 | 
				
			||||||
 | 
					        if self.options.with_jemalloc:
 | 
				
			||||||
 | 
					            self.requires('jemalloc/5.2.1')
 | 
				
			||||||
 | 
					        if self.options.with_lz4:
 | 
				
			||||||
 | 
					            self.requires('lz4/1.9.3')
 | 
				
			||||||
 | 
					        if self.options.with_snappy:
 | 
				
			||||||
 | 
					            self.requires('snappy/1.1.9')
 | 
				
			||||||
 | 
					        if self.options.with_tbb:
 | 
				
			||||||
 | 
					            self.requires('onetbb/2020.3')
 | 
				
			||||||
 | 
					        if self.options.with_zlib:
 | 
				
			||||||
 | 
					            self.requires('zlib/1.2.11')
 | 
				
			||||||
 | 
					        if self.options.with_zstd:
 | 
				
			||||||
 | 
					            self.requires('zstd/1.5.2')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def config_options(self):
 | 
				
			||||||
 | 
					        if self.settings.os == 'Windows':
 | 
				
			||||||
 | 
					            del self.options.fPIC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def configure(self):
 | 
				
			||||||
 | 
					        if self.options.shared:
 | 
				
			||||||
 | 
					            del self.options.fPIC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    generators = 'cmake', 'cmake_find_package'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    scm = {
 | 
				
			||||||
 | 
					        'type': 'git',
 | 
				
			||||||
 | 
					        'url': 'https://github.com/facebook/rocksdb.git',
 | 
				
			||||||
 | 
					        'revision': 'v6.27.3',
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    exports_sources = 'thirdparty.inc'
 | 
				
			||||||
 | 
					    # For out-of-source build.
 | 
				
			||||||
 | 
					    no_copy_source = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    _cmake = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _configure_cmake(self):
 | 
				
			||||||
 | 
					        if self._cmake:
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self._cmake = CMake(self)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self._cmake.definitions['CMAKE_POSITION_INDEPENDENT_CODE'] = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self._cmake.definitions['DISABLE_STALL_NOTIF'] = False
 | 
				
			||||||
 | 
					        self._cmake.definitions['FAIL_ON_WARNINGS'] = False
 | 
				
			||||||
 | 
					        self._cmake.definitions['OPTDBG'] = True
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_TESTS'] = False
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_TOOLS'] = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_GFLAGS'] = self.options.with_gflags
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_JEMALLOC'] = self.options.with_jemalloc
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_LZ4'] = self.options.with_lz4
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_SNAPPY'] = self.options.with_snappy
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_TBB'] = self.options.with_tbb
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_ZLIB'] = self.options.with_zlib
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_ZSTD'] = self.options.with_zstd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self._cmake.definitions['USE_RTTI'] = self.options.use_rtti
 | 
				
			||||||
 | 
					        self._cmake.definitions['ROCKSDB_LITE'] = self.options.lite
 | 
				
			||||||
 | 
					        self._cmake.definitions['ROCKSDB_INSTALL_ON_WINDOWS'] = (
 | 
				
			||||||
 | 
					            self.settings.os == 'Windows'
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if not self.options.enable_sse:
 | 
				
			||||||
 | 
					            self._cmake.definitions['PORTABLE'] = True
 | 
				
			||||||
 | 
					            self._cmake.definitions['FORCE_SSE42'] = False
 | 
				
			||||||
 | 
					        elif self.options.enable_sse == 'sse42':
 | 
				
			||||||
 | 
					            self._cmake.definitions['PORTABLE'] = True
 | 
				
			||||||
 | 
					            self._cmake.definitions['FORCE_SSE42'] = True
 | 
				
			||||||
 | 
					        elif self.options.enable_sse == 'avx2':
 | 
				
			||||||
 | 
					            self._cmake.definitions['PORTABLE'] = False
 | 
				
			||||||
 | 
					            self._cmake.definitions['FORCE_SSE42'] = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_ASAN'] = False
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_BZ2'] = False
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_JNI'] = False
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_LIBRADOS'] = False
 | 
				
			||||||
 | 
					        if ms.is_msvc(self):
 | 
				
			||||||
 | 
					            self._cmake.definitions['WITH_MD_LIBRARY'] = (
 | 
				
			||||||
 | 
					                ms.msvc_runtime_flag(self).startswith('MD')
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            self._cmake.definitions['WITH_RUNTIME_DEBUG'] = (
 | 
				
			||||||
 | 
					                ms.msvc_runtime_flag(self).endswith('d')
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_NUMA'] = False
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_TSAN'] = False
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_UBSAN'] = False
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_WINDOWS_UTF8_FILENAMES'] = False
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_XPRESS'] = False
 | 
				
			||||||
 | 
					        self._cmake.definitions['WITH_FALLOCATE'] = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def build(self):
 | 
				
			||||||
 | 
					        if ms.is_msvc(self):
 | 
				
			||||||
 | 
					            file = os.path.join(
 | 
				
			||||||
 | 
					                self.recipe_folder, '..', 'export_source', 'thirdparty.inc'
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            shutil.copy(file, self.build_folder)
 | 
				
			||||||
 | 
					        self._configure_cmake()
 | 
				
			||||||
 | 
					        self._cmake.configure()
 | 
				
			||||||
 | 
					        self._cmake.build()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def package(self):
 | 
				
			||||||
 | 
					        self._configure_cmake()
 | 
				
			||||||
 | 
					        self._cmake.install()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def package_info(self):
 | 
				
			||||||
 | 
					        self.cpp_info.filenames['cmake_find_package'] = 'RocksDB'
 | 
				
			||||||
 | 
					        self.cpp_info.filenames['cmake_find_package_multi'] = 'RocksDB'
 | 
				
			||||||
 | 
					        self.cpp_info.set_property('cmake_file_name', 'RocksDB')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.cpp_info.names['cmake_find_package'] = 'RocksDB'
 | 
				
			||||||
 | 
					        self.cpp_info.names['cmake_find_package_multi'] = 'RocksDB'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.cpp_info.components['librocksdb'].names['cmake_find_package'] = 'rocksdb'
 | 
				
			||||||
 | 
					        self.cpp_info.components['librocksdb'].names['cmake_find_package_multi'] = 'rocksdb'
 | 
				
			||||||
 | 
					        self.cpp_info.components['librocksdb'].set_property(
 | 
				
			||||||
 | 
					            'cmake_target_name', 'RocksDB::rocksdb'
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.cpp_info.components['librocksdb'].libs = ['rocksdb']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if self.settings.os == "Windows":
 | 
				
			||||||
 | 
					            self.cpp_info.components["librocksdb"].system_libs = ["shlwapi", "rpcrt4"]
 | 
				
			||||||
 | 
					            if self.options.shared:
 | 
				
			||||||
 | 
					                self.cpp_info.components["librocksdb"].defines = ["ROCKSDB_DLL"]
 | 
				
			||||||
 | 
					        elif self.settings.os in ["Linux", "FreeBSD"]:
 | 
				
			||||||
 | 
					            self.cpp_info.components["librocksdb"].system_libs = ["pthread", "m"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if self.options.lite:
 | 
				
			||||||
 | 
					            self.cpp_info.components["librocksdb"].defines.append("ROCKSDB_LITE")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if self.options.with_gflags:
 | 
				
			||||||
 | 
					            self.cpp_info.components["librocksdb"].requires.append("gflags::gflags")
 | 
				
			||||||
 | 
					        if self.options.with_jemalloc:
 | 
				
			||||||
 | 
					            self.cpp_info.components["librocksdb"].requires.append("jemalloc::jemalloc")
 | 
				
			||||||
 | 
					        if self.options.with_lz4:
 | 
				
			||||||
 | 
					            self.cpp_info.components["librocksdb"].requires.append("lz4::lz4")
 | 
				
			||||||
 | 
					        if self.options.with_snappy:
 | 
				
			||||||
 | 
					            self.cpp_info.components["librocksdb"].requires.append("snappy::snappy")
 | 
				
			||||||
 | 
					        if self.options.with_tbb:
 | 
				
			||||||
 | 
					            self.cpp_info.components["librocksdb"].requires.append("onetbb::onetbb")
 | 
				
			||||||
 | 
					        if self.options.with_zlib:
 | 
				
			||||||
 | 
					            self.cpp_info.components["librocksdb"].requires.append("zlib::zlib")
 | 
				
			||||||
 | 
					        if self.options.with_zstd:
 | 
				
			||||||
 | 
					            self.cpp_info.components["librocksdb"].requires.append("zstd::zstd")
 | 
				
			||||||
							
								
								
									
										62
									
								
								external/rocksdb/thirdparty.inc
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								external/rocksdb/thirdparty.inc
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					if(WITH_GFLAGS)
 | 
				
			||||||
 | 
					  # Config with namespace available since gflags 2.2.2
 | 
				
			||||||
 | 
					  find_package(gflags REQUIRED)
 | 
				
			||||||
 | 
					  set(GFLAGS_LIB gflags::gflags)
 | 
				
			||||||
 | 
					  list(APPEND THIRDPARTY_LIBS ${GFLAGS_LIB})
 | 
				
			||||||
 | 
					  add_definitions(-DGFLAGS=1)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(WITH_SNAPPY)
 | 
				
			||||||
 | 
					  find_package(Snappy REQUIRED)
 | 
				
			||||||
 | 
					  add_definitions(-DSNAPPY)
 | 
				
			||||||
 | 
					  list(APPEND THIRDPARTY_LIBS Snappy::snappy)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(WITH_LZ4)
 | 
				
			||||||
 | 
					  find_package(lz4 REQUIRED)
 | 
				
			||||||
 | 
					  add_definitions(-DLZ4)
 | 
				
			||||||
 | 
					  list(APPEND THIRDPARTY_LIBS lz4::lz4)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(WITH_ZLIB)
 | 
				
			||||||
 | 
					  find_package(ZLIB REQUIRED)
 | 
				
			||||||
 | 
					  add_definitions(-DZLIB)
 | 
				
			||||||
 | 
					  list(APPEND THIRDPARTY_LIBS ZLIB::ZLIB)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					option(WITH_BZ2 "build with bzip2" OFF)
 | 
				
			||||||
 | 
					if(WITH_BZ2)
 | 
				
			||||||
 | 
					  find_package(BZip2 REQUIRED)
 | 
				
			||||||
 | 
					  add_definitions(-DBZIP2)
 | 
				
			||||||
 | 
					  list(APPEND THIRDPARTY_LIBS BZip2::BZip2)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(WITH_ZSTD)
 | 
				
			||||||
 | 
					  find_package(zstd REQUIRED)
 | 
				
			||||||
 | 
					  add_definitions(-DZSTD)
 | 
				
			||||||
 | 
					  list(APPEND THIRDPARTY_LIBS zstd::zstd)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ================================================== XPRESS ==================================================
 | 
				
			||||||
 | 
					# This makes use of built-in Windows API, no additional includes, links to a system lib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(WITH_XPRESS)
 | 
				
			||||||
 | 
					  message(STATUS "XPRESS is enabled")
 | 
				
			||||||
 | 
					  add_definitions(-DXPRESS)
 | 
				
			||||||
 | 
					  # We are using the implementation provided by the system
 | 
				
			||||||
 | 
					  list(APPEND SYSTEM_LIBS Cabinet.lib)
 | 
				
			||||||
 | 
					else()
 | 
				
			||||||
 | 
					  message(STATUS "XPRESS is disabled")
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ================================================== JEMALLOC ==================================================
 | 
				
			||||||
 | 
					if(WITH_JEMALLOC)
 | 
				
			||||||
 | 
					  message(STATUS "JEMALLOC library is enabled")
 | 
				
			||||||
 | 
					  add_definitions(-DROCKSDB_JEMALLOC -DJEMALLOC_EXPORT= -DJEMALLOC_NO_RENAME)
 | 
				
			||||||
 | 
					  list(APPEND THIRDPARTY_LIBS jemalloc::jemalloc)
 | 
				
			||||||
 | 
					  set(ARTIFACT_SUFFIX "_je")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					else ()
 | 
				
			||||||
 | 
					  set(ARTIFACT_SUFFIX "")
 | 
				
			||||||
 | 
					  message(STATUS "JEMALLOC library is disabled")
 | 
				
			||||||
 | 
					endif ()
 | 
				
			||||||
							
								
								
									
										40
									
								
								external/snappy/conandata.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								external/snappy/conandata.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					sources:
 | 
				
			||||||
 | 
					  "1.1.10":
 | 
				
			||||||
 | 
					    url: "https://github.com/google/snappy/archive/1.1.10.tar.gz"
 | 
				
			||||||
 | 
					    sha256: "49d831bffcc5f3d01482340fe5af59852ca2fe76c3e05df0e67203ebbe0f1d90"
 | 
				
			||||||
 | 
					  "1.1.9":
 | 
				
			||||||
 | 
					    url: "https://github.com/google/snappy/archive/1.1.9.tar.gz"
 | 
				
			||||||
 | 
					    sha256: "75c1fbb3d618dd3a0483bff0e26d0a92b495bbe5059c8b4f1c962b478b6e06e7"
 | 
				
			||||||
 | 
					  "1.1.8":
 | 
				
			||||||
 | 
					    url: "https://github.com/google/snappy/archive/1.1.8.tar.gz"
 | 
				
			||||||
 | 
					    sha256: "16b677f07832a612b0836178db7f374e414f94657c138e6993cbfc5dcc58651f"
 | 
				
			||||||
 | 
					  "1.1.7":
 | 
				
			||||||
 | 
					    url: "https://github.com/google/snappy/archive/1.1.7.tar.gz"
 | 
				
			||||||
 | 
					    sha256: "3dfa02e873ff51a11ee02b9ca391807f0c8ea0529a4924afa645fbf97163f9d4"
 | 
				
			||||||
 | 
					patches:
 | 
				
			||||||
 | 
					  "1.1.10":
 | 
				
			||||||
 | 
					    - patch_file: "patches/1.1.10-0001-fix-inlining-failure.patch"
 | 
				
			||||||
 | 
					      patch_description: "disable inlining for compilation error"
 | 
				
			||||||
 | 
					      patch_type: "portability"
 | 
				
			||||||
 | 
					    - patch_file: "patches/1.1.9-0002-no-Werror.patch"
 | 
				
			||||||
 | 
					      patch_description: "disable 'warning as error' options"
 | 
				
			||||||
 | 
					      patch_type: "portability"
 | 
				
			||||||
 | 
					    - patch_file: "patches/1.1.10-0003-fix-clobber-list-older-llvm.patch"
 | 
				
			||||||
 | 
					      patch_description: "disable inline asm on apple-clang"
 | 
				
			||||||
 | 
					      patch_type: "portability"
 | 
				
			||||||
 | 
					    - patch_file: "patches/1.1.9-0004-rtti-by-default.patch"
 | 
				
			||||||
 | 
					      patch_description: "remove 'disable rtti'"
 | 
				
			||||||
 | 
					      patch_type: "conan"
 | 
				
			||||||
 | 
					  "1.1.9":
 | 
				
			||||||
 | 
					    - patch_file: "patches/1.1.9-0001-fix-inlining-failure.patch"
 | 
				
			||||||
 | 
					      patch_description: "disable inlining for compilation error"
 | 
				
			||||||
 | 
					      patch_type: "portability"
 | 
				
			||||||
 | 
					    - patch_file: "patches/1.1.9-0002-no-Werror.patch"
 | 
				
			||||||
 | 
					      patch_description: "disable 'warning as error' options"
 | 
				
			||||||
 | 
					      patch_type: "portability"
 | 
				
			||||||
 | 
					    - patch_file: "patches/1.1.9-0003-fix-clobber-list-older-llvm.patch"
 | 
				
			||||||
 | 
					      patch_description: "disable inline asm on apple-clang"
 | 
				
			||||||
 | 
					      patch_type: "portability"
 | 
				
			||||||
 | 
					    - patch_file: "patches/1.1.9-0004-rtti-by-default.patch"
 | 
				
			||||||
 | 
					      patch_description: "remove 'disable rtti'"
 | 
				
			||||||
 | 
					      patch_type: "conan"
 | 
				
			||||||
							
								
								
									
										89
									
								
								external/snappy/conanfile.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								external/snappy/conanfile.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					from conan import ConanFile
 | 
				
			||||||
 | 
					from conan.tools.build import check_min_cppstd
 | 
				
			||||||
 | 
					from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout
 | 
				
			||||||
 | 
					from conan.tools.files import apply_conandata_patches, copy, export_conandata_patches, get, rmdir
 | 
				
			||||||
 | 
					from conan.tools.scm import Version
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					required_conan_version = ">=1.54.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SnappyConan(ConanFile):
 | 
				
			||||||
 | 
					    name = "snappy"
 | 
				
			||||||
 | 
					    description = "A fast compressor/decompressor"
 | 
				
			||||||
 | 
					    topics = ("google", "compressor", "decompressor")
 | 
				
			||||||
 | 
					    url = "https://github.com/conan-io/conan-center-index"
 | 
				
			||||||
 | 
					    homepage = "https://github.com/google/snappy"
 | 
				
			||||||
 | 
					    license = "BSD-3-Clause"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    package_type = "library"
 | 
				
			||||||
 | 
					    settings = "os", "arch", "compiler", "build_type"
 | 
				
			||||||
 | 
					    options = {
 | 
				
			||||||
 | 
					        "shared": [True, False],
 | 
				
			||||||
 | 
					        "fPIC": [True, False],
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    default_options = {
 | 
				
			||||||
 | 
					        "shared": False,
 | 
				
			||||||
 | 
					        "fPIC": True,
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def export_sources(self):
 | 
				
			||||||
 | 
					        export_conandata_patches(self)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def config_options(self):
 | 
				
			||||||
 | 
					        if self.settings.os == 'Windows':
 | 
				
			||||||
 | 
					            del self.options.fPIC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def configure(self):
 | 
				
			||||||
 | 
					        if self.options.shared:
 | 
				
			||||||
 | 
					            self.options.rm_safe("fPIC")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def layout(self):
 | 
				
			||||||
 | 
					        cmake_layout(self, src_folder="src")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def validate(self):
 | 
				
			||||||
 | 
					        if self.settings.compiler.get_safe("cppstd"):
 | 
				
			||||||
 | 
					            check_min_cppstd(self, 11)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def source(self):
 | 
				
			||||||
 | 
					        get(self, **self.conan_data["sources"][self.version], strip_root=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def generate(self):
 | 
				
			||||||
 | 
					        tc = CMakeToolchain(self)
 | 
				
			||||||
 | 
					        tc.variables["SNAPPY_BUILD_TESTS"] = False
 | 
				
			||||||
 | 
					        if Version(self.version) >= "1.1.8":
 | 
				
			||||||
 | 
					            tc.variables["SNAPPY_FUZZING_BUILD"] = False
 | 
				
			||||||
 | 
					            tc.variables["SNAPPY_REQUIRE_AVX"] = False
 | 
				
			||||||
 | 
					            tc.variables["SNAPPY_REQUIRE_AVX2"] = False
 | 
				
			||||||
 | 
					            tc.variables["SNAPPY_INSTALL"] = True
 | 
				
			||||||
 | 
					        if Version(self.version) >= "1.1.9":
 | 
				
			||||||
 | 
					            tc.variables["SNAPPY_BUILD_BENCHMARKS"] = False
 | 
				
			||||||
 | 
					        tc.generate()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def build(self):
 | 
				
			||||||
 | 
					        apply_conandata_patches(self)
 | 
				
			||||||
 | 
					        cmake = CMake(self)
 | 
				
			||||||
 | 
					        cmake.configure()
 | 
				
			||||||
 | 
					        cmake.build()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def package(self):
 | 
				
			||||||
 | 
					        copy(self, "COPYING", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses"))
 | 
				
			||||||
 | 
					        cmake = CMake(self)
 | 
				
			||||||
 | 
					        cmake.install()
 | 
				
			||||||
 | 
					        rmdir(self, os.path.join(self.package_folder, "lib", "cmake"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def package_info(self):
 | 
				
			||||||
 | 
					        self.cpp_info.set_property("cmake_file_name", "Snappy")
 | 
				
			||||||
 | 
					        self.cpp_info.set_property("cmake_target_name", "Snappy::snappy")
 | 
				
			||||||
 | 
					        # TODO: back to global scope in conan v2 once cmake_find_package* generators removed
 | 
				
			||||||
 | 
					        self.cpp_info.components["snappylib"].libs = ["snappy"]
 | 
				
			||||||
 | 
					        if not self.options.shared:
 | 
				
			||||||
 | 
					            if self.settings.os in ["Linux", "FreeBSD"]:
 | 
				
			||||||
 | 
					                self.cpp_info.components["snappylib"].system_libs.append("m")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # TODO: to remove in conan v2 once cmake_find_package* generators removed
 | 
				
			||||||
 | 
					        self.cpp_info.names["cmake_find_package"] = "Snappy"
 | 
				
			||||||
 | 
					        self.cpp_info.names["cmake_find_package_multi"] = "Snappy"
 | 
				
			||||||
 | 
					        self.cpp_info.components["snappylib"].names["cmake_find_package"] = "snappy"
 | 
				
			||||||
 | 
					        self.cpp_info.components["snappylib"].names["cmake_find_package_multi"] = "snappy"
 | 
				
			||||||
 | 
					        self.cpp_info.components["snappylib"].set_property("cmake_target_name", "Snappy::snappy")
 | 
				
			||||||
							
								
								
									
										13
									
								
								external/snappy/patches/1.1.10-0001-fix-inlining-failure.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								external/snappy/patches/1.1.10-0001-fix-inlining-failure.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					diff --git a/snappy-stubs-internal.h b/snappy-stubs-internal.h
 | 
				
			||||||
 | 
					index 1548ed7..3b4a9f3 100644
 | 
				
			||||||
 | 
					--- a/snappy-stubs-internal.h
 | 
				
			||||||
 | 
					+++ b/snappy-stubs-internal.h
 | 
				
			||||||
 | 
					@@ -100,7 +100,7 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 // Inlining hints.
 | 
				
			||||||
 | 
					 #if HAVE_ATTRIBUTE_ALWAYS_INLINE
 | 
				
			||||||
 | 
					-#define SNAPPY_ATTRIBUTE_ALWAYS_INLINE __attribute__((always_inline))
 | 
				
			||||||
 | 
					+#define SNAPPY_ATTRIBUTE_ALWAYS_INLINE
 | 
				
			||||||
 | 
					 #else
 | 
				
			||||||
 | 
					 #define SNAPPY_ATTRIBUTE_ALWAYS_INLINE
 | 
				
			||||||
 | 
					 #endif  // HAVE_ATTRIBUTE_ALWAYS_INLINE
 | 
				
			||||||
							
								
								
									
										13
									
								
								external/snappy/patches/1.1.10-0003-fix-clobber-list-older-llvm.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								external/snappy/patches/1.1.10-0003-fix-clobber-list-older-llvm.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					diff --git a/snappy.cc b/snappy.cc
 | 
				
			||||||
 | 
					index d414718..e4efb59 100644
 | 
				
			||||||
 | 
					--- a/snappy.cc
 | 
				
			||||||
 | 
					+++ b/snappy.cc
 | 
				
			||||||
 | 
					@@ -1132,7 +1132,7 @@ inline size_t AdvanceToNextTagX86Optimized(const uint8_t** ip_p, size_t* tag) {
 | 
				
			||||||
 | 
					   size_t literal_len = *tag >> 2;
 | 
				
			||||||
 | 
					   size_t tag_type = *tag;
 | 
				
			||||||
 | 
					   bool is_literal;
 | 
				
			||||||
 | 
					-#if defined(__GCC_ASM_FLAG_OUTPUTS__) && defined(__x86_64__)
 | 
				
			||||||
 | 
					+#if defined(__GCC_ASM_FLAG_OUTPUTS__) && defined(__x86_64__) && ( (!defined(__clang__) && !defined(__APPLE__)) || (!defined(__APPLE__) && defined(__clang__) && (__clang_major__ >= 9)) || (defined(__APPLE__) && defined(__clang__) && (__clang_major__ > 11)) )
 | 
				
			||||||
 | 
					   // TODO clang misses the fact that the (c & 3) already correctly
 | 
				
			||||||
 | 
					   // sets the zero flag.
 | 
				
			||||||
 | 
					   asm("and $3, %k[tag_type]\n\t"
 | 
				
			||||||
							
								
								
									
										14
									
								
								external/snappy/patches/1.1.9-0001-fix-inlining-failure.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								external/snappy/patches/1.1.9-0001-fix-inlining-failure.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					Fixes the following error:
 | 
				
			||||||
 | 
					error: inlining failed in call to ‘always_inline’ ‘size_t snappy::AdvanceToNextTag(const uint8_t**, size_t*)’: function body can be overwritten at link time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--- snappy-stubs-internal.h
 | 
				
			||||||
 | 
					+++ snappy-stubs-internal.h
 | 
				
			||||||
 | 
					@@ -100,7 +100,7 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 // Inlining hints.
 | 
				
			||||||
 | 
					 #ifdef HAVE_ATTRIBUTE_ALWAYS_INLINE
 | 
				
			||||||
 | 
					-#define SNAPPY_ATTRIBUTE_ALWAYS_INLINE __attribute__((always_inline))
 | 
				
			||||||
 | 
					+#define SNAPPY_ATTRIBUTE_ALWAYS_INLINE
 | 
				
			||||||
 | 
					 #else
 | 
				
			||||||
 | 
					 #define SNAPPY_ATTRIBUTE_ALWAYS_INLINE
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
							
								
								
									
										12
									
								
								external/snappy/patches/1.1.9-0002-no-Werror.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								external/snappy/patches/1.1.9-0002-no-Werror.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					--- CMakeLists.txt
 | 
				
			||||||
 | 
					+++ CMakeLists.txt
 | 
				
			||||||
 | 
					@@ -69,7 +69,7 @@
 | 
				
			||||||
 | 
					-  # Use -Werror for clang only.
 | 
				
			||||||
 | 
					+if(0)
 | 
				
			||||||
 | 
					   if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
 | 
				
			||||||
 | 
					     if(NOT CMAKE_CXX_FLAGS MATCHES "-Werror")
 | 
				
			||||||
 | 
					       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
 | 
				
			||||||
 | 
					     endif(NOT CMAKE_CXX_FLAGS MATCHES "-Werror")
 | 
				
			||||||
 | 
					   endif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					+endif()
 | 
				
			||||||
							
								
								
									
										12
									
								
								external/snappy/patches/1.1.9-0003-fix-clobber-list-older-llvm.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								external/snappy/patches/1.1.9-0003-fix-clobber-list-older-llvm.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					asm clobbers do not work for clang < 9 and apple-clang < 11 (found by SpaceIm)
 | 
				
			||||||
 | 
					--- snappy.cc
 | 
				
			||||||
 | 
					+++ snappy.cc
 | 
				
			||||||
 | 
					@@ -1026,7 +1026,7 @@
 | 
				
			||||||
 | 
					   size_t literal_len = *tag >> 2;
 | 
				
			||||||
 | 
					   size_t tag_type = *tag;
 | 
				
			||||||
 | 
					   bool is_literal;
 | 
				
			||||||
 | 
					-#if defined(__GNUC__) && defined(__x86_64__)
 | 
				
			||||||
 | 
					+#if defined(__GNUC__) && defined(__x86_64__) && ( (!defined(__clang__) && !defined(__APPLE__)) || (!defined(__APPLE__) && defined(__clang__) && (__clang_major__ >= 9)) || (defined(__APPLE__) && defined(__clang__) && (__clang_major__ > 11)) )
 | 
				
			||||||
 | 
					   // TODO clang misses the fact that the (c & 3) already correctly
 | 
				
			||||||
 | 
					   // sets the zero flag.
 | 
				
			||||||
 | 
					   asm("and $3, %k[tag_type]\n\t"
 | 
				
			||||||
							
								
								
									
										20
									
								
								external/snappy/patches/1.1.9-0004-rtti-by-default.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								external/snappy/patches/1.1.9-0004-rtti-by-default.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					--- a/CMakeLists.txt
 | 
				
			||||||
 | 
					+++ b/CMakeLists.txt
 | 
				
			||||||
 | 
					@@ -53,8 +53,6 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
 | 
				
			||||||
 | 
					   add_definitions(-D_HAS_EXCEPTIONS=0)
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   # Disable RTTI.
 | 
				
			||||||
 | 
					-  string(REGEX REPLACE "/GR" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
 | 
				
			||||||
 | 
					-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR-")
 | 
				
			||||||
 | 
					 else(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
 | 
				
			||||||
 | 
					   # Use -Wall for clang and gcc.
 | 
				
			||||||
 | 
					   if(NOT CMAKE_CXX_FLAGS MATCHES "-Wall")
 | 
				
			||||||
 | 
					@@ -78,8 +76,6 @@ endif()
 | 
				
			||||||
 | 
					   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					   # Disable RTTI.
 | 
				
			||||||
 | 
					-  string(REGEX REPLACE "-frtti" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
 | 
				
			||||||
 | 
					-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
 | 
				
			||||||
 | 
					 endif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 # BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to make
 | 
				
			||||||
							
								
								
									
										12
									
								
								external/soci/conandata.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								external/soci/conandata.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					sources:
 | 
				
			||||||
 | 
					  "4.0.3":
 | 
				
			||||||
 | 
					    url: "https://github.com/SOCI/soci/archive/v4.0.3.tar.gz"
 | 
				
			||||||
 | 
					    sha256: "4b1ff9c8545c5d802fbe06ee6cd2886630e5c03bf740e269bb625b45cf934928"
 | 
				
			||||||
 | 
					patches:
 | 
				
			||||||
 | 
					  "4.0.3":
 | 
				
			||||||
 | 
					    - patch_file: "patches/0001-Remove-hardcoded-INSTALL_NAME_DIR-for-relocatable-li.patch"
 | 
				
			||||||
 | 
					      patch_description: "Generate relocatable libraries on MacOS"
 | 
				
			||||||
 | 
					      patch_type: "portability"
 | 
				
			||||||
 | 
					    - patch_file: "patches/0002-Fix-soci_backend.patch"
 | 
				
			||||||
 | 
					      patch_description: "Fix variable names for dependencies"
 | 
				
			||||||
 | 
					      patch_type: "conan"
 | 
				
			||||||
							
								
								
									
										212
									
								
								external/soci/conanfile.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										212
									
								
								external/soci/conanfile.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,212 @@
 | 
				
			|||||||
 | 
					from conan import ConanFile
 | 
				
			||||||
 | 
					from conan.tools.build import check_min_cppstd
 | 
				
			||||||
 | 
					from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout
 | 
				
			||||||
 | 
					from conan.tools.files import apply_conandata_patches, copy, export_conandata_patches, get, rmdir
 | 
				
			||||||
 | 
					from conan.tools.microsoft import is_msvc
 | 
				
			||||||
 | 
					from conan.tools.scm import Version
 | 
				
			||||||
 | 
					from conan.errors import ConanInvalidConfiguration
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					required_conan_version = ">=1.55.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SociConan(ConanFile):
 | 
				
			||||||
 | 
					    name = "soci"
 | 
				
			||||||
 | 
					    homepage = "https://github.com/SOCI/soci"
 | 
				
			||||||
 | 
					    url = "https://github.com/conan-io/conan-center-index"
 | 
				
			||||||
 | 
					    description = "The C++ Database Access Library "
 | 
				
			||||||
 | 
					    topics = ("mysql", "odbc", "postgresql", "sqlite3")
 | 
				
			||||||
 | 
					    license = "BSL-1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    settings = "os", "arch", "compiler", "build_type"
 | 
				
			||||||
 | 
					    options = {
 | 
				
			||||||
 | 
					        "shared":           [True, False],
 | 
				
			||||||
 | 
					        "fPIC":             [True, False],
 | 
				
			||||||
 | 
					        "empty":            [True, False],
 | 
				
			||||||
 | 
					        "with_sqlite3":     [True, False],
 | 
				
			||||||
 | 
					        "with_db2":         [True, False],
 | 
				
			||||||
 | 
					        "with_odbc":        [True, False],
 | 
				
			||||||
 | 
					        "with_oracle":      [True, False],
 | 
				
			||||||
 | 
					        "with_firebird":    [True, False],
 | 
				
			||||||
 | 
					        "with_mysql":       [True, False],
 | 
				
			||||||
 | 
					        "with_postgresql":  [True, False],
 | 
				
			||||||
 | 
					        "with_boost":       [True, False],
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    default_options = {
 | 
				
			||||||
 | 
					        "shared":           False,
 | 
				
			||||||
 | 
					        "fPIC":             True,
 | 
				
			||||||
 | 
					        "empty":            False,
 | 
				
			||||||
 | 
					        "with_sqlite3":     False,
 | 
				
			||||||
 | 
					        "with_db2":         False,
 | 
				
			||||||
 | 
					        "with_odbc":        False,
 | 
				
			||||||
 | 
					        "with_oracle":      False,
 | 
				
			||||||
 | 
					        "with_firebird":    False,
 | 
				
			||||||
 | 
					        "with_mysql":       False,
 | 
				
			||||||
 | 
					        "with_postgresql":  False,
 | 
				
			||||||
 | 
					        "with_boost":       False,
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def export_sources(self):
 | 
				
			||||||
 | 
					        export_conandata_patches(self)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def layout(self):
 | 
				
			||||||
 | 
					        cmake_layout(self, src_folder="src")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def config_options(self):
 | 
				
			||||||
 | 
					        if self.settings.os == "Windows":
 | 
				
			||||||
 | 
					            self.options.rm_safe("fPIC")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def configure(self):
 | 
				
			||||||
 | 
					        if self.options.shared:
 | 
				
			||||||
 | 
					            self.options.rm_safe("fPIC")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def requirements(self):
 | 
				
			||||||
 | 
					        if self.options.with_sqlite3:
 | 
				
			||||||
 | 
					            self.requires("sqlite3/3.41.1")
 | 
				
			||||||
 | 
					        if self.options.with_odbc and self.settings.os != "Windows":
 | 
				
			||||||
 | 
					            self.requires("odbc/2.3.11")
 | 
				
			||||||
 | 
					        if self.options.with_mysql:
 | 
				
			||||||
 | 
					            self.requires("libmysqlclient/8.0.31")
 | 
				
			||||||
 | 
					        if self.options.with_postgresql:
 | 
				
			||||||
 | 
					            self.requires("libpq/14.7")
 | 
				
			||||||
 | 
					        if self.options.with_boost:
 | 
				
			||||||
 | 
					            self.requires("boost/1.81.0")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @property
 | 
				
			||||||
 | 
					    def _minimum_compilers_version(self):
 | 
				
			||||||
 | 
					        return {
 | 
				
			||||||
 | 
					            "Visual Studio": "14",
 | 
				
			||||||
 | 
					            "gcc": "4.8",
 | 
				
			||||||
 | 
					            "clang": "3.8",
 | 
				
			||||||
 | 
					            "apple-clang": "8.0"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def validate(self):
 | 
				
			||||||
 | 
					        if self.settings.compiler.get_safe("cppstd"):
 | 
				
			||||||
 | 
					            check_min_cppstd(self, 11)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        compiler = str(self.settings.compiler)
 | 
				
			||||||
 | 
					        compiler_version = Version(self.settings.compiler.version.value)
 | 
				
			||||||
 | 
					        if compiler not in self._minimum_compilers_version:
 | 
				
			||||||
 | 
					            self.output.warning("{} recipe lacks information about the {} compiler support.".format(self.name, self.settings.compiler))
 | 
				
			||||||
 | 
					        elif compiler_version < self._minimum_compilers_version[compiler]:
 | 
				
			||||||
 | 
					            raise ConanInvalidConfiguration("{} requires a {} version >= {}".format(self.name, compiler, compiler_version))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        prefix  = "Dependencies for"
 | 
				
			||||||
 | 
					        message = "not configured in this conan package."
 | 
				
			||||||
 | 
					        if self.options.with_db2:
 | 
				
			||||||
 | 
					            # self.requires("db2/0.0.0") # TODO add support for db2
 | 
				
			||||||
 | 
					            raise ConanInvalidConfiguration("{} DB2 {} ".format(prefix, message))
 | 
				
			||||||
 | 
					        if self.options.with_oracle:
 | 
				
			||||||
 | 
					            # self.requires("oracle_db/0.0.0") # TODO add support for oracle
 | 
				
			||||||
 | 
					            raise ConanInvalidConfiguration("{} ORACLE {} ".format(prefix, message))
 | 
				
			||||||
 | 
					        if self.options.with_firebird:
 | 
				
			||||||
 | 
					            # self.requires("firebird/0.0.0") # TODO add support for firebird
 | 
				
			||||||
 | 
					            raise ConanInvalidConfiguration("{} firebird {} ".format(prefix, message))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def source(self):
 | 
				
			||||||
 | 
					        get(self, **self.conan_data["sources"][self.version], strip_root=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def generate(self):
 | 
				
			||||||
 | 
					        tc = CMakeToolchain(self)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        tc.variables["SOCI_SHARED"] = self.options.shared
 | 
				
			||||||
 | 
					        tc.variables["SOCI_STATIC"] = not self.options.shared
 | 
				
			||||||
 | 
					        tc.variables["SOCI_TESTS"] = False
 | 
				
			||||||
 | 
					        tc.variables["SOCI_CXX11"] = True
 | 
				
			||||||
 | 
					        tc.variables["SOCI_EMPTY"] = self.options.empty
 | 
				
			||||||
 | 
					        tc.variables["WITH_SQLITE3"] = self.options.with_sqlite3
 | 
				
			||||||
 | 
					        tc.variables["WITH_DB2"] = self.options.with_db2
 | 
				
			||||||
 | 
					        tc.variables["WITH_ODBC"] = self.options.with_odbc
 | 
				
			||||||
 | 
					        tc.variables["WITH_ORACLE"] = self.options.with_oracle
 | 
				
			||||||
 | 
					        tc.variables["WITH_FIREBIRD"] = self.options.with_firebird
 | 
				
			||||||
 | 
					        tc.variables["WITH_MYSQL"] = self.options.with_mysql
 | 
				
			||||||
 | 
					        tc.variables["WITH_POSTGRESQL"] = self.options.with_postgresql
 | 
				
			||||||
 | 
					        tc.variables["WITH_BOOST"] = self.options.with_boost
 | 
				
			||||||
 | 
					        tc.generate()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        deps = CMakeDeps(self)
 | 
				
			||||||
 | 
					        deps.generate()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def build(self):
 | 
				
			||||||
 | 
					        apply_conandata_patches(self)
 | 
				
			||||||
 | 
					        cmake = CMake(self)
 | 
				
			||||||
 | 
					        cmake.configure()
 | 
				
			||||||
 | 
					        cmake.build()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def package(self):
 | 
				
			||||||
 | 
					        copy(self, "LICENSE_1_0.txt", dst=os.path.join(self.package_folder, "licenses"), src=self.source_folder)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        cmake = CMake(self)
 | 
				
			||||||
 | 
					        cmake.install()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        rmdir(self, os.path.join(self.package_folder, "lib", "cmake"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def package_info(self):
 | 
				
			||||||
 | 
					        self.cpp_info.set_property("cmake_file_name", "SOCI")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        target_suffix = "" if self.options.shared else "_static"
 | 
				
			||||||
 | 
					        lib_prefix = "lib" if is_msvc(self) and not self.options.shared else ""
 | 
				
			||||||
 | 
					        version = Version(self.version)
 | 
				
			||||||
 | 
					        lib_suffix = "_{}_{}".format(version.major, version.minor) if self.settings.os == "Windows" else ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # soci_core
 | 
				
			||||||
 | 
					        self.cpp_info.components["soci_core"].set_property("cmake_target_name", "SOCI::soci_core{}".format(target_suffix))
 | 
				
			||||||
 | 
					        self.cpp_info.components["soci_core"].libs = ["{}soci_core{}".format(lib_prefix, lib_suffix)]
 | 
				
			||||||
 | 
					        if self.options.with_boost:
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_core"].requires.append("boost::boost")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # soci_empty
 | 
				
			||||||
 | 
					        if self.options.empty:
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_empty"].set_property("cmake_target_name", "SOCI::soci_empty{}".format(target_suffix))
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_empty"].libs = ["{}soci_empty{}".format(lib_prefix, lib_suffix)]
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_empty"].requires = ["soci_core"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # soci_sqlite3
 | 
				
			||||||
 | 
					        if self.options.with_sqlite3:
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_sqlite3"].set_property("cmake_target_name", "SOCI::soci_sqlite3{}".format(target_suffix))
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_sqlite3"].libs = ["{}soci_sqlite3{}".format(lib_prefix, lib_suffix)]
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_sqlite3"].requires = ["soci_core", "sqlite3::sqlite3"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # soci_odbc
 | 
				
			||||||
 | 
					        if self.options.with_odbc:
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_odbc"].set_property("cmake_target_name", "SOCI::soci_odbc{}".format(target_suffix))
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_odbc"].libs = ["{}soci_odbc{}".format(lib_prefix, lib_suffix)]
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_odbc"].requires = ["soci_core"]
 | 
				
			||||||
 | 
					            if self.settings.os == "Windows":
 | 
				
			||||||
 | 
					                self.cpp_info.components["soci_odbc"].system_libs.append("odbc32")
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                self.cpp_info.components["soci_odbc"].requires.append("odbc::odbc")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # soci_mysql
 | 
				
			||||||
 | 
					        if self.options.with_mysql:
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_mysql"].set_property("cmake_target_name", "SOCI::soci_mysql{}".format(target_suffix))
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_mysql"].libs = ["{}soci_mysql{}".format(lib_prefix, lib_suffix)]
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_mysql"].requires = ["soci_core", "libmysqlclient::libmysqlclient"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # soci_postgresql
 | 
				
			||||||
 | 
					        if self.options.with_postgresql:
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_postgresql"].set_property("cmake_target_name", "SOCI::soci_postgresql{}".format(target_suffix))
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_postgresql"].libs = ["{}soci_postgresql{}".format(lib_prefix, lib_suffix)]
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_postgresql"].requires = ["soci_core", "libpq::libpq"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # TODO: to remove in conan v2 once cmake_find_package* generators removed
 | 
				
			||||||
 | 
					        self.cpp_info.names["cmake_find_package"] = "SOCI"
 | 
				
			||||||
 | 
					        self.cpp_info.names["cmake_find_package_multi"] = "SOCI"
 | 
				
			||||||
 | 
					        self.cpp_info.components["soci_core"].names["cmake_find_package"] = "soci_core{}".format(target_suffix)
 | 
				
			||||||
 | 
					        self.cpp_info.components["soci_core"].names["cmake_find_package_multi"] = "soci_core{}".format(target_suffix)
 | 
				
			||||||
 | 
					        if self.options.empty:
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_empty"].names["cmake_find_package"] = "soci_empty{}".format(target_suffix)
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_empty"].names["cmake_find_package_multi"] = "soci_empty{}".format(target_suffix)
 | 
				
			||||||
 | 
					        if self.options.with_sqlite3:
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_sqlite3"].names["cmake_find_package"] = "soci_sqlite3{}".format(target_suffix)
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_sqlite3"].names["cmake_find_package_multi"] = "soci_sqlite3{}".format(target_suffix)
 | 
				
			||||||
 | 
					        if self.options.with_odbc:
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_odbc"].names["cmake_find_package"] = "soci_odbc{}".format(target_suffix)
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_odbc"].names["cmake_find_package_multi"] = "soci_odbc{}".format(target_suffix)
 | 
				
			||||||
 | 
					        if self.options.with_mysql:
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_mysql"].names["cmake_find_package"] = "soci_mysql{}".format(target_suffix)
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_mysql"].names["cmake_find_package_multi"] = "soci_mysql{}".format(target_suffix)
 | 
				
			||||||
 | 
					        if self.options.with_postgresql:
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_postgresql"].names["cmake_find_package"] = "soci_postgresql{}".format(target_suffix)
 | 
				
			||||||
 | 
					            self.cpp_info.components["soci_postgresql"].names["cmake_find_package_multi"] = "soci_postgresql{}".format(target_suffix)
 | 
				
			||||||
							
								
								
									
										39
									
								
								external/soci/patches/0001-Remove-hardcoded-INSTALL_NAME_DIR-for-relocatable-li.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								external/soci/patches/0001-Remove-hardcoded-INSTALL_NAME_DIR-for-relocatable-li.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					From d491bf7b5040d314ffd0c6310ba01f78ff44c85e Mon Sep 17 00:00:00 2001
 | 
				
			||||||
 | 
					From: Rasmus Thomsen <rasmus.thomsen@dampsoft.de>
 | 
				
			||||||
 | 
					Date: Fri, 14 Apr 2023 09:16:29 +0200
 | 
				
			||||||
 | 
					Subject: [PATCH] Remove hardcoded INSTALL_NAME_DIR for relocatable libraries
 | 
				
			||||||
 | 
					 on MacOS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					 cmake/SociBackend.cmake | 2 +-
 | 
				
			||||||
 | 
					 src/core/CMakeLists.txt | 1 -
 | 
				
			||||||
 | 
					 2 files changed, 1 insertion(+), 2 deletions(-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff --git a/cmake/SociBackend.cmake b/cmake/SociBackend.cmake
 | 
				
			||||||
 | 
					index 5d4ef0df..39fe1f77 100644
 | 
				
			||||||
 | 
					--- a/cmake/SociBackend.cmake
 | 
				
			||||||
 | 
					+++ b/cmake/SociBackend.cmake
 | 
				
			||||||
 | 
					@@ -171,7 +171,7 @@ macro(soci_backend NAME)
 | 
				
			||||||
 | 
					           set_target_properties(${THIS_BACKEND_TARGET}
 | 
				
			||||||
 | 
					             PROPERTIES
 | 
				
			||||||
 | 
					             SOVERSION ${${PROJECT_NAME}_SOVERSION}
 | 
				
			||||||
 | 
					-            INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}/lib)
 | 
				
			||||||
 | 
					+          )
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					           if(APPLE)
 | 
				
			||||||
 | 
					             set_target_properties(${THIS_BACKEND_TARGET}
 | 
				
			||||||
 | 
					diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
 | 
				
			||||||
 | 
					index 3e7deeae..f9eae564 100644
 | 
				
			||||||
 | 
					--- a/src/core/CMakeLists.txt
 | 
				
			||||||
 | 
					+++ b/src/core/CMakeLists.txt
 | 
				
			||||||
 | 
					@@ -59,7 +59,6 @@ if (SOCI_SHARED)
 | 
				
			||||||
 | 
					       PROPERTIES
 | 
				
			||||||
 | 
					       VERSION ${SOCI_VERSION}
 | 
				
			||||||
 | 
					       SOVERSION ${SOCI_SOVERSION}
 | 
				
			||||||
 | 
					-      INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}/lib
 | 
				
			||||||
 | 
					       CLEAN_DIRECT_OUTPUT 1)
 | 
				
			||||||
 | 
					   endif()
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-- 
 | 
				
			||||||
 | 
					2.25.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										24
									
								
								external/soci/patches/0002-Fix-soci_backend.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								external/soci/patches/0002-Fix-soci_backend.patch
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					diff --git a/cmake/SociBackend.cmake b/cmake/SociBackend.cmake
 | 
				
			||||||
 | 
					index 0a664667..3fa2ed95 100644
 | 
				
			||||||
 | 
					--- a/cmake/SociBackend.cmake
 | 
				
			||||||
 | 
					+++ b/cmake/SociBackend.cmake
 | 
				
			||||||
 | 
					@@ -31,14 +31,13 @@ macro(soci_backend_deps_found NAME DEPS SUCCESS)
 | 
				
			||||||
 | 
					     if(NOT DEPEND_FOUND)
 | 
				
			||||||
 | 
					       list(APPEND DEPS_NOT_FOUND ${dep})
 | 
				
			||||||
 | 
					     else()
 | 
				
			||||||
 | 
					-      string(TOUPPER "${dep}" DEPU)
 | 
				
			||||||
 | 
					-      if( ${DEPU}_INCLUDE_DIR )
 | 
				
			||||||
 | 
					-        list(APPEND DEPS_INCLUDE_DIRS ${${DEPU}_INCLUDE_DIR})
 | 
				
			||||||
 | 
					+      if( ${dep}_INCLUDE_DIR )
 | 
				
			||||||
 | 
					+        list(APPEND DEPS_INCLUDE_DIRS ${${dep}_INCLUDE_DIR})
 | 
				
			||||||
 | 
					       endif()
 | 
				
			||||||
 | 
					-      if( ${DEPU}_INCLUDE_DIRS )
 | 
				
			||||||
 | 
					-        list(APPEND DEPS_INCLUDE_DIRS ${${DEPU}_INCLUDE_DIRS})
 | 
				
			||||||
 | 
					+      if( ${dep}_INCLUDE_DIRS )
 | 
				
			||||||
 | 
					+        list(APPEND DEPS_INCLUDE_DIRS ${${dep}_INCLUDE_DIRS})
 | 
				
			||||||
 | 
					       endif()
 | 
				
			||||||
 | 
					-      list(APPEND DEPS_LIBRARIES ${${DEPU}_LIBRARIES})
 | 
				
			||||||
 | 
					+      list(APPEND DEPS_LIBRARIES ${${dep}_LIBRARIES})
 | 
				
			||||||
 | 
					     endif()
 | 
				
			||||||
 | 
					   endforeach()
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
							
								
								
									
										194
									
								
								external/wasmedge/conandata.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										194
									
								
								external/wasmedge/conandata.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,194 @@
 | 
				
			|||||||
 | 
					sources:
 | 
				
			||||||
 | 
					  "0.13.5":
 | 
				
			||||||
 | 
					    Windows:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        Visual Studio:
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.13.5/WasmEdge-0.13.5-windows.zip"
 | 
				
			||||||
 | 
					            sha256: "db533289ba26ec557b5193593c9ed03db75be3bc7aa737e2caa5b56b8eef888a"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.13.5/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					    Linux:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.13.5/WasmEdge-0.13.5-manylinux2014_x86_64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "3686e0226871bf17b62ec57e1c15778c2947834b90af0dfad14f2e0202bf9284"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.13.5/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					      "armv8":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.13.5/WasmEdge-0.13.5-manylinux2014_aarch64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "472de88e0257c539c120b33fdd1805e1e95063121acc2df1d5626e4676b93529"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.11.1/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					    Macos:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.13.5/WasmEdge-0.13.5-darwin_x86_64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "b7fdfaf59805951241f47690917b501ddfa06d9b6f7e0262e44e784efe4a7b33"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.13.5/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					      "armv8":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.13.5/WasmEdge-0.13.5-darwin_arm64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "acc93721210294ced0887352f360e42e46dcc05332e6dd78c1452fb3a35d5255"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.13.5/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					    Android:
 | 
				
			||||||
 | 
					      "armv8":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.13.5/WasmEdge-0.13.5-android_aarch64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "59a0d68a0c7368b51cc65cb5a44a68037d79fd449883ef42792178d57c8784a8"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.13.5/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					  "0.11.2":
 | 
				
			||||||
 | 
					    Windows:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        Visual Studio:
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.11.2/WasmEdge-0.11.2-windows.zip"
 | 
				
			||||||
 | 
					            sha256: "ca49b98c0cf5f187e08c3ba71afc8d71365fde696f10b4219379a4a4d1a91e6d"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.11.2/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					    Linux:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.11.2/WasmEdge-0.11.2-manylinux2014_x86_64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "784bf1eb25928e2cf02aa88e9372388fad682b4a188485da3cd9162caeedf143"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.11.2/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					      "armv8":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.11.2/WasmEdge-0.11.2-manylinux2014_aarch64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "a2766a4c1edbaea298a30e5431a4e795003a10d8398a933d923f23d4eb4fa5d1"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.11.1/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					    Macos:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.11.2/WasmEdge-0.11.2-darwin_x86_64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "aedec53f29b1e0b657e46e67dba3e2f32a2924f4d9136e60073ea1aba3073e70"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.11.2/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					      "armv8":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.11.2/WasmEdge-0.11.2-darwin_arm64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "fe391df90e1eee69cf1e976f5ddf60c20f29b651710aaa4fc03e2ab4fe52c0d3"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.11.2/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					    Android:
 | 
				
			||||||
 | 
					      "armv8":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.11.2/WasmEdge-0.11.2-android_aarch64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "69e308f5927c753b2bb5639569d10219b60598174d8b304bdf310093fd7b2464"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.11.2/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					  "0.11.1":
 | 
				
			||||||
 | 
					    Windows:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        Visual Studio:
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.11.1/WasmEdge-0.11.1-windows.zip"
 | 
				
			||||||
 | 
					            sha256: "c86f6384555a0484a5dd81faba5636bba78f5e3d6eaf627d880e34843f9e24bf"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.11.1/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					    Linux:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.11.1/WasmEdge-0.11.1-manylinux2014_x86_64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "76ce4ea0eb86adfa52c73f6c6b44383626d94990e0923cae8b1e6f060ef2bf5b"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.11.1/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					      "armv8":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.11.1/WasmEdge-0.11.1-manylinux2014_aarch64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "cb9ea32932360463991cfda80e09879b2cf6c69737f12f3f2b371cd0af4e9ce8"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.11.1/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					    Macos:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.11.1/WasmEdge-0.11.1-darwin_x86_64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "56df2b00669c25b8143ea2c17370256cd6a33f3b316d3b47857dd38d603cb69a"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.11.1/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					      "armv8":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.11.1/WasmEdge-0.11.1-darwin_arm64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "82f7da1a7a36ec1923fb045193784dd090a03109e84da042af97297205a71f08"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.11.1/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					    Android:
 | 
				
			||||||
 | 
					      "armv8":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.11.1/WasmEdge-0.11.1-android_aarch64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "af8694e93bf72ac5506450d4caebccc340fbba254dca3d58ec0712e96ec9dedd"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.11.1/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					  "0.10.0":
 | 
				
			||||||
 | 
					    Windows:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        Visual Studio:
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.10.0/WasmEdge-0.10.0-windows.zip"
 | 
				
			||||||
 | 
					            sha256: "63b8a02cced52a723aa283dba02bbe887656256ecca69bb0fff17872c0fb5ebc"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.10.0/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					    Linux:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.10.0/WasmEdge-0.10.0-manylinux2014_x86_64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "4c1ffca9fd8cbdeb8f0951ddaffbbefe81ae123d5b80f61e80ea8d9b56853cde"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.10.0/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					      "armv8":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.10.0/WasmEdge-0.10.0-manylinux2014_aarch64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "c000bf96d0a73a1d360659246c0806c2ce78620b6f78c1147fbf9e2be0280bd9"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.10.0/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					  "0.9.1":
 | 
				
			||||||
 | 
					    Windows:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        Visual Studio:
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.9.1/WasmEdge-0.9.1-windows.zip"
 | 
				
			||||||
 | 
					            sha256: "68240d8aee23d44db5cc252d8c1cf5d0c77ab709a122af2747a4b836ba461671"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.9.1/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					    Linux:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.9.1/WasmEdge-0.9.1-manylinux2014_x86_64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "bcb6fe3d6e30db0d0aa267ec3bd9b7248f8c8c387620cef4049d682d293c8371"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.9.1/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					      "armv8":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.9.1/WasmEdge-0.9.1-manylinux2014_aarch64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "515bcac3520cd546d9d14372b7930ab48b43f1c5dc258a9f61a82b22c0107eef"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.9.1/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					  "0.9.0":
 | 
				
			||||||
 | 
					    Windows:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        Visual Studio:
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.9.0/WasmEdge-0.9.0-windows.zip"
 | 
				
			||||||
 | 
					            sha256: "f81bfea4cf09053510e3e74c16c1ee010fc93def8a7e78744443b950f0011c3b"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.9.0/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					    Linux:
 | 
				
			||||||
 | 
					      "x86_64":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.9.0/WasmEdge-0.9.0-manylinux2014_x86_64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "27847f15e4294e707486458e857d7cb11806481bb67a26f076a717a1446827ed"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.9.0/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					      "armv8":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.9.0/WasmEdge-0.9.0-manylinux2014_aarch64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.9.0/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
 | 
					    Macos:
 | 
				
			||||||
 | 
					      "armv8":
 | 
				
			||||||
 | 
					        "gcc":
 | 
				
			||||||
 | 
					          - url: "https://github.com/WasmEdge/WasmEdge/releases/download/0.9.0/WasmEdge-0.9.0-darwin_arm64.tar.gz"
 | 
				
			||||||
 | 
					            sha256: "236a407a646f746ab78a1d0a39fa4e85fe28eae219b1635ba49f908d7944686d"
 | 
				
			||||||
 | 
					          - url: "https://raw.githubusercontent.com/WasmEdge/WasmEdge/0.9.0/LICENSE"
 | 
				
			||||||
 | 
					            sha256: "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
 | 
				
			||||||
							
								
								
									
										92
									
								
								external/wasmedge/conanfile.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								external/wasmedge/conanfile.py
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,92 @@
 | 
				
			|||||||
 | 
					from conan import ConanFile
 | 
				
			||||||
 | 
					from conan.tools.files import get, copy, download
 | 
				
			||||||
 | 
					from conan.tools.scm import Version
 | 
				
			||||||
 | 
					from conan.errors import ConanInvalidConfiguration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					required_conan_version = ">=1.53.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WasmedgeConan(ConanFile):
 | 
				
			||||||
 | 
					    name = "wasmedge"
 | 
				
			||||||
 | 
					    description = ("WasmEdge is a lightweight, high-performance, and extensible WebAssembly runtime"
 | 
				
			||||||
 | 
					                "for cloud native, edge, and decentralized applications."
 | 
				
			||||||
 | 
					                "It powers serverless apps, embedded functions, microservices, smart contracts, and IoT devices.")
 | 
				
			||||||
 | 
					    license = "Apache-2.0"
 | 
				
			||||||
 | 
					    url = "https://github.com/conan-io/conan-center-index"
 | 
				
			||||||
 | 
					    homepage = "https://github.com/WasmEdge/WasmEdge/"
 | 
				
			||||||
 | 
					    topics = ("webassembly", "wasm", "wasi", "emscripten")
 | 
				
			||||||
 | 
					    package_type = "shared-library"
 | 
				
			||||||
 | 
					    settings = "os", "arch", "compiler", "build_type"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @property
 | 
				
			||||||
 | 
					    def _compiler_alias(self):
 | 
				
			||||||
 | 
					        return {
 | 
				
			||||||
 | 
					            "Visual Studio": "Visual Studio",
 | 
				
			||||||
 | 
					            # "Visual Studio": "msvc",
 | 
				
			||||||
 | 
					            "msvc": "msvc",
 | 
				
			||||||
 | 
					        }.get(str(self.info.settings.compiler), "gcc")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def configure(self):
 | 
				
			||||||
 | 
					        self.settings.compiler.rm_safe("libcxx")
 | 
				
			||||||
 | 
					        self.settings.compiler.rm_safe("cppstd")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def validate(self):
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            self.conan_data["sources"][self.version][str(self.settings.os)][str(self.settings.arch)][self._compiler_alias]
 | 
				
			||||||
 | 
					        except KeyError:
 | 
				
			||||||
 | 
					            raise ConanInvalidConfiguration("Binaries for this combination of version/os/arch/compiler are not available")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def package_id(self):
 | 
				
			||||||
 | 
					        del self.info.settings.compiler.version
 | 
				
			||||||
 | 
					        self.info.settings.compiler = self._compiler_alias
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def build(self):
 | 
				
			||||||
 | 
					        # This is packaging binaries so the download needs to be in build
 | 
				
			||||||
 | 
					        get(self, **self.conan_data["sources"][self.version][str(self.settings.os)][str(self.settings.arch)][self._compiler_alias][0],
 | 
				
			||||||
 | 
					            destination=self.source_folder, strip_root=True)
 | 
				
			||||||
 | 
					        download(self, filename="LICENSE",
 | 
				
			||||||
 | 
					                 **self.conan_data["sources"][self.version][str(self.settings.os)][str(self.settings.arch)][self._compiler_alias][1])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def package(self):
 | 
				
			||||||
 | 
					        copy(self, pattern="*.h", dst=os.path.join(self.package_folder, "include"), src=os.path.join(self.source_folder, "include"), keep_path=True)
 | 
				
			||||||
 | 
					        copy(self, pattern="*.inc", dst=os.path.join(self.package_folder, "include"), src=os.path.join(self.source_folder, "include"), keep_path=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        srclibdir = os.path.join(self.source_folder, "lib64" if self.settings.os == "Linux" else "lib")
 | 
				
			||||||
 | 
					        srcbindir = os.path.join(self.source_folder, "bin")
 | 
				
			||||||
 | 
					        dstlibdir = os.path.join(self.package_folder, "lib")
 | 
				
			||||||
 | 
					        dstbindir = os.path.join(self.package_folder, "bin")
 | 
				
			||||||
 | 
					        if Version(self.version) >= "0.11.1":
 | 
				
			||||||
 | 
					            copy(self, pattern="wasmedge.lib", src=srclibdir, dst=dstlibdir, keep_path=False)
 | 
				
			||||||
 | 
					            copy(self, pattern="wasmedge.dll", src=srcbindir, dst=dstbindir, keep_path=False)
 | 
				
			||||||
 | 
					            copy(self, pattern="libwasmedge.so*", src=srclibdir, dst=dstlibdir, keep_path=False)
 | 
				
			||||||
 | 
					            copy(self, pattern="libwasmedge*.dylib", src=srclibdir,  dst=dstlibdir, keep_path=False)
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            copy(self, pattern="wasmedge_c.lib", src=srclibdir, dst=dstlibdir, keep_path=False)
 | 
				
			||||||
 | 
					            copy(self, pattern="wasmedge_c.dll", src=srcbindir, dst=dstbindir, keep_path=False)
 | 
				
			||||||
 | 
					            copy(self, pattern="libwasmedge_c.so*", src=srclibdir, dst=dstlibdir, keep_path=False)
 | 
				
			||||||
 | 
					            copy(self, pattern="libwasmedge_c*.dylib", src=srclibdir,  dst=dstlibdir, keep_path=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        copy(self, pattern="wasmedge*", src=srcbindir, dst=dstbindir, keep_path=False)
 | 
				
			||||||
 | 
					        copy(self, pattern="LICENSE", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses"), keep_path=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def package_info(self):
 | 
				
			||||||
 | 
					        if Version(self.version) >= "0.11.1":
 | 
				
			||||||
 | 
					            self.cpp_info.libs = ["wasmedge"]
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            self.cpp_info.libs = ["wasmedge_c"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        bindir = os.path.join(self.package_folder, "bin")
 | 
				
			||||||
 | 
					        self.output.info("Appending PATH environment variable: {}".format(bindir))
 | 
				
			||||||
 | 
					        self.env_info.PATH.append(bindir)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if self.settings.os == "Windows":
 | 
				
			||||||
 | 
					            self.cpp_info.system_libs.append("ws2_32")
 | 
				
			||||||
 | 
					            self.cpp_info.system_libs.append("wsock32")
 | 
				
			||||||
 | 
					            self.cpp_info.system_libs.append("shlwapi")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if self.settings.os in ["Linux", "FreeBSD"]:
 | 
				
			||||||
 | 
					            self.cpp_info.system_libs.append("m")
 | 
				
			||||||
 | 
					            self.cpp_info.system_libs.append("dl")
 | 
				
			||||||
 | 
					            self.cpp_info.system_libs.append("rt")
 | 
				
			||||||
 | 
					            self.cpp_info.system_libs.append("pthread")
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -17,7 +17,6 @@ if [[ "$GITHUB_REPOSITORY" == "" ]]; then
 | 
				
			|||||||
  BUILD_CORES=8
 | 
					  BUILD_CORES=8
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXIT_IF_CONTAINER_RUNNING=${EXIT_IF_CONTAINER_RUNNING:-1}
 | 
					 | 
				
			||||||
# Ensure still works outside of GH Actions by setting these to /dev/null
 | 
					# Ensure still works outside of GH Actions by setting these to /dev/null
 | 
				
			||||||
# GA will run this script and then delete it at the end of the job
 | 
					# GA will run this script and then delete it at the end of the job
 | 
				
			||||||
JOB_CLEANUP_SCRIPT=${JOB_CLEANUP_SCRIPT:-/dev/null}
 | 
					JOB_CLEANUP_SCRIPT=${JOB_CLEANUP_SCRIPT:-/dev/null}
 | 
				
			||||||
@@ -25,19 +24,6 @@ NORMALIZED_WORKFLOW=$(echo "$GITHUB_WORKFLOW" | tr -c 'a-zA-Z0-9' '-')
 | 
				
			|||||||
NORMALIZED_REF=$(echo "$GITHUB_REF" | tr -c 'a-zA-Z0-9' '-')
 | 
					NORMALIZED_REF=$(echo "$GITHUB_REF" | tr -c 'a-zA-Z0-9' '-')
 | 
				
			||||||
CONTAINER_NAME="xahaud_cached_builder_${NORMALIZED_WORKFLOW}-${NORMALIZED_REF}"
 | 
					CONTAINER_NAME="xahaud_cached_builder_${NORMALIZED_WORKFLOW}-${NORMALIZED_REF}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Check if the container is already running
 | 
					 | 
				
			||||||
if docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
 | 
					 | 
				
			||||||
    echo "⚠️ A running container (${CONTAINER_NAME}) was detected."
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if [[ "$EXIT_IF_CONTAINER_RUNNING" -eq 1 ]]; then
 | 
					 | 
				
			||||||
        echo "❌ EXIT_IF_CONTAINER_RUNNING is set. Exiting."
 | 
					 | 
				
			||||||
        exit 1
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        echo "🛑 Stopping the running container: ${CONTAINER_NAME}"
 | 
					 | 
				
			||||||
        docker stop "${CONTAINER_NAME}"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
echo "-- BUILD CORES:       $BUILD_CORES"
 | 
					echo "-- BUILD CORES:       $BUILD_CORES"
 | 
				
			||||||
echo "-- GITHUB_REPOSITORY: $GITHUB_REPOSITORY"
 | 
					echo "-- GITHUB_REPOSITORY: $GITHUB_REPOSITORY"
 | 
				
			||||||
echo "-- GITHUB_SHA:        $GITHUB_SHA"
 | 
					echo "-- GITHUB_SHA:        $GITHUB_SHA"
 | 
				
			||||||
@@ -60,7 +46,7 @@ fi
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
STATIC_CONTAINER=$(docker ps -a | grep $CONTAINER_NAME |wc -l)
 | 
					STATIC_CONTAINER=$(docker ps -a | grep $CONTAINER_NAME |wc -l)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if [[ "$STATIC_CONTAINER" -gt "0" && "$GITHUB_REPOSITORY" != "" ]]; then
 | 
					# if [[ "$STATIC_CONTAINER" -gt "0" && "$GITHUB_REPOSITORY" != "" ]]; then
 | 
				
			||||||
if false; then
 | 
					if false; then
 | 
				
			||||||
  echo "Static container, execute in static container to have max. cache"
 | 
					  echo "Static container, execute in static container to have max. cache"
 | 
				
			||||||
  docker start $CONTAINER_NAME
 | 
					  docker start $CONTAINER_NAME
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										48
									
								
								src/ed25519-donna/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								src/ed25519-donna/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
				
			|||||||
 | 
					cmake_minimum_required(VERSION 3.11)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					project(ed25519
 | 
				
			||||||
 | 
					  LANGUAGES C
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME)
 | 
				
			||||||
 | 
					  set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/output/$<CONFIG>/lib")
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(NOT TARGET OpenSSL::SSL)
 | 
				
			||||||
 | 
					  find_package(OpenSSL)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_library(ed25519 STATIC
 | 
				
			||||||
 | 
					  ed25519.c
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					add_library(ed25519::ed25519 ALIAS ed25519)
 | 
				
			||||||
 | 
					target_link_libraries(ed25519 PUBLIC OpenSSL::SSL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(GNUInstallDirs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[=========================================================[
 | 
				
			||||||
 | 
					   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_include_directories(ed25519 PUBLIC
 | 
				
			||||||
 | 
					  $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
 | 
				
			||||||
 | 
					  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install(
 | 
				
			||||||
 | 
					  TARGETS ed25519
 | 
				
			||||||
 | 
					  EXPORT ${PROJECT_NAME}-exports
 | 
				
			||||||
 | 
					  ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					install(
 | 
				
			||||||
 | 
					  EXPORT ${PROJECT_NAME}-exports
 | 
				
			||||||
 | 
					  DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
 | 
				
			||||||
 | 
					  FILE ${PROJECT_NAME}-targets.cmake
 | 
				
			||||||
 | 
					  NAMESPACE ${PROJECT_NAME}::
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					install(
 | 
				
			||||||
 | 
					  FILES ed25519.h
 | 
				
			||||||
 | 
					  DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
@@ -23,6 +23,7 @@
 | 
				
			|||||||
#include <ripple/protocol/BuildInfo.h>
 | 
					#include <ripple/protocol/BuildInfo.h>
 | 
				
			||||||
#include <boost/preprocessor/stringize.hpp>
 | 
					#include <boost/preprocessor/stringize.hpp>
 | 
				
			||||||
#include <algorithm>
 | 
					#include <algorithm>
 | 
				
			||||||
 | 
					#include <optional>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace ripple {
 | 
					namespace ripple {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@
 | 
				
			|||||||
#include <ripple/protocol/digest.h>
 | 
					#include <ripple/protocol/digest.h>
 | 
				
			||||||
#include <ripple/protocol/impl/secp256k1.h>
 | 
					#include <ripple/protocol/impl/secp256k1.h>
 | 
				
			||||||
#include <boost/multiprecision/cpp_int.hpp>
 | 
					#include <boost/multiprecision/cpp_int.hpp>
 | 
				
			||||||
#include <ed25519-donna/ed25519.h>
 | 
					#include <ed25519.h>
 | 
				
			||||||
#include <type_traits>
 | 
					#include <type_traits>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace ripple {
 | 
					namespace ripple {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,7 @@
 | 
				
			|||||||
#include <ripple/protocol/digest.h>
 | 
					#include <ripple/protocol/digest.h>
 | 
				
			||||||
#include <ripple/protocol/impl/secp256k1.h>
 | 
					#include <ripple/protocol/impl/secp256k1.h>
 | 
				
			||||||
#include <cstring>
 | 
					#include <cstring>
 | 
				
			||||||
#include <ed25519-donna/ed25519.h>
 | 
					#include <ed25519.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace ripple {
 | 
					namespace ripple {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,7 @@
 | 
				
			|||||||
#include <ripple/rpc/handlers/WalletPropose.h>
 | 
					#include <ripple/rpc/handlers/WalletPropose.h>
 | 
				
			||||||
#include <ripple/rpc/impl/RPCHelpers.h>
 | 
					#include <ripple/rpc/impl/RPCHelpers.h>
 | 
				
			||||||
#include <cmath>
 | 
					#include <cmath>
 | 
				
			||||||
#include <ed25519-donna/ed25519.h>
 | 
					#include <ed25519.h>
 | 
				
			||||||
#include <map>
 | 
					#include <map>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace ripple {
 | 
					namespace ripple {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										52
									
								
								src/secp256k1/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								src/secp256k1/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
				
			|||||||
 | 
					cmake_minimum_required(VERSION 3.11)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					project(secp256k1
 | 
				
			||||||
 | 
					  LANGUAGES C
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME)
 | 
				
			||||||
 | 
					  set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/output/$<CONFIG>/lib")
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_library(secp256k1 STATIC
 | 
				
			||||||
 | 
					  src/secp256k1.c
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					add_library(secp256k1::secp256k1 ALIAS secp256k1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include(GNUInstallDirs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
 | 
				
			||||||
 | 
					  PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					target_compile_options(secp256k1 PRIVATE
 | 
				
			||||||
 | 
					  $<$<C_COMPILER_ID:MSVC>:-wd4319>
 | 
				
			||||||
 | 
					  $<$<NOT:$<C_COMPILER_ID:MSVC>>:
 | 
				
			||||||
 | 
					  -Wno-deprecated-declarations
 | 
				
			||||||
 | 
					  -Wno-unused-function
 | 
				
			||||||
 | 
					  >
 | 
				
			||||||
 | 
					  $<$<C_COMPILER_ID:GNU>:-Wno-nonnull-compare>
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					install(
 | 
				
			||||||
 | 
					  TARGETS secp256k1
 | 
				
			||||||
 | 
					  EXPORT ${PROJECT_NAME}-exports
 | 
				
			||||||
 | 
					  ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					install(
 | 
				
			||||||
 | 
					  EXPORT ${PROJECT_NAME}-exports
 | 
				
			||||||
 | 
					  DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
 | 
				
			||||||
 | 
					  FILE ${PROJECT_NAME}-targets.cmake
 | 
				
			||||||
 | 
					  NAMESPACE ${PROJECT_NAME}::
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					install(
 | 
				
			||||||
 | 
					  FILES include/secp256k1.h
 | 
				
			||||||
 | 
					  DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
@@ -226,13 +226,15 @@ public:
 | 
				
			|||||||
                // SOCI requires boost::optional (not std::optional) as
 | 
					                // SOCI requires boost::optional (not std::optional) as
 | 
				
			||||||
                // parameters.
 | 
					                // parameters.
 | 
				
			||||||
                boost::optional<std::int32_t> ig;
 | 
					                boost::optional<std::int32_t> ig;
 | 
				
			||||||
                boost::optional<std::uint32_t> uig;
 | 
					                // Known bug: https://github.com/SOCI/soci/issues/926
 | 
				
			||||||
 | 
					                // boost::optional<std::uint32_t> uig;
 | 
				
			||||||
 | 
					                uint32_t uig = 0;
 | 
				
			||||||
                boost::optional<std::int64_t> big;
 | 
					                boost::optional<std::int64_t> big;
 | 
				
			||||||
                boost::optional<std::uint64_t> ubig;
 | 
					                boost::optional<std::uint64_t> ubig;
 | 
				
			||||||
                s << "SELECT I, UI, BI, UBI from STT;", soci::into(ig),
 | 
					                s << "SELECT I, UI, BI, UBI from STT;", soci::into(ig),
 | 
				
			||||||
                    soci::into(uig), soci::into(big), soci::into(ubig);
 | 
					                    soci::into(uig), soci::into(big), soci::into(ubig);
 | 
				
			||||||
                BEAST_EXPECT(
 | 
					                BEAST_EXPECT(
 | 
				
			||||||
                    *ig == id[0] && *uig == uid[0] && *big == bid[0] &&
 | 
					                    *ig == id[0] && uig == uid[0] && *big == bid[0] &&
 | 
				
			||||||
                    *ubig == ubid[0]);
 | 
					                    *ubig == ubid[0]);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            catch (std::exception&)
 | 
					            catch (std::exception&)
 | 
				
			||||||
@@ -357,18 +359,13 @@ public:
 | 
				
			|||||||
            bfs::remove(dbPath);
 | 
					            bfs::remove(dbPath);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    void
 | 
					    void
 | 
				
			||||||
    testSQLite()
 | 
					    run() override
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        testSQLiteFileNames();
 | 
					        testSQLiteFileNames();
 | 
				
			||||||
        testSQLiteSession();
 | 
					        testSQLiteSession();
 | 
				
			||||||
        testSQLiteSelect();
 | 
					        testSQLiteSelect();
 | 
				
			||||||
        testSQLiteDeleteWithSubselect();
 | 
					        testSQLiteDeleteWithSubselect();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    void
 | 
					 | 
				
			||||||
    run() override
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        testSQLite();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BEAST_DEFINE_TESTSUITE(SociDB, core, ripple);
 | 
					BEAST_DEFINE_TESTSUITE(SociDB, core, ripple);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user