ca333
7 years ago
committed by
GitHub
278 changed files with 13341 additions and 23088 deletions
@ -0,0 +1,4 @@ |
|||
[submodule "cpp-ethereum"] |
|||
path = cpp-ethereum |
|||
url = https://github.com/artemii235/cpp-ethereum.git |
|||
branch = develop |
@ -0,0 +1,30 @@ |
|||
language: c |
|||
|
|||
matrix: |
|||
include: |
|||
- os: linux |
|||
compiler: gcc |
|||
addons: |
|||
apt: |
|||
sources: |
|||
- ubuntu-toolchain-r-test |
|||
packages: |
|||
- g++-7 |
|||
env: OS_NAME=Linux MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" |
|||
- os: osx |
|||
compiler: clang |
|||
env: OS_NAME=Darwin |
|||
osx_image: xcode9.2 |
|||
|
|||
before_install: |
|||
- git submodule update --init --recursive |
|||
|
|||
script: |
|||
- mkdir build && cd build |
|||
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then cmake -DCMAKE_C_COMPILER=/usr/bin/gcc-7 -DCMAKE_CXX_COMPILER=/usr/bin/g++-7 ..; fi |
|||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then cmake ..; fi |
|||
- cmake --build . --target marketmaker-mainnet |
|||
|
|||
cache: |
|||
directories: |
|||
- $HOME/.hunter |
@ -0,0 +1,33 @@ |
|||
cmake_minimum_required(VERSION 3.9.2) |
|||
include("cmake/HunterGate.cmake") |
|||
HunterGate( |
|||
URL "https://github.com/ruslo/hunter/archive/v0.19.173.tar.gz" |
|||
SHA1 "750fb1d621af971fad6f303356b13017ad9f5e15" |
|||
LOCAL |
|||
) |
|||
project(SuperNET) |
|||
set(DEPS_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install) |
|||
set(CMAKE_CXX_STANDARD 11) |
|||
set(CMAKE_CXX_STANDARD_REQUIRED True) |
|||
set(CMAKE_CXX_EXTENSIONS Off) |
|||
|
|||
include(cmake/DownloadProject.cmake) |
|||
|
|||
# Download and install nanomsg at CMake configure time |
|||
download_project(PROJ nanomsg |
|||
GIT_REPOSITORY https://github.com/nanomsg/nanomsg.git |
|||
GIT_TAG 1.1.2 |
|||
GIT_SHALLOW 1 |
|||
GIT_PROGRESS 1 |
|||
CMAKE_ARGS "-DNN_STATIC_LIB=ON -DNN_ENABLE_GETADDRINFO_A=OFF -DNN_ENABLE_DOC=OFF -DNN_TESTS=OFF -DNN_TOOLS=OFF -DNN_ENABLE_NANOCAT=OFF -DCMAKE_INSTALL_PREFIX=${DEPS_INSTALL_PREFIX}" |
|||
UPDATE_DISCONNECTED 1 |
|||
) |
|||
|
|||
find_library(NANOMSG_LIBRARY NAMES nanomsg PATHS ${DEPS_INSTALL_PREFIX}/lib NO_DEFAULT_PATH) |
|||
include_directories("${CMAKE_SOURCE_DIR}") |
|||
add_subdirectory(cpp-ethereum) |
|||
add_subdirectory(iguana/exchanges) |
|||
add_subdirectory(iguana/exchanges/etomicswap) |
|||
add_subdirectory(iguana/secp256k1) |
|||
add_subdirectory(crypto777) |
|||
add_subdirectory(crypto777/jpeg) |
@ -0,0 +1,7 @@ |
|||
FROM ubuntu:17.10 |
|||
RUN apt-get update && apt-get install -y git libcurl4-openssl-dev build-essential wget pax libleveldb-dev && apt-get clean |
|||
RUN wget https://cmake.org/files/v3.10/cmake-3.10.3-Linux-x86_64.sh && \ |
|||
chmod +x cmake-3.10.3-Linux-x86_64.sh && \ |
|||
./cmake-3.10.3-Linux-x86_64.sh --skip-license --exclude-subdir --prefix=/usr && \ |
|||
rm -rf cmake-3.10.3-Linux-x86_64.sh |
|||
CMD rm -rf build && mkdir build && cd build && cmake .. && cmake --build . --target marketmaker-testnet |
@ -0,0 +1,20 @@ |
|||
pipeline { |
|||
agent { |
|||
docker { |
|||
image 'artempikulin/cmake-ubuntu' |
|||
} |
|||
|
|||
} |
|||
stages { |
|||
stage('Build') { |
|||
steps { |
|||
sh '''git submodule update --init --recursive |
|||
rm -rf build |
|||
mkdir build |
|||
cd build |
|||
cmake .. |
|||
cmake --build . --target marketmaker-testnet''' |
|||
} |
|||
} |
|||
} |
|||
} |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,6 @@ |
|||
version: 1.0.{build} |
|||
branches: |
|||
only: |
|||
- etomic |
|||
build_script: |
|||
- cmd: marketmaker_build_etomic.cmd |
@ -0,0 +1,15 @@ |
|||
# Distributed under the OSI-approved MIT License. See accompanying |
|||
# file LICENSE or https://github.com/Crascit/DownloadProject for details. |
|||
|
|||
cmake_minimum_required(VERSION 2.8.2) |
|||
|
|||
project(${DL_ARGS_PROJ}-download NONE) |
|||
|
|||
include(ExternalProject) |
|||
ExternalProject_Add(${DL_ARGS_PROJ}-download |
|||
${DL_ARGS_UNPARSED_ARGUMENTS} |
|||
SOURCE_DIR "${DL_ARGS_SOURCE_DIR}" |
|||
BINARY_DIR "${DL_ARGS_BINARY_DIR}" |
|||
BUILD_COMMAND "" |
|||
TEST_COMMAND "" |
|||
) |
@ -0,0 +1,182 @@ |
|||
# Distributed under the OSI-approved MIT License. See accompanying |
|||
# file LICENSE or https://github.com/Crascit/DownloadProject for details. |
|||
# |
|||
# MODULE: DownloadProject |
|||
# |
|||
# PROVIDES: |
|||
# download_project( PROJ projectName |
|||
# [PREFIX prefixDir] |
|||
# [DOWNLOAD_DIR downloadDir] |
|||
# [SOURCE_DIR srcDir] |
|||
# [BINARY_DIR binDir] |
|||
# [QUIET] |
|||
# ... |
|||
# ) |
|||
# |
|||
# Provides the ability to download and unpack a tarball, zip file, git repository, |
|||
# etc. at configure time (i.e. when the cmake command is run). How the downloaded |
|||
# and unpacked contents are used is up to the caller, but the motivating case is |
|||
# to download source code which can then be included directly in the build with |
|||
# add_subdirectory() after the call to download_project(). Source and build |
|||
# directories are set up with this in mind. |
|||
# |
|||
# The PROJ argument is required. The projectName value will be used to construct |
|||
# the following variables upon exit (obviously replace projectName with its actual |
|||
# value): |
|||
# |
|||
# projectName_SOURCE_DIR |
|||
# projectName_BINARY_DIR |
|||
# |
|||
# The SOURCE_DIR and BINARY_DIR arguments are optional and would not typically |
|||
# need to be provided. They can be specified if you want the downloaded source |
|||
# and build directories to be located in a specific place. The contents of |
|||
# projectName_SOURCE_DIR and projectName_BINARY_DIR will be populated with the |
|||
# locations used whether you provide SOURCE_DIR/BINARY_DIR or not. |
|||
# |
|||
# The DOWNLOAD_DIR argument does not normally need to be set. It controls the |
|||
# location of the temporary CMake build used to perform the download. |
|||
# |
|||
# The PREFIX argument can be provided to change the base location of the default |
|||
# values of DOWNLOAD_DIR, SOURCE_DIR and BINARY_DIR. If all of those three arguments |
|||
# are provided, then PREFIX will have no effect. The default value for PREFIX is |
|||
# CMAKE_BINARY_DIR. |
|||
# |
|||
# The QUIET option can be given if you do not want to show the output associated |
|||
# with downloading the specified project. |
|||
# |
|||
# In addition to the above, any other options are passed through unmodified to |
|||
# ExternalProject_Add() to perform the actual download, patch and update steps. |
|||
# The following ExternalProject_Add() options are explicitly prohibited (they |
|||
# are reserved for use by the download_project() command): |
|||
# |
|||
# CONFIGURE_COMMAND |
|||
# BUILD_COMMAND |
|||
# INSTALL_COMMAND |
|||
# TEST_COMMAND |
|||
# |
|||
# Only those ExternalProject_Add() arguments which relate to downloading, patching |
|||
# and updating of the project sources are intended to be used. Also note that at |
|||
# least one set of download-related arguments are required. |
|||
# |
|||
# If using CMake 3.2 or later, the UPDATE_DISCONNECTED option can be used to |
|||
# prevent a check at the remote end for changes every time CMake is run |
|||
# after the first successful download. See the documentation of the ExternalProject |
|||
# module for more information. It is likely you will want to use this option if it |
|||
# is available to you. Note, however, that the ExternalProject implementation contains |
|||
# bugs which result in incorrect handling of the UPDATE_DISCONNECTED option when |
|||
# using the URL download method or when specifying a SOURCE_DIR with no download |
|||
# method. Fixes for these have been created, the last of which is scheduled for |
|||
# inclusion in CMake 3.8.0. Details can be found here: |
|||
# |
|||
# https://gitlab.kitware.com/cmake/cmake/commit/bdca68388bd57f8302d3c1d83d691034b7ffa70c |
|||
# https://gitlab.kitware.com/cmake/cmake/issues/16428 |
|||
# |
|||
# If you experience build errors related to the update step, consider avoiding |
|||
# the use of UPDATE_DISCONNECTED. |
|||
# |
|||
# EXAMPLE USAGE: |
|||
# |
|||
# include(DownloadProject) |
|||
# download_project(PROJ googletest |
|||
# GIT_REPOSITORY https://github.com/google/googletest.git |
|||
# GIT_TAG master |
|||
# UPDATE_DISCONNECTED 1 |
|||
# QUIET |
|||
# ) |
|||
# |
|||
# add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR}) |
|||
# |
|||
#======================================================================================== |
|||
|
|||
|
|||
set(_DownloadProjectDir "${CMAKE_CURRENT_LIST_DIR}") |
|||
|
|||
include(CMakeParseArguments) |
|||
|
|||
function(download_project) |
|||
|
|||
set(options QUIET) |
|||
set(oneValueArgs |
|||
PROJ |
|||
PREFIX |
|||
DOWNLOAD_DIR |
|||
SOURCE_DIR |
|||
BINARY_DIR |
|||
# Prevent the following from being passed through |
|||
CONFIGURE_COMMAND |
|||
BUILD_COMMAND |
|||
INSTALL_COMMAND |
|||
TEST_COMMAND |
|||
) |
|||
set(multiValueArgs "") |
|||
|
|||
cmake_parse_arguments(DL_ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
|||
|
|||
# Hide output if requested |
|||
if (DL_ARGS_QUIET) |
|||
set(OUTPUT_QUIET "OUTPUT_QUIET") |
|||
else() |
|||
unset(OUTPUT_QUIET) |
|||
message(STATUS "Downloading/updating ${DL_ARGS_PROJ}") |
|||
endif() |
|||
|
|||
# Set up where we will put our temporary CMakeLists.txt file and also |
|||
# the base point below which the default source and binary dirs will be. |
|||
# The prefix must always be an absolute path. |
|||
if (NOT DL_ARGS_PREFIX) |
|||
set(DL_ARGS_PREFIX "${CMAKE_BINARY_DIR}") |
|||
else() |
|||
get_filename_component(DL_ARGS_PREFIX "${DL_ARGS_PREFIX}" ABSOLUTE |
|||
BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}") |
|||
endif() |
|||
if (NOT DL_ARGS_DOWNLOAD_DIR) |
|||
set(DL_ARGS_DOWNLOAD_DIR "${DL_ARGS_PREFIX}/${DL_ARGS_PROJ}-download") |
|||
endif() |
|||
|
|||
# Ensure the caller can know where to find the source and build directories |
|||
if (NOT DL_ARGS_SOURCE_DIR) |
|||
set(DL_ARGS_SOURCE_DIR "${DL_ARGS_PREFIX}/${DL_ARGS_PROJ}-src") |
|||
endif() |
|||
if (NOT DL_ARGS_BINARY_DIR) |
|||
set(DL_ARGS_BINARY_DIR "${DL_ARGS_PREFIX}/${DL_ARGS_PROJ}-build") |
|||
endif() |
|||
set(${DL_ARGS_PROJ}_SOURCE_DIR "${DL_ARGS_SOURCE_DIR}" PARENT_SCOPE) |
|||
set(${DL_ARGS_PROJ}_BINARY_DIR "${DL_ARGS_BINARY_DIR}" PARENT_SCOPE) |
|||
|
|||
# The way that CLion manages multiple configurations, it causes a copy of |
|||
# the CMakeCache.txt to be copied across due to it not expecting there to |
|||
# be a project within a project. This causes the hard-coded paths in the |
|||
# cache to be copied and builds to fail. To mitigate this, we simply |
|||
# remove the cache if it exists before we configure the new project. It |
|||
# is safe to do so because it will be re-generated. Since this is only |
|||
# executed at the configure step, it should not cause additional builds or |
|||
# downloads. |
|||
file(REMOVE "${DL_ARGS_DOWNLOAD_DIR}/CMakeCache.txt") |
|||
|
|||
# Create and build a separate CMake project to carry out the download. |
|||
# If we've already previously done these steps, they will not cause |
|||
# anything to be updated, so extra rebuilds of the project won't occur. |
|||
# Make sure to pass through CMAKE_MAKE_PROGRAM in case the main project |
|||
# has this set to something not findable on the PATH. |
|||
configure_file("${_DownloadProjectDir}/DownloadProject.CMakeLists.cmake.in" |
|||
"${DL_ARGS_DOWNLOAD_DIR}/CMakeLists.txt") |
|||
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" |
|||
-D "CMAKE_MAKE_PROGRAM:FILE=${CMAKE_MAKE_PROGRAM}" |
|||
. |
|||
RESULT_VARIABLE result |
|||
${OUTPUT_QUIET} |
|||
WORKING_DIRECTORY "${DL_ARGS_DOWNLOAD_DIR}" |
|||
) |
|||
if(result) |
|||
message(FATAL_ERROR "CMake step for ${DL_ARGS_PROJ} failed: ${result}") |
|||
endif() |
|||
execute_process(COMMAND ${CMAKE_COMMAND} --build . |
|||
RESULT_VARIABLE result |
|||
${OUTPUT_QUIET} |
|||
WORKING_DIRECTORY "${DL_ARGS_DOWNLOAD_DIR}" |
|||
) |
|||
if(result) |
|||
message(FATAL_ERROR "Build step for ${DL_ARGS_PROJ} failed: ${result}") |
|||
endif() |
|||
|
|||
endfunction() |
@ -0,0 +1,18 @@ |
|||
# cryptopp has very bad CMakeLists.txt config. |
|||
# We have to enforce "cross compiling mode" there by setting CMAKE_SYSTEM_VERSION=NO |
|||
# to any "false" value. |
|||
hunter_config(cryptopp VERSION ${HUNTER_cryptopp_VERSION} CMAKE_ARGS CMAKE_SYSTEM_VERSION=NO) |
|||
|
|||
hunter_config( |
|||
libjson-rpc-cpp |
|||
VERSION ${HUNTER_libjson-rpc-cpp_VERSION} |
|||
CMAKE_ARGS |
|||
UNIX_DOMAIN_SOCKET_SERVER=NO |
|||
UNIX_DOMAIN_SOCKET_CLIENT=NO |
|||
FILE_DESCRIPTOR_SERVER=NO |
|||
FILE_DESCRIPTOR_CLIENT=NO |
|||
TCP_SOCKET_SERVER=NO |
|||
TCP_SOCKET_CLIENT=NO |
|||
HTTP_SERVER=NO |
|||
HTTP_CLIENT=NO |
|||
) |
@ -0,0 +1,529 @@ |
|||
# Copyright (c) 2013-2017, Ruslan Baratov |
|||
# All rights reserved. |
|||
# |
|||
# Redistribution and use in source and binary forms, with or without |
|||
# modification, are permitted provided that the following conditions are met: |
|||
# |
|||
# * Redistributions of source code must retain the above copyright notice, this |
|||
# list of conditions and the following disclaimer. |
|||
# |
|||
# * Redistributions in binary form must reproduce the above copyright notice, |
|||
# this list of conditions and the following disclaimer in the documentation |
|||
# and/or other materials provided with the distribution. |
|||
# |
|||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
|||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
|||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
|||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
|||
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
|||
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
|||
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|||
|
|||
# This is a gate file to Hunter package manager. |
|||
# Include this file using `include` command and add package you need, example: |
|||
# |
|||
# cmake_minimum_required(VERSION 3.0) |
|||
# |
|||
# include("cmake/HunterGate.cmake") |
|||
# HunterGate( |
|||
# URL "https://github.com/path/to/hunter/archive.tar.gz" |
|||
# SHA1 "798501e983f14b28b10cda16afa4de69eee1da1d" |
|||
# ) |
|||
# |
|||
# project(MyProject) |
|||
# |
|||
# hunter_add_package(Foo) |
|||
# hunter_add_package(Boo COMPONENTS Bar Baz) |
|||
# |
|||
# Projects: |
|||
# * https://github.com/hunter-packages/gate/ |
|||
# * https://github.com/ruslo/hunter |
|||
|
|||
option(HUNTER_ENABLED "Enable Hunter package manager support" ON) |
|||
if(HUNTER_ENABLED) |
|||
if(CMAKE_VERSION VERSION_LESS "3.0") |
|||
message(FATAL_ERROR "At least CMake version 3.0 required for hunter dependency management." |
|||
" Update CMake or set HUNTER_ENABLED to OFF.") |
|||
endif() |
|||
endif() |
|||
|
|||
include(CMakeParseArguments) # cmake_parse_arguments |
|||
|
|||
option(HUNTER_STATUS_PRINT "Print working status" ON) |
|||
option(HUNTER_STATUS_DEBUG "Print a lot info" OFF) |
|||
|
|||
set(HUNTER_WIKI "https://github.com/ruslo/hunter/wiki") |
|||
|
|||
function(hunter_gate_status_print) |
|||
foreach(print_message ${ARGV}) |
|||
if(HUNTER_STATUS_PRINT OR HUNTER_STATUS_DEBUG) |
|||
message(STATUS "[hunter] ${print_message}") |
|||
endif() |
|||
endforeach() |
|||
endfunction() |
|||
|
|||
function(hunter_gate_status_debug) |
|||
foreach(print_message ${ARGV}) |
|||
if(HUNTER_STATUS_DEBUG) |
|||
string(TIMESTAMP timestamp) |
|||
message(STATUS "[hunter *** DEBUG *** ${timestamp}] ${print_message}") |
|||
endif() |
|||
endforeach() |
|||
endfunction() |
|||
|
|||
function(hunter_gate_wiki wiki_page) |
|||
message("------------------------------ WIKI -------------------------------") |
|||
message(" ${HUNTER_WIKI}/${wiki_page}") |
|||
message("-------------------------------------------------------------------") |
|||
message("") |
|||
message(FATAL_ERROR "") |
|||
endfunction() |
|||
|
|||
function(hunter_gate_internal_error) |
|||
message("") |
|||
foreach(print_message ${ARGV}) |
|||
message("[hunter ** INTERNAL **] ${print_message}") |
|||
endforeach() |
|||
message("[hunter ** INTERNAL **] [Directory:${CMAKE_CURRENT_LIST_DIR}]") |
|||
message("") |
|||
hunter_gate_wiki("error.internal") |
|||
endfunction() |
|||
|
|||
function(hunter_gate_fatal_error) |
|||
cmake_parse_arguments(hunter "" "WIKI" "" "${ARGV}") |
|||
string(COMPARE EQUAL "${hunter_WIKI}" "" have_no_wiki) |
|||
if(have_no_wiki) |
|||
hunter_gate_internal_error("Expected wiki") |
|||
endif() |
|||
message("") |
|||
foreach(x ${hunter_UNPARSED_ARGUMENTS}) |
|||
message("[hunter ** FATAL ERROR **] ${x}") |
|||
endforeach() |
|||
message("[hunter ** FATAL ERROR **] [Directory:${CMAKE_CURRENT_LIST_DIR}]") |
|||
message("") |
|||
hunter_gate_wiki("${hunter_WIKI}") |
|||
endfunction() |
|||
|
|||
function(hunter_gate_user_error) |
|||
hunter_gate_fatal_error(${ARGV} WIKI "error.incorrect.input.data") |
|||
endfunction() |
|||
|
|||
function(hunter_gate_self root version sha1 result) |
|||
string(COMPARE EQUAL "${root}" "" is_bad) |
|||
if(is_bad) |
|||
hunter_gate_internal_error("root is empty") |
|||
endif() |
|||
|
|||
string(COMPARE EQUAL "${version}" "" is_bad) |
|||
if(is_bad) |
|||
hunter_gate_internal_error("version is empty") |
|||
endif() |
|||
|
|||
string(COMPARE EQUAL "${sha1}" "" is_bad) |
|||
if(is_bad) |
|||
hunter_gate_internal_error("sha1 is empty") |
|||
endif() |
|||
|
|||
string(SUBSTRING "${sha1}" 0 7 archive_id) |
|||
|
|||
if(EXISTS "${root}/cmake/Hunter") |
|||
set(hunter_self "${root}") |
|||
else() |
|||
set( |
|||
hunter_self |
|||
"${root}/_Base/Download/Hunter/${version}/${archive_id}/Unpacked" |
|||
) |
|||
endif() |
|||
|
|||
set("${result}" "${hunter_self}" PARENT_SCOPE) |
|||
endfunction() |
|||
|
|||
# Set HUNTER_GATE_ROOT cmake variable to suitable value. |
|||
function(hunter_gate_detect_root) |
|||
# Check CMake variable |
|||
string(COMPARE NOTEQUAL "${HUNTER_ROOT}" "" not_empty) |
|||
if(not_empty) |
|||
set(HUNTER_GATE_ROOT "${HUNTER_ROOT}" PARENT_SCOPE) |
|||
hunter_gate_status_debug("HUNTER_ROOT detected by cmake variable") |
|||
return() |
|||
endif() |
|||
|
|||
# Check environment variable |
|||
string(COMPARE NOTEQUAL "$ENV{HUNTER_ROOT}" "" not_empty) |
|||
if(not_empty) |
|||
set(HUNTER_GATE_ROOT "$ENV{HUNTER_ROOT}" PARENT_SCOPE) |
|||
hunter_gate_status_debug("HUNTER_ROOT detected by environment variable") |
|||
return() |
|||
endif() |
|||
|
|||
# Check HOME environment variable |
|||
string(COMPARE NOTEQUAL "$ENV{HOME}" "" result) |
|||
if(result) |
|||
set(HUNTER_GATE_ROOT "$ENV{HOME}/.hunter" PARENT_SCOPE) |
|||
hunter_gate_status_debug("HUNTER_ROOT set using HOME environment variable") |
|||
return() |
|||
endif() |
|||
|
|||
# Check SYSTEMDRIVE and USERPROFILE environment variable (windows only) |
|||
if(WIN32) |
|||
string(COMPARE NOTEQUAL "$ENV{SYSTEMDRIVE}" "" result) |
|||
if(result) |
|||
set(HUNTER_GATE_ROOT "$ENV{SYSTEMDRIVE}/.hunter" PARENT_SCOPE) |
|||
hunter_gate_status_debug( |
|||
"HUNTER_ROOT set using SYSTEMDRIVE environment variable" |
|||
) |
|||
return() |
|||
endif() |
|||
|
|||
string(COMPARE NOTEQUAL "$ENV{USERPROFILE}" "" result) |
|||
if(result) |
|||
set(HUNTER_GATE_ROOT "$ENV{USERPROFILE}/.hunter" PARENT_SCOPE) |
|||
hunter_gate_status_debug( |
|||
"HUNTER_ROOT set using USERPROFILE environment variable" |
|||
) |
|||
return() |
|||
endif() |
|||
endif() |
|||
|
|||
hunter_gate_fatal_error( |
|||
"Can't detect HUNTER_ROOT" |
|||
WIKI "error.detect.hunter.root" |
|||
) |
|||
endfunction() |
|||
|
|||
macro(hunter_gate_lock dir) |
|||
if(NOT HUNTER_SKIP_LOCK) |
|||
if("${CMAKE_VERSION}" VERSION_LESS "3.2") |
|||
hunter_gate_fatal_error( |
|||
"Can't lock, upgrade to CMake 3.2 or use HUNTER_SKIP_LOCK" |
|||
WIKI "error.can.not.lock" |
|||
) |
|||
endif() |
|||
hunter_gate_status_debug("Locking directory: ${dir}") |
|||
file(LOCK "${dir}" DIRECTORY GUARD FUNCTION) |
|||
hunter_gate_status_debug("Lock done") |
|||
endif() |
|||
endmacro() |
|||
|
|||
function(hunter_gate_download dir) |
|||
string( |
|||
COMPARE |
|||
NOTEQUAL |
|||
"$ENV{HUNTER_DISABLE_AUTOINSTALL}" |
|||
"" |
|||
disable_autoinstall |
|||
) |
|||
if(disable_autoinstall AND NOT HUNTER_RUN_INSTALL) |
|||
hunter_gate_fatal_error( |
|||
"Hunter not found in '${dir}'" |
|||
"Set HUNTER_RUN_INSTALL=ON to auto-install it from '${HUNTER_GATE_URL}'" |
|||
"Settings:" |
|||
" HUNTER_ROOT: ${HUNTER_GATE_ROOT}" |
|||
" HUNTER_SHA1: ${HUNTER_GATE_SHA1}" |
|||
WIKI "error.run.install" |
|||
) |
|||
endif() |
|||
string(COMPARE EQUAL "${dir}" "" is_bad) |
|||
if(is_bad) |
|||
hunter_gate_internal_error("Empty 'dir' argument") |
|||
endif() |
|||
|
|||
string(COMPARE EQUAL "${HUNTER_GATE_SHA1}" "" is_bad) |
|||
if(is_bad) |
|||
hunter_gate_internal_error("HUNTER_GATE_SHA1 empty") |
|||
endif() |
|||
|
|||
string(COMPARE EQUAL "${HUNTER_GATE_URL}" "" is_bad) |
|||
if(is_bad) |
|||
hunter_gate_internal_error("HUNTER_GATE_URL empty") |
|||
endif() |
|||
|
|||
set(done_location "${dir}/DONE") |
|||
set(sha1_location "${dir}/SHA1") |
|||
|
|||
set(build_dir "${dir}/Build") |
|||
set(cmakelists "${dir}/CMakeLists.txt") |
|||
|
|||
hunter_gate_lock("${dir}") |
|||
if(EXISTS "${done_location}") |
|||
# while waiting for lock other instance can do all the job |
|||
hunter_gate_status_debug("File '${done_location}' found, skip install") |
|||
return() |
|||
endif() |
|||
|
|||
file(REMOVE_RECURSE "${build_dir}") |
|||
file(REMOVE_RECURSE "${cmakelists}") |
|||
|
|||
file(MAKE_DIRECTORY "${build_dir}") # check directory permissions |
|||
|
|||
# Disabling languages speeds up a little bit, reduces noise in the output |
|||
# and avoids path too long windows error |
|||
file( |
|||
WRITE |
|||
"${cmakelists}" |
|||
"cmake_minimum_required(VERSION 3.0)\n" |
|||
"project(HunterDownload LANGUAGES NONE)\n" |
|||
"include(ExternalProject)\n" |
|||
"ExternalProject_Add(\n" |
|||
" Hunter\n" |
|||
" URL\n" |
|||
" \"${HUNTER_GATE_URL}\"\n" |
|||
" URL_HASH\n" |
|||
" SHA1=${HUNTER_GATE_SHA1}\n" |
|||
" DOWNLOAD_DIR\n" |
|||
" \"${dir}\"\n" |
|||
" SOURCE_DIR\n" |
|||
" \"${dir}/Unpacked\"\n" |
|||
" CONFIGURE_COMMAND\n" |
|||
" \"\"\n" |
|||
" BUILD_COMMAND\n" |
|||
" \"\"\n" |
|||
" INSTALL_COMMAND\n" |
|||
" \"\"\n" |
|||
")\n" |
|||
) |
|||
|
|||
if(HUNTER_STATUS_DEBUG) |
|||
set(logging_params "") |
|||
else() |
|||
set(logging_params OUTPUT_QUIET) |
|||
endif() |
|||
|
|||
hunter_gate_status_debug("Run generate") |
|||
|
|||
# Need to add toolchain file too. |
|||
# Otherwise on Visual Studio + MDD this will fail with error: |
|||
# "Could not find an appropriate version of the Windows 10 SDK installed on this machine" |
|||
if(EXISTS "${CMAKE_TOOLCHAIN_FILE}") |
|||
get_filename_component(absolute_CMAKE_TOOLCHAIN_FILE "${CMAKE_TOOLCHAIN_FILE}" ABSOLUTE) |
|||
set(toolchain_arg "-DCMAKE_TOOLCHAIN_FILE=${absolute_CMAKE_TOOLCHAIN_FILE}") |
|||
else() |
|||
# 'toolchain_arg' can't be empty |
|||
set(toolchain_arg "-DCMAKE_TOOLCHAIN_FILE=") |
|||
endif() |
|||
|
|||
string(COMPARE EQUAL "${CMAKE_MAKE_PROGRAM}" "" no_make) |
|||
if(no_make) |
|||
set(make_arg "") |
|||
else() |
|||
# Test case: remove Ninja from PATH but set it via CMAKE_MAKE_PROGRAM |
|||
set(make_arg "-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}") |
|||
endif() |
|||
|
|||
execute_process( |
|||
COMMAND |
|||
"${CMAKE_COMMAND}" |
|||
"-H${dir}" |
|||
"-B${build_dir}" |
|||
"-G${CMAKE_GENERATOR}" |
|||
"${toolchain_arg}" |
|||
${make_arg} |
|||
WORKING_DIRECTORY "${dir}" |
|||
RESULT_VARIABLE download_result |
|||
${logging_params} |
|||
) |
|||
|
|||
if(NOT download_result EQUAL 0) |
|||
hunter_gate_internal_error("Configure project failed") |
|||
endif() |
|||
|
|||
hunter_gate_status_print( |
|||
"Initializing Hunter workspace (${HUNTER_GATE_SHA1})" |
|||
" ${HUNTER_GATE_URL}" |
|||
" -> ${dir}" |
|||
) |
|||
execute_process( |
|||
COMMAND "${CMAKE_COMMAND}" --build "${build_dir}" |
|||
WORKING_DIRECTORY "${dir}" |
|||
RESULT_VARIABLE download_result |
|||
${logging_params} |
|||
) |
|||
|
|||
if(NOT download_result EQUAL 0) |
|||
hunter_gate_internal_error("Build project failed") |
|||
endif() |
|||
|
|||
file(REMOVE_RECURSE "${build_dir}") |
|||
file(REMOVE_RECURSE "${cmakelists}") |
|||
|
|||
file(WRITE "${sha1_location}" "${HUNTER_GATE_SHA1}") |
|||
file(WRITE "${done_location}" "DONE") |
|||
|
|||
hunter_gate_status_debug("Finished") |
|||
endfunction() |
|||
|
|||
# Must be a macro so master file 'cmake/Hunter' can |
|||
# apply all variables easily just by 'include' command |
|||
# (otherwise PARENT_SCOPE magic needed) |
|||
macro(HunterGate) |
|||
if(HUNTER_GATE_DONE) |
|||
# variable HUNTER_GATE_DONE set explicitly for external project |
|||
# (see `hunter_download`) |
|||
set_property(GLOBAL PROPERTY HUNTER_GATE_DONE YES) |
|||
endif() |
|||
|
|||
# First HunterGate command will init Hunter, others will be ignored |
|||
get_property(_hunter_gate_done GLOBAL PROPERTY HUNTER_GATE_DONE SET) |
|||
|
|||
if(NOT HUNTER_ENABLED) |
|||
# Empty function to avoid error "unknown function" |
|||
function(hunter_add_package) |
|||
endfunction() |
|||
elseif(_hunter_gate_done) |
|||
hunter_gate_status_debug("Secondary HunterGate (use old settings)") |
|||
hunter_gate_self( |
|||
"${HUNTER_CACHED_ROOT}" |
|||
"${HUNTER_VERSION}" |
|||
"${HUNTER_SHA1}" |
|||
_hunter_self |
|||
) |
|||
include("${_hunter_self}/cmake/Hunter") |
|||
else() |
|||
set(HUNTER_GATE_LOCATION "${CMAKE_CURRENT_LIST_DIR}") |
|||
|
|||
string(COMPARE NOTEQUAL "${PROJECT_NAME}" "" _have_project_name) |
|||
if(_have_project_name) |
|||
hunter_gate_fatal_error( |
|||
"Please set HunterGate *before* 'project' command. " |
|||
"Detected project: ${PROJECT_NAME}" |
|||
WIKI "error.huntergate.before.project" |
|||
) |
|||
endif() |
|||
|
|||
cmake_parse_arguments( |
|||
HUNTER_GATE "LOCAL" "URL;SHA1;GLOBAL;FILEPATH" "" ${ARGV} |
|||
) |
|||
|
|||
string(COMPARE EQUAL "${HUNTER_GATE_SHA1}" "" _empty_sha1) |
|||
string(COMPARE EQUAL "${HUNTER_GATE_URL}" "" _empty_url) |
|||
string( |
|||
COMPARE |
|||
NOTEQUAL |
|||
"${HUNTER_GATE_UNPARSED_ARGUMENTS}" |
|||
"" |
|||
_have_unparsed |
|||
) |
|||
string(COMPARE NOTEQUAL "${HUNTER_GATE_GLOBAL}" "" _have_global) |
|||
string(COMPARE NOTEQUAL "${HUNTER_GATE_FILEPATH}" "" _have_filepath) |
|||
|
|||
if(_have_unparsed) |
|||
hunter_gate_user_error( |
|||
"HunterGate unparsed arguments: ${HUNTER_GATE_UNPARSED_ARGUMENTS}" |
|||
) |
|||
endif() |
|||
if(_empty_sha1) |
|||
hunter_gate_user_error("SHA1 suboption of HunterGate is mandatory") |
|||
endif() |
|||
if(_empty_url) |
|||
hunter_gate_user_error("URL suboption of HunterGate is mandatory") |
|||
endif() |
|||
if(_have_global) |
|||
if(HUNTER_GATE_LOCAL) |
|||
hunter_gate_user_error("Unexpected LOCAL (already has GLOBAL)") |
|||
endif() |
|||
if(_have_filepath) |
|||
hunter_gate_user_error("Unexpected FILEPATH (already has GLOBAL)") |
|||
endif() |
|||
endif() |
|||
if(HUNTER_GATE_LOCAL) |
|||
if(_have_global) |
|||
hunter_gate_user_error("Unexpected GLOBAL (already has LOCAL)") |
|||
endif() |
|||
if(_have_filepath) |
|||
hunter_gate_user_error("Unexpected FILEPATH (already has LOCAL)") |
|||
endif() |
|||
endif() |
|||
if(_have_filepath) |
|||
if(_have_global) |
|||
hunter_gate_user_error("Unexpected GLOBAL (already has FILEPATH)") |
|||
endif() |
|||
if(HUNTER_GATE_LOCAL) |
|||
hunter_gate_user_error("Unexpected LOCAL (already has FILEPATH)") |
|||
endif() |
|||
endif() |
|||
|
|||
hunter_gate_detect_root() # set HUNTER_GATE_ROOT |
|||
|
|||
# Beautify path, fix probable problems with windows path slashes |
|||
get_filename_component( |
|||
HUNTER_GATE_ROOT "${HUNTER_GATE_ROOT}" ABSOLUTE |
|||
) |
|||
hunter_gate_status_debug("HUNTER_ROOT: ${HUNTER_GATE_ROOT}") |
|||
if(NOT HUNTER_ALLOW_SPACES_IN_PATH) |
|||
string(FIND "${HUNTER_GATE_ROOT}" " " _contain_spaces) |
|||
if(NOT _contain_spaces EQUAL -1) |
|||
hunter_gate_fatal_error( |
|||
"HUNTER_ROOT (${HUNTER_GATE_ROOT}) contains spaces." |
|||
"Set HUNTER_ALLOW_SPACES_IN_PATH=ON to skip this error" |
|||
"(Use at your own risk!)" |
|||
WIKI "error.spaces.in.hunter.root" |
|||
) |
|||
endif() |
|||
endif() |
|||
|
|||
string( |
|||
REGEX |
|||
MATCH |
|||
"[0-9]+\\.[0-9]+\\.[0-9]+[-_a-z0-9]*" |
|||
HUNTER_GATE_VERSION |
|||
"${HUNTER_GATE_URL}" |
|||
) |
|||
string(COMPARE EQUAL "${HUNTER_GATE_VERSION}" "" _is_empty) |
|||
if(_is_empty) |
|||
set(HUNTER_GATE_VERSION "unknown") |
|||
endif() |
|||
|
|||
hunter_gate_self( |
|||
"${HUNTER_GATE_ROOT}" |
|||
"${HUNTER_GATE_VERSION}" |
|||
"${HUNTER_GATE_SHA1}" |
|||
_hunter_self |
|||
) |
|||
|
|||
set(_master_location "${_hunter_self}/cmake/Hunter") |
|||
if(EXISTS "${HUNTER_GATE_ROOT}/cmake/Hunter") |
|||
# Hunter downloaded manually (e.g. by 'git clone') |
|||
set(_unused "xxxxxxxxxx") |
|||
set(HUNTER_GATE_SHA1 "${_unused}") |
|||
set(HUNTER_GATE_VERSION "${_unused}") |
|||
else() |
|||
get_filename_component(_archive_id_location "${_hunter_self}/.." ABSOLUTE) |
|||
set(_done_location "${_archive_id_location}/DONE") |
|||
set(_sha1_location "${_archive_id_location}/SHA1") |
|||
|
|||
# Check Hunter already downloaded by HunterGate |
|||
if(NOT EXISTS "${_done_location}") |
|||
hunter_gate_download("${_archive_id_location}") |
|||
endif() |
|||
|
|||
if(NOT EXISTS "${_done_location}") |
|||
hunter_gate_internal_error("hunter_gate_download failed") |
|||
endif() |
|||
|
|||
if(NOT EXISTS "${_sha1_location}") |
|||
hunter_gate_internal_error("${_sha1_location} not found") |
|||
endif() |
|||
file(READ "${_sha1_location}" _sha1_value) |
|||
string(COMPARE EQUAL "${_sha1_value}" "${HUNTER_GATE_SHA1}" _is_equal) |
|||
if(NOT _is_equal) |
|||
hunter_gate_internal_error( |
|||
"Short SHA1 collision:" |
|||
" ${_sha1_value} (from ${_sha1_location})" |
|||
" ${HUNTER_GATE_SHA1} (HunterGate)" |
|||
) |
|||
endif() |
|||
if(NOT EXISTS "${_master_location}") |
|||
hunter_gate_user_error( |
|||
"Master file not found:" |
|||
" ${_master_location}" |
|||
"try to update Hunter/HunterGate" |
|||
) |
|||
endif() |
|||
endif() |
|||
include("${_master_location}") |
|||
set_property(GLOBAL PROPERTY HUNTER_GATE_DONE YES) |
|||
endif() |
|||
endmacro() |
@ -0,0 +1,4 @@ |
|||
# Require C++11. |
|||
set(CMAKE_CXX_STANDARD 11) |
|||
set(CMAKE_CXX_STANDARD_REQUIRED True) |
|||
set(CMAKE_CXX_EXTENSIONS Off) |
@ -0,0 +1,11 @@ |
|||
file(GLOB sources "*.c") |
|||
file(GLOB headers "*.h") |
|||
add_library(libcrypto777 ${sources} ${headers}) |
|||
target_compile_definitions(libcrypto777 PRIVATE USE_STATIC_NANOMSG) |
|||
target_link_libraries(libcrypto777 PUBLIC curl ${NANOMSG_LIBRARY}) |
|||
if(WIN32) |
|||
add_definitions(-DNATIVE_WINDOWS) |
|||
add_definitions(-DIGUANA_LOG2PACKETSIZE=20) |
|||
add_definitions(-DIGUANA_MAXPACKETSIZE=1572864) |
|||
include_directories("${CMAKE_SOURCE_DIR}/includes") |
|||
endif() |
@ -0,0 +1,4 @@ |
|||
file(GLOB sources "*.c") |
|||
file(GLOB headers "*.h") |
|||
add_library(libjpeg ${sources} ${headers}) |
|||
target_sources(libjpeg PRIVATE "unix/jmemname.c") |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
File diff suppressed because it is too large
@ -0,0 +1,3 @@ |
|||
#!/bin/bash |
|||
source userpass |
|||
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"autoprice\",\"base\":\"ETH\",\"rel\":\"KMD\",\"margin\":0.05,\"refbase\":\"ethereum\",\"refrel\":\"coinmarketcap\"}" |
@ -0,0 +1,3 @@ |
|||
#!/bin/bash |
|||
source userpass |
|||
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"buy\",\"base\":\"ETH\",\"rel\":\"KMD\",\"relvolume\":1,\"price\":300}" |
@ -0,0 +1,5 @@ |
|||
#!/bin/bash |
|||
source passphrase |
|||
source coins |
|||
./stop |
|||
iguana/exchanges/marketmaker "{\"netid\":9999,\"seednode\":\"5.9.253.204\",\"gui\":\"nogui\",\"client\":1, \"userhome\":\"/${HOME#"/"}\", \"passphrase\":\"$passphrase\", \"coins\":$coins}" & |
File diff suppressed because one or more lines are too long
@ -0,0 +1,5 @@ |
|||
#!/bin/bash |
|||
source userpass |
|||
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"enable\",\"coin\":\"ETH\"}" |
|||
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"enable\",\"coin\":\"KMD\"}" |
|||
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"enable\",\"coin\":\"ETOMIC\"}" |
@ -0,0 +1,3 @@ |
|||
#!/bin/bash |
|||
source userpass |
|||
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"orderbook\",\"base\":\"ETH\",\"rel\":\"KMD\"}" |
@ -0,0 +1 @@ |
|||
export passphrase="<put a very strong passphrase here>" |
@ -0,0 +1,5 @@ |
|||
#!/bin/bash |
|||
source passphrase |
|||
source coins |
|||
./stop |
|||
$1 iguana/exchanges/marketmaker "{\"netid\":9999,\"gui\":\"nogui\", \"profitmargin\":0.01, \"userhome\":\"/${HOME#"/"}\", \"passphrase\":\"$passphrase\", \"coins\":$coins}" & |
@ -0,0 +1,4 @@ |
|||
#!/bin/bash |
|||
source userpass |
|||
source passphrase |
|||
curl --url "http://127.0.0.1:7783" --data "{\"netid\":9999,\"seednode\":\"5.9.253.204\",\"userpass\":\"1d8b27b21efabcd96571cd56f91a40fb9aa4cc623d273c63bf9223dc6f8cd81f\",\"method\":\"passphrase\",\"passphrase\":\"$passphrase\",\"gui\":\"nogui\"}" |
@ -0,0 +1,3 @@ |
|||
#!/bin/bash |
|||
source userpass |
|||
curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"stop\"}" |
@ -0,0 +1,2 @@ |
|||
#export userpass="<put the userpass value from the first API call here>" |
|||
export userpass="c3d8c2a364b7d18c1f9d7321d017b92e9f9c791e4f5c741214fefdea8a071256" |
Binary file not shown.
@ -0,0 +1 @@ |
|||
curl --url "http://127.0.0.1:7776" --data "{\"coin\":\""${1}"\",\"agent\":\"iguana\",\"method\":\"splitfunds\",\"satoshis\":\"10000\",\"sendflag\":1,\"duplicates\":"${2}"}" |
@ -0,0 +1,45 @@ |
|||
#!/bin/bash |
|||
|
|||
#Check if libnanomsg-static.a file is already exists or not |
|||
if [[ "$OSTYPE" == "linux-gnu" ]]; then |
|||
echo "Linux" |
|||
file="../OSlibs/linux/$(uname -m)/libnanomsg-static.a" |
|||
makedir="../OSlibs/linux/$(uname -m)/" |
|||
copytarget="../OSlibs/linux/$(uname -m)/libnanomsg-static.a" |
|||
elif [[ "$OSTYPE" == "darwin"* ]]; then |
|||
# Mac OSX |
|||
echo "Mac OSX" |
|||
file="../OSlibs/osx/$(uname -m)/libnanomsg-static.a" |
|||
makedir="../OSlibs/osx/$(uname -m)/" |
|||
copytarget="../OSlibs/osx/$(uname -m)/libnanomsg-static.a" |
|||
fi |
|||
|
|||
if [ ! -f "$file" ] |
|||
then |
|||
echo "$0: File '${file}' not found." |
|||
#Download nanomsg library 1.0 stable |
|||
rm -rf nanomsgsrc |
|||
git clone https://github.com/nanomsg/nanomsg.git nanomsgsrc |
|||
|
|||
#Create destination folder |
|||
mkdir nanomsglib |
|||
|
|||
#Switch into nanomsgsrc folder |
|||
cd nanomsgsrc |
|||
|
|||
#Create build directory and switch into it |
|||
mkdir build && cd build |
|||
|
|||
#Compile |
|||
cmake .. -DCMAKE_INSTALL_PREFIX=../../nanomsglib/ -DCMAKE_BUILD_TYPE=Debug -DNN_STATIC_LIB=1 |
|||
cmake --build . |
|||
ctest -C Debug . |
|||
cmake --build . --target install |
|||
|
|||
cd ../.. |
|||
pwd |
|||
mkdir -p $makedir |
|||
cp -av nanomsglib/lib/libnanomsg.a $copytarget |
|||
fi |
|||
|
|||
|
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue