diff --git a/.gitignore b/.gitignore index 5c8b2443700..352d68e735e 100644 --- a/.gitignore +++ b/.gitignore @@ -106,3 +106,6 @@ compile_commands.json .clangd packages pkg_out +pkg +CMakeUserPresets.json +bld.rippled/ diff --git a/Builds/CMake/RippledRelease.cmake b/Builds/CMake/RippledRelease.cmake index 2b1cf3666fc..8e4dcfcd6d0 100644 --- a/Builds/CMake/RippledRelease.cmake +++ b/Builds/CMake/RippledRelease.cmake @@ -2,12 +2,6 @@ package/container targets - (optional) #]===================================================================] -# Early return if the `containers` directory is missing, -# e.g. when we are building a Conan package. -if(NOT EXISTS containers) - return() -endif() - if (is_root_project) if (NOT DOCKER) find_program (DOCKER docker) @@ -22,19 +16,7 @@ if (is_root_project) message (STATUS "using [${container_label}] as build container tag...") file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/packages) - if (is_linux) - execute_process (COMMAND id -u - OUTPUT_VARIABLE DOCKER_USER_ID - OUTPUT_STRIP_TRAILING_WHITESPACE) - message (STATUS "docker local user id: ${DOCKER_USER_ID}") - execute_process (COMMAND id -g - OUTPUT_VARIABLE DOCKER_GROUP_ID - OUTPUT_STRIP_TRAILING_WHITESPACE) - message (STATUS "docker local group id: ${DOCKER_GROUP_ID}") - endif () - if (DOCKER_USER_ID AND DOCKER_GROUP_ID) - set(map_user TRUE) - endif () + #[===================================================================[ rpm #]===================================================================] @@ -42,7 +24,7 @@ if (is_root_project) docker build --pull --build-arg GIT_COMMIT=${commit_hash} - -t rippled-rpm-builder:${container_label} + -t rippleci/rippled-rpm-builder:${container_label} $<$:--cache-from=${rpm_cache_from}> -f centos-builder/Dockerfile . WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Builds/containers @@ -52,12 +34,10 @@ if (is_root_project) SOURCES Builds/containers/centos-builder/Dockerfile Builds/containers/centos-builder/centos_setup.sh - Builds/containers/centos-builder/extras.sh Builds/containers/shared/update-rippled.sh Builds/containers/shared/update_sources.sh Builds/containers/shared/rippled.service Builds/containers/shared/rippled-reporting.service - Builds/containers/shared/build_deps.sh Builds/containers/packaging/rpm/rippled.spec Builds/containers/packaging/rpm/build_rpm.sh Builds/containers/packaging/rpm/50-rippled.preset @@ -69,8 +49,7 @@ if (is_root_project) docker run -v ${CMAKE_CURRENT_SOURCE_DIR}:/opt/rippled_bld/pkg/rippled -v ${CMAKE_CURRENT_BINARY_DIR}/packages:/opt/rippled_bld/pkg/out - "$<$:--volume=/etc/passwd:/etc/passwd;--volume=/etc/group:/etc/group;--user=${DOCKER_USER_ID}:${DOCKER_GROUP_ID}>" - -t rippled-rpm-builder:${container_label} + -t rippleci/rippled-rpm-builder:${container_label} /bin/bash -c "cp -fpu rippled/Builds/containers/packaging/rpm/build_rpm.sh . && ./build_rpm.sh" VERBATIM USES_TERMINAL @@ -92,9 +71,9 @@ if (is_root_project) add_custom_target (dpkg_container docker build --pull - --build-arg DIST_TAG=18.04 + --build-arg DIST_TAG=20.04 --build-arg GIT_COMMIT=${commit_hash} - -t rippled-dpkg-builder:${container_label} + -t rippleci/rippled-dpkg-builder:${container_label} $<$:--cache-from=${dpkg_cache_from}> -f ubuntu-builder/Dockerfile . WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Builds/containers @@ -128,10 +107,8 @@ if (is_root_project) Builds/containers/ubuntu-builder/ubuntu_setup.sh bin/getRippledInfo Builds/containers/shared/install_cmake.sh - Builds/containers/shared/install_boost.sh Builds/containers/shared/update-rippled.sh Builds/containers/shared/update_sources.sh - Builds/containers/shared/build_deps.sh Builds/containers/shared/rippled.service Builds/containers/shared/rippled-reporting.service Builds/containers/shared/rippled-logrotate @@ -142,8 +119,7 @@ if (is_root_project) docker run -v ${CMAKE_CURRENT_SOURCE_DIR}:/opt/rippled_bld/pkg/rippled -v ${CMAKE_CURRENT_BINARY_DIR}/packages:/opt/rippled_bld/pkg/out - "$<$:--volume=/etc/passwd:/etc/passwd;--volume=/etc/group:/etc/group;--user=${DOCKER_USER_ID}:${DOCKER_GROUP_ID}>" - -t rippled-dpkg-builder:${container_label} + -t rippleci/rippled-dpkg-builder:${container_label} /bin/bash -c "cp -fpu rippled/Builds/containers/packaging/dpkg/build_dpkg.sh . && ./build_dpkg.sh" VERBATIM USES_TERMINAL @@ -183,7 +159,7 @@ if (is_root_project) add_custom_target (ci_container docker build --pull - --build-arg DIST_TAG=18.04 + --build-arg DIST_TAG=20.04 --build-arg GIT_COMMIT=${commit_hash} --build-arg CI_USE=true -t rippled-ci-builder:${container_label} @@ -196,7 +172,6 @@ if (is_root_project) SOURCES Builds/containers/ubuntu-builder/Dockerfile Builds/containers/ubuntu-builder/ubuntu_setup.sh - Builds/containers/shared/build_deps.sh ) exclude_from_default (ci_container) else () diff --git a/Builds/containers/centos-builder/Dockerfile b/Builds/containers/centos-builder/Dockerfile index 26da564b525..ef5f80f7bfd 100644 --- a/Builds/containers/centos-builder/Dockerfile +++ b/Builds/containers/centos-builder/Dockerfile @@ -1,43 +1,26 @@ -FROM centos:7 +FROM rippleci/centos:7 ARG GIT_COMMIT=unknown ARG CI_USE=false LABEL git-commit=$GIT_COMMIT COPY centos-builder/centos_setup.sh /tmp/ -COPY shared/build_deps.sh /tmp/ COPY shared/install_cmake.sh /tmp/ -COPY centos-builder/extras.sh /tmp/ -COPY shared/install_boost.sh /tmp/ RUN chmod +x /tmp/centos_setup.sh && \ - chmod +x /tmp/build_deps.sh && \ - chmod +x /tmp/install_boost.sh && \ - chmod +x /tmp/install_cmake.sh && \ - chmod +x /tmp/extras.sh + chmod +x /tmp/install_cmake.sh RUN /tmp/centos_setup.sh -RUN /tmp/install_cmake.sh 3.16.1 /opt/local/cmake-3.16 +RUN /tmp/install_cmake.sh 3.16.3 /opt/local/cmake-3.16 RUN ln -s /opt/local/cmake-3.16 /opt/local/cmake ENV PATH="/opt/local/cmake/bin:$PATH" -# also install min supported cmake for testing -RUN if [ "${CI_USE}" = true ] ; then /tmp/install_cmake.sh 3.9.0 /opt/local/cmake-3.9; fi +# TODO: Install latest CMake for testing +RUN if [ "${CI_USE}" = true ] ; then /tmp/install_cmake.sh 3.16.3 /opt/local/cmake-3.16; fi -RUN source scl_source enable devtoolset-7 python27 && \ - /tmp/build_deps.sh -ENV BOOST_ROOT="/opt/local/boost/_INSTALLED_" -ENV PLANTUML_JAR="/opt/plantuml/plantuml.jar" -ENV OPENSSL_ROOT="/opt/local/openssl" -ENV GDB_ROOT="/opt/local/gdb" -RUN source scl_source enable devtoolset-7 python27 && \ - /tmp/extras.sh - -# prep files for package building RUN mkdir -m 777 -p /opt/rippled_bld/pkg + WORKDIR /opt/rippled_bld/pkg RUN mkdir -m 777 ./rpmbuild RUN mkdir -m 777 ./rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} COPY packaging/rpm/build_rpm.sh ./ CMD ./build_rpm.sh - - diff --git a/Builds/containers/centos-builder/centos_setup.sh b/Builds/containers/centos-builder/centos_setup.sh index a81226c2dd2..ea110058bb8 100755 --- a/Builds/containers/centos-builder/centos_setup.sh +++ b/Builds/containers/centos-builder/centos_setup.sh @@ -7,31 +7,16 @@ yum -y upgrade yum -y update yum -y install epel-release centos-release-scl yum -y install \ - wget curl time gcc-c++ time yum-utils autoconf automake pkgconfig libtool \ + wget curl time gcc-c++ yum-utils autoconf automake pkgconfig libtool \ libstdc++-static rpm-build gnupg which make cmake \ - devtoolset-7 devtoolset-7-gdb devtoolset-7-libasan-devel devtoolset-7-libtsan-devel devtoolset-7-libubsan-devel \ - devtoolset-8 devtoolset-8-gdb devtoolset-8-binutils devtoolset-8-libstdc++-devel \ - devtoolset-8-libasan-devel devtoolset-8-libtsan-devel devtoolset-8-libubsan-devel devtoolset-8-liblsan-devel \ + devtoolset-11 devtoolset-11-gdb devtoolset-11-binutils devtoolset-11-libstdc++-devel \ + devtoolset-11-libasan-devel devtoolset-11-libtsan-devel devtoolset-11-libubsan-devel devtoolset-11-liblsan-devel \ flex flex-devel bison bison-devel parallel \ ncurses ncurses-devel ncurses-libs graphviz graphviz-devel \ lzip p7zip bzip2 bzip2-devel lzma-sdk lzma-sdk-devel xz-devel \ zlib zlib-devel zlib-static texinfo openssl openssl-static \ jemalloc jemalloc-devel \ libicu-devel htop \ - python27-python rh-python35-python \ - python-devel python27-python-devel rh-python35-python-devel \ - python27 rh-python35 \ + rh-python38 \ ninja-build git svn \ - swig perl-Digest-MD5 python2-pip - -if [ "${CI_USE}" = true ] ; then - # TODO need permanent link - yum -y install ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora-secondary/updates/26/i386/Packages/p/python2-six-1.10.0-9.fc26.noarch.rpm - - yum -y install \ - llvm-toolset-7 llvm-toolset-7-runtime llvm-toolset-7-build llvm-toolset-7-clang \ - llvm-toolset-7-clang-analyzer llvm-toolset-7-clang-devel llvm-toolset-7-clang-libs \ - llvm-toolset-7-clang-tools-extra llvm-toolset-7-compiler-rt llvm-toolset-7-lldb \ - llvm-toolset-7-lldb-devel llvm-toolset-7-python-lldb - -fi + swig perl-Digest-MD5 diff --git a/Builds/containers/centos-builder/extras.sh b/Builds/containers/centos-builder/extras.sh deleted file mode 100755 index 8db373d0ca6..00000000000 --- a/Builds/containers/centos-builder/extras.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env bash -set -ex - -if [ "${CI_USE}" = true ] ; then - cd /tmp - wget https://ftp.gnu.org/gnu/gdb/gdb-8.3.1.tar.xz - tar xf gdb-8.3.1.tar.xz - cd gdb-8.3 - ./configure CFLAGS="-w -O2" CXXFLAGS="-std=gnu++11 -g -O2 -w" --prefix=/opt/local/gdb-8.3 - make -j$(nproc) - make install - ln -s /opt/local/gdb-8.3 /opt/local/gdb - cd .. - rm -f gdb-8.3.tar.xz - rm -rf gdb-8.3 - - # clang from source - cd /tmp - git clone https://github.com/llvm/llvm-project.git - cd llvm-project - git checkout llvmorg-9.0.0 - INSTALL=/opt/llvm-9/ - mkdir mybuilddir && cd mybuilddir - # TODO figure out necessary options - cmake ../llvm -G Ninja \ - -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_ENABLE_PROJECTS='clang;clang-tools-extra;libcxx;libcxxabi;lldb;compiler-rt;lld;polly' \ - -DCMAKE_INSTALL_PREFIX=${INSTALL} \ - -DLLVM_LIBDIR_SUFFIX=64 - cmake --build . --parallel --target install - cd /tmp - rm -rf llvm-project -fi diff --git a/Builds/containers/gitlab-ci/pkgbuild.yml b/Builds/containers/gitlab-ci/pkgbuild.yml index 53828ab779c..8a602c84cdc 100644 --- a/Builds/containers/gitlab-ci/pkgbuild.yml +++ b/Builds/containers/gitlab-ci/pkgbuild.yml @@ -11,11 +11,11 @@ variables: # these containers are built manually using the rippled # cmake build (container targets) and tagged/pushed so they # can be used here - RPM_CONTAINER_TAG: "2020-02-10" - RPM_CONTAINER_NAME: "rippled-rpm-builder" + RPM_CONTAINER_TAG: "2023-02-13" + RPM_CONTAINER_NAME: "rippleci/rippled-rpm-builder" RPM_CONTAINER_FULLNAME: "${RPM_CONTAINER_NAME}:${RPM_CONTAINER_TAG}" - DPKG_CONTAINER_TAG: "2020-02-10" - DPKG_CONTAINER_NAME: "rippled-dpkg-builder" + DPKG_CONTAINER_TAG: "2023-02-13" + DPKG_CONTAINER_NAME: "rippleci/rippled-dpkg-builder" DPKG_CONTAINER_FULLNAME: "${DPKG_CONTAINER_NAME}:${DPKG_CONTAINER_TAG}" ARTIFACTORY_HOST: "artifactory.ops.ripple.com" ARTIFACTORY_HUB: "${ARTIFACTORY_HOST}:6555" @@ -83,6 +83,7 @@ stages: ######################################################################### rpm_build: + timeout: "1h 30m" stage: build_packages <<: *dind_param artifacts: @@ -92,6 +93,7 @@ rpm_build: - . ./Builds/containers/gitlab-ci/build_package.sh rpm dpkg_build: + timeout: "1h 30m" stage: build_packages <<: *dind_param artifacts: @@ -179,94 +181,54 @@ centos_7_smoketest: stage: smoketest dependencies: - rpm_build - - rpm_sign image: name: artifactory.ops.ripple.com/centos:7 <<: *run_local_smoketest -# TODO: Remove "allow_failure" when tests fixed rocky_8_smoketest: stage: smoketest dependencies: - rpm_build - - rpm_sign image: name: rockylinux/rockylinux:8 <<: *run_local_smoketest - allow_failure: true -fedora_34_smoketest: +fedora_37_smoketest: stage: smoketest dependencies: - rpm_build - - rpm_sign image: - name: artifactory.ops.ripple.com/fedora:34 + name: artifactory.ops.ripple.com/fedora:37 <<: *run_local_smoketest - allow_failure: true -fedora_35_smoketest: +fedora_38_smoketest: stage: smoketest dependencies: - rpm_build - - rpm_sign - image: - name: artifactory.ops.ripple.com/fedora:35 - <<: *run_local_smoketest - allow_failure: true - -ubuntu_18_smoketest: - stage: smoketest - dependencies: - - dpkg_build - - dpkg_sign image: - name: artifactory.ops.ripple.com/ubuntu:18.04 + name: artifactory.ops.ripple.com/fedora:38 <<: *run_local_smoketest ubuntu_20_smoketest: stage: smoketest dependencies: - dpkg_build - - dpkg_sign image: name: artifactory.ops.ripple.com/ubuntu:20.04 <<: *run_local_smoketest -# TODO: remove "allow_failure" when 22.04 released in 4/2022... ubuntu_22_smoketest: stage: smoketest dependencies: - dpkg_build - - dpkg_sign image: name: artifactory.ops.ripple.com/ubuntu:22.04 <<: *run_local_smoketest - allow_failure: true - -debian_9_smoketest: - stage: smoketest - dependencies: - - dpkg_build - - dpkg_sign - image: - name: artifactory.ops.ripple.com/debian:9 - <<: *run_local_smoketest - -debian_10_smoketest: - stage: smoketest - dependencies: - - dpkg_build - - dpkg_sign - image: - name: artifactory.ops.ripple.com/debian:10 - <<: *run_local_smoketest debian_11_smoketest: stage: smoketest dependencies: - dpkg_build - - dpkg_sign image: name: artifactory.ops.ripple.com/debian:11 <<: *run_local_smoketest @@ -377,43 +339,28 @@ rocky_8_verify_repo_test: - rpm_sign <<: *only_primary <<: *run_repo_smoketest - allow_failure: true -fedora_34_verify_repo_test: +fedora_37_verify_repo_test: stage: verify_from_test variables: RPM_REPO: "rippled-rpm-test-mirror" image: - name: artifactory.ops.ripple.com/fedora:34 + name: artifactory.ops.ripple.com/fedora:37 dependencies: - rpm_sign <<: *only_primary <<: *run_repo_smoketest - allow_failure: true -fedora_35_verify_repo_test: +fedora_38_verify_repo_test: stage: verify_from_test variables: RPM_REPO: "rippled-rpm-test-mirror" image: - name: artifactory.ops.ripple.com/fedora:35 + name: artifactory.ops.ripple.com/fedora:38 dependencies: - rpm_sign <<: *only_primary <<: *run_repo_smoketest - allow_failure: true - -ubuntu_18_verify_repo_test: - stage: verify_from_test - variables: - DISTRO: "bionic" - DEB_REPO: "rippled-deb-test-mirror" - image: - name: artifactory.ops.ripple.com/ubuntu:18.04 - dependencies: - - dpkg_sign - <<: *only_primary - <<: *run_repo_smoketest ubuntu_20_verify_repo_test: stage: verify_from_test @@ -427,7 +374,6 @@ ubuntu_20_verify_repo_test: <<: *only_primary <<: *run_repo_smoketest -# TODO: remove "allow_failure" when 22.04 released in 4/2022... ubuntu_22_verify_repo_test: stage: verify_from_test variables: @@ -439,31 +385,6 @@ ubuntu_22_verify_repo_test: - dpkg_sign <<: *only_primary <<: *run_repo_smoketest - allow_failure: true - -debian_9_verify_repo_test: - stage: verify_from_test - variables: - DISTRO: "stretch" - DEB_REPO: "rippled-deb-test-mirror" - image: - name: artifactory.ops.ripple.com/debian:9 - dependencies: - - dpkg_sign - <<: *only_primary - <<: *run_repo_smoketest - -debian_10_verify_repo_test: - stage: verify_from_test - variables: - DISTRO: "buster" - DEB_REPO: "rippled-deb-test-mirror" - image: - name: artifactory.ops.ripple.com/debian:10 - dependencies: - - dpkg_sign - <<: *only_primary - <<: *run_repo_smoketest debian_11_verify_repo_test: stage: verify_from_test @@ -542,53 +463,38 @@ centos_7_verify_repo_prod: <<: *only_primary <<: *run_repo_smoketest -rocky_8_verify_repo_test: - stage: verify_from_test +rocky_8_verify_repo_prod: + stage: verify_from_prod variables: - RPM_REPO: "rippled-rpm-test-mirror" + RPM_REPO: "rippled-rpm" image: name: rockylinux/rockylinux:8 dependencies: - rpm_sign <<: *only_primary <<: *run_repo_smoketest - allow_failure: true -fedora_34_verify_repo_prod: +fedora_37_verify_repo_prod: stage: verify_from_prod variables: RPM_REPO: "rippled-rpm" image: - name: artifactory.ops.ripple.com/fedora:34 + name: artifactory.ops.ripple.com/fedora:37 dependencies: - rpm_sign <<: *only_primary <<: *run_repo_smoketest - allow_failure: true -fedora_35_verify_repo_prod: +fedora_38_verify_repo_prod: stage: verify_from_prod variables: RPM_REPO: "rippled-rpm" image: - name: artifactory.ops.ripple.com/fedora:35 + name: artifactory.ops.ripple.com/fedora:38 dependencies: - rpm_sign <<: *only_primary <<: *run_repo_smoketest - allow_failure: true - -ubuntu_18_verify_repo_prod: - stage: verify_from_prod - variables: - DISTRO: "bionic" - DEB_REPO: "rippled-deb" - image: - name: artifactory.ops.ripple.com/ubuntu:18.04 - dependencies: - - dpkg_sign - <<: *only_primary - <<: *run_repo_smoketest ubuntu_20_verify_repo_prod: stage: verify_from_prod @@ -602,7 +508,6 @@ ubuntu_20_verify_repo_prod: <<: *only_primary <<: *run_repo_smoketest -# TODO: remove "allow_failure" when 22.04 released in 4/2022... ubuntu_22_verify_repo_prod: stage: verify_from_prod variables: @@ -614,31 +519,6 @@ ubuntu_22_verify_repo_prod: - dpkg_sign <<: *only_primary <<: *run_repo_smoketest - allow_failure: true - -debian_9_verify_repo_prod: - stage: verify_from_prod - variables: - DISTRO: "stretch" - DEB_REPO: "rippled-deb" - image: - name: artifactory.ops.ripple.com/debian:9 - dependencies: - - dpkg_sign - <<: *only_primary - <<: *run_repo_smoketest - -debian_10_verify_repo_prod: - stage: verify_from_prod - variables: - DISTRO: "buster" - DEB_REPO: "rippled-deb" - image: - name: artifactory.ops.ripple.com/debian:10 - dependencies: - - dpkg_sign - <<: *only_primary - <<: *run_repo_smoketest debian_11_verify_repo_prod: stage: verify_from_prod @@ -693,11 +573,9 @@ build_centos_container: <<: *dind_param script: - . ./Builds/containers/gitlab-ci/build_container.sh rpm - allow_failure: true build_ubuntu_container: stage: build_containers <<: *dind_param script: - . ./Builds/containers/gitlab-ci/build_container.sh dpkg - allow_failure: true diff --git a/Builds/containers/gitlab-ci/push_to_artifactory.sh b/Builds/containers/gitlab-ci/push_to_artifactory.sh index fc60567056d..255f4247ae0 100644 --- a/Builds/containers/gitlab-ci/push_to_artifactory.sh +++ b/Builds/containers/gitlab-ci/push_to_artifactory.sh @@ -14,18 +14,17 @@ cd $TOPDIR cd build/dpkg/packages CURLARGS="-sk -X${action} -urippled:${ARTIFACTORY_DEPLOY_KEY_RIPPLED}" RIPPLED_PKG=$(ls rippled_*.deb) -RIPPLED_DEV_PKG=$(ls rippled-dev_*.deb) RIPPLED_REPORTING_PKG=$(ls rippled-reporting_*.deb) -RIPPLED_DBG_PKG=$(ls rippled-dbgsym_*.deb) -RIPPLED_REPORTING_DBG_PKG=$(ls rippled-reporting-dbgsym_*.deb) +RIPPLED_DBG_PKG=$(ls rippled-dbgsym_*.*deb) +RIPPLED_REPORTING_DBG_PKG=$(ls rippled-reporting-dbgsym_*.*deb) # TODO - where to upload src tgz? RIPPLED_SRC=$(ls rippled_*.orig.tar.gz) DEB_MATRIX=";deb.component=${COMPONENT};deb.architecture=amd64" -for dist in stretch buster bullseye bionic focal jammy; do +for dist in bullseye focal jammy; do DEB_MATRIX="${DEB_MATRIX};deb.distribution=${dist}" done echo "{ \"debs\": {" > "${TOPDIR}/files.info" -for deb in ${RIPPLED_PKG} ${RIPPLED_DEV_PKG} ${RIPPLED_DBG_PKG} ${RIPPLED_REPORTING_PKG} ${RIPPLED_REPORTING_DBG_PKG}; do +for deb in ${RIPPLED_PKG} ${RIPPLED_DBG_PKG} ${RIPPLED_REPORTING_PKG} ${RIPPLED_REPORTING_DBG_PKG}; do # first item doesn't get a comma separator if [ $deb != $RIPPLED_PKG ] ; then echo "," >> "${TOPDIR}/files.info" diff --git a/Builds/containers/gitlab-ci/smoketest.sh b/Builds/containers/gitlab-ci/smoketest.sh index 267c0aa7b53..32a8e3407f6 100644 --- a/Builds/containers/gitlab-ci/smoketest.sh +++ b/Builds/containers/gitlab-ci/smoketest.sh @@ -81,8 +81,10 @@ else elif [ "${install_from}" = "local" ] ; then # cached pkg install pkgs=("yum-utils openssl-static zlib-static") - if [ "$ID" = "rocky" ]; then - sed -i 's/enabled=0/enabled=1/g' /etc/yum.repos.d/Rocky-PowerTools.repo + if [[ "$ID" =~ rocky|fedora ]]; then + if [[ "$ID" =~ "rocky" ]]; then + sed -i 's/enabled=0/enabled=1/g' /etc/yum.repos.d/Rocky-PowerTools.repo + fi pkgs="${pkgs[@]/openssl-static}" fi yum install -y $pkgs diff --git a/Builds/containers/packaging/dpkg/build_dpkg.sh b/Builds/containers/packaging/dpkg/build_dpkg.sh index 3c73f1314e2..fb67ea2ee10 100755 --- a/Builds/containers/packaging/dpkg/build_dpkg.sh +++ b/Builds/containers/packaging/dpkg/build_dpkg.sh @@ -15,7 +15,7 @@ RIPPLED_DPKG_VERSION=$(echo "${RIPPLED_VERSION}" | sed 's!-!~!g') # TODO - decide how to handle the trailing/release # version here (hardcoded to 1). Does it ever need to change? RIPPLED_DPKG_FULL_VERSION="${RIPPLED_DPKG_VERSION}-1" - +git config --global --add safe.directory /opt/rippled_bld/pkg/rippled cd /opt/rippled_bld/pkg/rippled if [[ -n $(git status --porcelain) ]]; then git status @@ -45,8 +45,8 @@ CHANGELOG # PATH must be preserved for our more modern cmake in /opt/local # TODO : consider allowing lintian to run in future ? export DH_BUILD_DDEBS=1 -export CC=gcc-8 -export CXX=g++-8 +export CC=gcc-11 +export CXX=g++-11 debuild --no-lintian --preserve-envvar PATH --preserve-env -us -uc rc=$?; if [[ $rc != 0 ]]; then error "error building dpkg" @@ -54,7 +54,6 @@ fi cd .. # copy artifacts -cp rippled-dev_${RIPPLED_DPKG_FULL_VERSION}_amd64.deb ${PKG_OUTDIR} cp rippled-reporting_${RIPPLED_DPKG_FULL_VERSION}_amd64.deb ${PKG_OUTDIR} cp rippled_${RIPPLED_DPKG_FULL_VERSION}_amd64.deb ${PKG_OUTDIR} cp rippled_${RIPPLED_DPKG_FULL_VERSION}.dsc ${PKG_OUTDIR} @@ -84,15 +83,12 @@ DBG_SHA256=$(cat shasums | \ grep "rippled-dbgsym_${RIPPLED_DPKG_VERSION}-1_amd64.*" | cut -d " " -f 1) REPORTING_DBG_SHA256=$(cat shasums | \ grep "rippled-reporting-dbgsym_${RIPPLED_DPKG_VERSION}-1_amd64.*" | cut -d " " -f 1) -DEV_SHA256=$(cat shasums | \ - grep "rippled-dev_${RIPPLED_DPKG_VERSION}-1_amd64.deb" | cut -d " " -f 1) REPORTING_SHA256=$(cat shasums | \ grep "rippled-reporting_${RIPPLED_DPKG_VERSION}-1_amd64.deb" | cut -d " " -f 1) SRC_SHA256=$(cat shasums | \ grep "rippled_${RIPPLED_DPKG_VERSION}.orig.tar.gz" | cut -d " " -f 1) echo "deb_sha256=${DEB_SHA256}" >> ${PKG_OUTDIR}/build_vars echo "dbg_sha256=${DBG_SHA256}" >> ${PKG_OUTDIR}/build_vars -echo "dev_sha256=${DEV_SHA256}" >> ${PKG_OUTDIR}/build_vars echo "reporting_sha256=${REPORTING_SHA256}" >> ${PKG_OUTDIR}/build_vars echo "reporting_dbg_sha256=${REPORTING_DBG_SHA256}" >> ${PKG_OUTDIR}/build_vars echo "src_sha256=${SRC_SHA256}" >> ${PKG_OUTDIR}/build_vars diff --git a/Builds/containers/packaging/dpkg/debian/control b/Builds/containers/packaging/dpkg/debian/control index 7e55143334c..b840eb228be 100644 --- a/Builds/containers/packaging/dpkg/debian/control +++ b/Builds/containers/packaging/dpkg/debian/control @@ -17,11 +17,3 @@ Architecture: any Multi-Arch: foreign Depends: ${misc:Depends}, ${shlibs:Depends} Description: rippled reporting daemon - -Package: rippled-dev -Section: devel -Recommends: rippled (= ${binary:Version}) -Architecture: any -Multi-Arch: same -Depends: ${misc:Depends}, ${shlibs:Depends}, libprotobuf-dev, libprotoc-dev, protobuf-compiler -Description: development files for applications using xrpl core library (serialize + sign) diff --git a/Builds/containers/packaging/dpkg/debian/rippled.install b/Builds/containers/packaging/dpkg/debian/rippled.install index ac9d946294e..3ce9f60fb3a 100644 --- a/Builds/containers/packaging/dpkg/debian/rippled.install +++ b/Builds/containers/packaging/dpkg/debian/rippled.install @@ -5,4 +5,4 @@ opt/ripple/bin/getRippledInfo opt/ripple/etc/rippled.cfg opt/ripple/etc/validators.txt opt/ripple/etc/update-rippled-cron -etc/logrotate.d/rippled \ No newline at end of file +etc/logrotate.d/rippled diff --git a/Builds/containers/packaging/dpkg/debian/rules b/Builds/containers/packaging/dpkg/debian/rules index f7c8123bd1c..83af329cd6d 100755 --- a/Builds/containers/packaging/dpkg/debian/rules +++ b/Builds/containers/packaging/dpkg/debian/rules @@ -16,31 +16,46 @@ override_dh_systemd_start: override_dh_auto_configure: env - rm -rf bld && mkdir -p bld/rippled - cd bld/rippled && \ - cmake ../.. -G Ninja \ - -DCMAKE_INSTALL_PREFIX=/opt/ripple \ + rm -rf bld + + conan export external/snappy snappy/1.1.9@ + + conan install . \ + --install-folder bld/rippled \ + --build missing \ + --settings build_type=Release + + cmake -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \ + -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/opt/ripple \ -Dstatic=ON \ -Dunity=OFF \ + -DCMAKE_VERBOSE_MAKEFILE=ON \ -Dvalidator_keys=ON \ - -Dunity=OFF \ - -DCMAKE_VERBOSE_MAKEFILE=OFF + -B bld/rippled + conan install . \ + --install-folder bld/rippled-reporting \ + --build missing \ + --settings build_type=Release \ + --settings compiler.cppstd=17 \ + --options reporting=True - cmake -S . \ - -B bld/rippled-reporting \ + cmake -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \ -G Ninja \ - -DCMAKE_INSTALL_PREFIX=/opt/rippled-reporting \ -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/opt/rippled-reporting \ -Dstatic=ON \ -Dunity=OFF \ - -DCMAKE_VERBOSE_MAKEFILE=OFF \ - -Dreporting=ON + -DCMAKE_VERBOSE_MAKEFILE=ON \ + -Dreporting=ON \ + -B bld/rippled-reporting override_dh_auto_build: - cmake --build bld/rippled --target rippled --target validator-keys --parallel - cmake --build bld/rippled-reporting --target rippled --parallel + cmake --build bld/rippled --target rippled --target validator-keys -j${nproc} + + cmake --build bld/rippled-reporting --target rippled -j${nproc} override_dh_auto_install: cmake --install bld/rippled --prefix debian/tmp/opt/ripple @@ -52,10 +67,10 @@ override_dh_auto_install: rm -rf debian/tmp/opt/ripple/lib64/cmake/date mkdir -p debian/tmp/opt/rippled-reporting/etc + mkdir -p debian/tmp/opt/rippled-reporting/bin cp cfg/validators-example.txt debian/tmp/opt/rippled-reporting/etc/validators.txt - install -D bld/rippled/validator-keys/validator-keys debian/tmp/opt/rippled-reporting/bin/validator-keys sed -E 's/rippled?/rippled-reporting/g' Builds/containers/shared/update-rippled.sh > debian/tmp/opt/rippled-reporting/bin/update-rippled-reporting.sh sed -E 's/rippled?/rippled-reporting/g' bin/getRippledInfo > debian/tmp/opt/rippled-reporting/bin/getRippledReportingInfo sed -E 's/rippled?/rippled-reporting/g' Builds/containers/shared/update-rippled-cron > debian/tmp/opt/rippled-reporting/etc/update-rippled-reporting-cron - sed -E 's/rippled?/rippled-reporting/g' Builds/containers/shared/rippled-logrotate > debian/tmp/etc/logrotate.d/rippled-reporting \ No newline at end of file + sed -E 's/rippled?/rippled-reporting/g' Builds/containers/shared/rippled-logrotate > debian/tmp/etc/logrotate.d/rippled-reporting diff --git a/Builds/containers/packaging/rpm/build_rpm.sh b/Builds/containers/packaging/rpm/build_rpm.sh index f0141e9ff53..57e576b510b 100755 --- a/Builds/containers/packaging/rpm/build_rpm.sh +++ b/Builds/containers/packaging/rpm/build_rpm.sh @@ -29,17 +29,20 @@ if [[ $RPM_PATCH ]]; then fi cd /opt/rippled_bld/pkg/rippled + if [[ -n $(git status --porcelain) ]]; then git status error "Unstaged changes in this repo - please commit first" fi + git archive --format tar.gz --prefix rippled/ -o ../rpmbuild/SOURCES/rippled.tar.gz HEAD -# TODO include validator-keys sources + cd .. -source /opt/rh/devtoolset-8/enable +source /opt/rh/devtoolset-11/enable rpmbuild --define "_topdir ${PWD}/rpmbuild" -ba rippled.spec + rc=$?; if [[ $rc != 0 ]]; then error "error building rpm" fi diff --git a/Builds/containers/packaging/rpm/rippled.spec b/Builds/containers/packaging/rpm/rippled.spec index 1ad2e278bf8..fe451d645d4 100644 --- a/Builds/containers/packaging/rpm/rippled.spec +++ b/Builds/containers/packaging/rpm/rippled.spec @@ -36,16 +36,64 @@ History server for XRP Ledger %setup -c -n rippled %build +rm -rf ~/.conan/profiles/default + +cp /opt/libcstd/libstdc++.so.6.0.22 /usr/lib64 +cp /opt/libcstd/libstdc++.so.6.0.22 /lib64 +ln -sf /usr/lib64/libstdc++.so.6.0.22 /usr/lib64/libstdc++.so.6 +ln -sf /lib64/libstdc++.so.6.0.22 /usr/lib64/libstdc++.so.6 + +source /opt/rh/rh-python38/enable +pip install "conan<2" +conan profile new default --detect +conan profile update settings.compiler.libcxx=libstdc++11 default +conan profile update settings.compiler.cppstd=20 default + cd rippled + mkdir -p bld.rippled +conan export external/snappy snappy/1.1.9@ + pushd bld.rippled -cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX=%{_prefix} -DCMAKE_BUILD_TYPE=Release -Dunity=OFF -Dstatic=true -DCMAKE_VERBOSE_MAKEFILE=OFF -Dvalidator_keys=ON +conan install .. \ + --settings build_type=Release \ + --output-folder . \ + --build missing + +cmake -G Ninja \ + -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \ + -DCMAKE_INSTALL_PREFIX=%{_prefix} \ + -DCMAKE_BUILD_TYPE=Release \ + -Dunity=OFF \ + -Dstatic=ON \ + -Dvalidator_keys=ON \ + -DCMAKE_VERBOSE_MAKEFILE=ON \ + .. + cmake --build . --parallel $(nproc) --target rippled --target validator-keys popd mkdir -p bld.rippled-reporting -cd bld.rippled-reporting -cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX=%{_prefix}-reporting -DCMAKE_BUILD_TYPE=Release -Dunity=OFF -Dstatic=true -DCMAKE_VERBOSE_MAKEFILE=OFF -Dreporting=ON +pushd bld.rippled-reporting + +conan install .. \ + --settings build_type=Release \ + --output-folder . \ + --build missing \ + --settings compiler.cppstd=17 \ + --options reporting=True + +cmake -G Ninja \ + -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \ + -DCMAKE_INSTALL_PREFIX=%{_prefix} \ + -DCMAKE_BUILD_TYPE=Release \ + -Dunity=OFF \ + -Dstatic=ON \ + -Dvalidator_keys=ON \ + -Dreporting=ON \ + -DCMAKE_VERBOSE_MAKEFILE=ON \ + .. + cmake --build . --parallel $(nproc) --target rippled %pre @@ -53,13 +101,18 @@ test -e /etc/pki/tls || { mkdir -p /etc/pki; ln -s /usr/lib/ssl /etc/pki/tls; } %install rm -rf $RPM_BUILD_ROOT -DESTDIR=$RPM_BUILD_ROOT cmake --build rippled/bld.rippled --target install -- -v -rm -rf ${RPM_BUILD_ROOT}/%{_prefix}/lib64/cmake/date +DESTDIR=$RPM_BUILD_ROOT cmake --build rippled/bld.rippled --target install #-- -v +mkdir -p $RPM_BUILD_ROOT +rm -rf ${RPM_BUILD_ROOT}/%{_prefix}/lib64/ install -d ${RPM_BUILD_ROOT}/etc/opt/ripple install -d ${RPM_BUILD_ROOT}/usr/local/bin -ln -s %{_prefix}/etc/rippled.cfg ${RPM_BUILD_ROOT}/etc/opt/ripple/rippled.cfg -ln -s %{_prefix}/etc/validators.txt ${RPM_BUILD_ROOT}/etc/opt/ripple/validators.txt -ln -s %{_prefix}/bin/rippled ${RPM_BUILD_ROOT}/usr/local/bin/rippled + +install -D ./rippled/cfg/rippled-example.cfg ${RPM_BUILD_ROOT}/%{_prefix}/etc/rippled.cfg +install -D ./rippled/cfg/validators-example.txt ${RPM_BUILD_ROOT}/%{_prefix}/etc/validators.txt + +ln -sf %{_prefix}/etc/rippled.cfg ${RPM_BUILD_ROOT}/etc/opt/ripple/rippled.cfg +ln -sf %{_prefix}/etc/validators.txt ${RPM_BUILD_ROOT}/etc/opt/ripple/validators.txt +ln -sf %{_prefix}/bin/rippled ${RPM_BUILD_ROOT}/usr/local/bin/rippled install -D rippled/bld.rippled/validator-keys/validator-keys ${RPM_BUILD_ROOT}%{_bindir}/validator-keys install -D ./rippled/Builds/containers/shared/rippled.service ${RPM_BUILD_ROOT}/usr/lib/systemd/system/rippled.service install -D ./rippled/Builds/containers/packaging/rpm/50-rippled.preset ${RPM_BUILD_ROOT}/usr/lib/systemd/system-preset/50-rippled.preset @@ -141,6 +194,7 @@ chmod -x /usr/lib/systemd/system/rippled-reporting.service %config(noreplace) /etc/logrotate.d/rippled %config(noreplace) /usr/lib/systemd/system/rippled.service %config(noreplace) /usr/lib/systemd/system-preset/50-rippled.preset + %dir /var/log/rippled/ %dir /var/lib/rippled/ diff --git a/Builds/containers/shared/build_deps.sh b/Builds/containers/shared/build_deps.sh deleted file mode 100755 index 8e11d01508f..00000000000 --- a/Builds/containers/shared/build_deps.sh +++ /dev/null @@ -1,147 +0,0 @@ -#!/usr/bin/env bash -set -ex - -function build_boost() -{ - local boost_ver=$1 - local do_link=$2 - local boost_path=$(echo "${boost_ver}" | sed -e 's!\.!_!g') - mkdir -p /opt/local - cd /opt/local - BOOST_ROOT=/opt/local/boost_${boost_path} - BOOST_URL="https://boostorg.jfrog.io/artifactory/main/release/${boost_ver}/source/boost_${boost_path}.tar.gz" - BOOST_BUILD_ALL=true - . /tmp/install_boost.sh - if [ "$do_link" = true ] ; then - ln -s ./boost_${boost_path} boost - fi -} - -build_boost "1.70.0" true - -# installed in opt, so won't be used -# unless specified by OPENSSL_ROOT_DIR -cd /tmp -OPENSSL_VER=1.1.1d -wget https://www.openssl.org/source/openssl-${OPENSSL_VER}.tar.gz -tar xf openssl-${OPENSSL_VER}.tar.gz -cd openssl-${OPENSSL_VER} -# NOTE: add -g to the end of the following line if we want debug symbols for openssl -SSLDIR=$(openssl version -d | cut -d: -f2 | tr -d [:space:]\") -./config -fPIC --prefix=/opt/local/openssl --openssldir=${SSLDIR} zlib shared -make -j$(nproc) >> make_output.txt 2>&1 -make install >> make_output.txt 2>&1 -cd .. -rm -f openssl-${OPENSSL_VER}.tar.gz -rm -rf openssl-${OPENSSL_VER} -LD_LIBRARY_PATH=${LD_LIBRARY_PATH:-}:/opt/local/openssl/lib /opt/local/openssl/bin/openssl version -a - -cd /tmp -wget https://libarchive.org/downloads/libarchive-3.4.1.tar.gz -tar xzf libarchive-3.4.1.tar.gz -cd libarchive-3.4.1 -mkdir _bld && cd _bld -cmake -DCMAKE_BUILD_TYPE=Release .. -make -j$(nproc) >> make_output.txt 2>&1 -make install >> make_output.txt 2>&1 -cd ../.. -rm -f libarchive-3.4.1.tar.gz -rm -rf libarchive-3.4.1 - -cd /tmp -wget https://github.com/protocolbuffers/protobuf/releases/download/v3.10.1/protobuf-all-3.10.1.tar.gz -tar xf protobuf-all-3.10.1.tar.gz -cd protobuf-3.10.1 -./autogen.sh -./configure -make -j$(nproc) >> make_output.txt 2>&1 -make install >> make_output.txt 2>&1 -ldconfig -cd .. -rm -f protobuf-all-3.10.1.tar.gz -rm -rf protobuf-3.10.1 - -cd /tmp -wget https://c-ares.haxx.se/download/c-ares-1.15.0.tar.gz -tar xf c-ares-1.15.0.tar.gz -cd c-ares-1.15.0 -mkdir _bld && cd _bld -cmake \ - -DHAVE_LIBNSL=OFF \ - -DCMAKE_BUILD_TYPE=Release \ - -DCARES_STATIC=ON \ - -DCARES_SHARED=OFF \ - -DCARES_INSTALL=ON \ - -DCARES_STATIC_PIC=ON \ - -DCARES_BUILD_TOOLS=OFF \ - -DCARES_BUILD_TESTS=OFF \ - -DCARES_BUILD_CONTAINER_TESTS=OFF \ - .. -make -j$(nproc) >> make_output.txt 2>&1 -make install >> make_output.txt 2>&1 -cd ../.. -rm -f c-ares-1.15.0.tar.gz -rm -rf c-ares-1.15.0 - -cd /tmp -wget https://github.com/grpc/grpc/archive/v1.25.0.tar.gz -tar xf v1.25.0.tar.gz -cd grpc-1.25.0 -mkdir _bld && cd _bld -cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_SHARED_LIBS=OFF \ - -DgRPC_ZLIB_PROVIDER=package \ - -DgRPC_CARES_PROVIDER=package \ - -DgRPC_SSL_PROVIDER=package \ - -DgRPC_PROTOBUF_PROVIDER=package \ - -DProtobuf_USE_STATIC_LIBS=ON \ - .. -make -j$(nproc) >> make_output.txt 2>&1 -make install >> make_output.txt 2>&1 -cd ../.. -rm -f xf v1.25.0.tar.gz -rm -rf grpc-1.25.0 - -if [ "${CI_USE}" = true ] ; then - - build_boost "1.71.0" false - - cd /tmp - wget https://github.com/doxygen/doxygen/archive/Release_1_8_16.tar.gz - tar xf Release_1_8_16.tar.gz - cd doxygen-Release_1_8_16 - mkdir build - cd build - cmake -G "Unix Makefiles" .. - make -j$(nproc) >> make_output.txt 2>&1 - make install >> make_output.txt 2>&1 - cd ../.. - rm -f Release_1_8_16.tar.gz - rm -rf doxygen-Release_1_8_16 - - mkdir -p /opt/plantuml - wget -O /opt/plantuml/plantuml.jar https://downloads.sourceforge.net/project/plantuml/plantuml.jar - - cd /tmp - wget https://github.com/linux-test-project/lcov/releases/download/v1.14/lcov-1.14.tar.gz - tar xfz lcov-1.14.tar.gz - cd lcov-1.14 - make install PREFIX=/usr/local - cd .. - rm -r lcov-1.14 lcov-1.14.tar.gz - - cd /tmp - wget https://github.com/ccache/ccache/releases/download/v3.7.6/ccache-3.7.6.tar.gz - tar xf ccache-3.7.6.tar.gz - cd ccache-3.7.6 - ./configure --prefix=/usr/local - make >> make_output.txt 2>&1 - make install >> make_output.txt 2>&1 - cd .. - rm -f ccache-3.7.6.tar.gz - rm -rf ccache-3.7.6 - - pip install requests - pip install https://github.com/codecov/codecov-python/archive/master.zip -fi diff --git a/Builds/containers/shared/install_boost.sh b/Builds/containers/shared/install_boost.sh deleted file mode 100755 index 08be7ee6e51..00000000000 --- a/Builds/containers/shared/install_boost.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env bash -# Assumptions: -# 1) BOOST_ROOT and BOOST_URL are already defined, -# and contain valid values. BOOST_URL2 may be defined -# as a fallback. BOOST_WGET_OPTIONS may be defined with -# retry options if the download(s) fail on the first try. -# 2) The last namepart of BOOST_ROOT matches the -# folder name internal to boost's .tar.gz -# When testing you can force a boost build by clearing travis caches: -# https://travis-ci.org/ripple/rippled/caches -set -exu - -odir=$(pwd) -: ${BOOST_TOOLSET:=msvc-14.1} - -if [[ -d "$BOOST_ROOT/lib" || -d "${BOOST_ROOT}/stage/lib" ]] ; then - echo "Using cached boost at $BOOST_ROOT" - exit -fi - -#fetch/unpack: -fn=$(basename -- "$BOOST_URL") -ext="${fn##*.}" -wopt="--quiet" -wget ${wopt} $BOOST_URL -O /tmp/boost.tar.${ext} || \ - ( [ -n "${BOOST_URL2}" ] && \ - wget ${wopt} $BOOST_URL2 -O /tmp/boost.tar.${ext} ) || \ - ( [ -n "${BOOST_WGET_OPTIONS}" ] && - ( wget ${wopt} ${BOOST_WGET_OPTIONS} $BOOST_URL -O /tmp/boost.tar.${ext} || \ - ( [ -n "${BOOST_URL2}" ] && \ - wget ${wopt} ${BOOST_WGET_OPTIONS} $BOOST_URL2 -O /tmp/boost.tar.${ext} ) - ) - ) -cd $(dirname $BOOST_ROOT) -rm -fr ${BOOST_ROOT} -mkdir ${BOOST_ROOT} -tar xf /tmp/boost.tar.${ext} -C ${BOOST_ROOT} --strip-components 1 -cd $BOOST_ROOT - -BLDARGS=() -if [[ ${BOOST_BUILD_ALL:-false} == "true" ]]; then - # we never need boost-python...so even for ALL - # option we can skip it - BLDARGS+=(--without-python) -else - BLDARGS+=(--with-chrono) - BLDARGS+=(--with-container) - BLDARGS+=(--with-context) - BLDARGS+=(--with-coroutine) - BLDARGS+=(--with-date_time) - BLDARGS+=(--with-filesystem) - BLDARGS+=(--with-program_options) - BLDARGS+=(--with-regex) - BLDARGS+=(--with-system) - BLDARGS+=(--with-atomic) - BLDARGS+=(--with-thread) -fi -BLDARGS+=(-j$((2*${NUM_PROCESSORS:-2}))) -BLDARGS+=(--prefix=${BOOST_ROOT}/_INSTALLED_) -BLDARGS+=(-d0) # suppress messages/output - -if [[ -z ${COMSPEC:-} ]]; then - if [[ "$(uname)" == "Darwin" ]] ; then - BLDARGS+=(cxxflags="-std=c++14 -fvisibility=default") - else - BLDARGS+=(cxxflags="-std=c++14") - BLDARGS+=(runtime-link="static,shared") - fi - BLDARGS+=(--layout=tagged) - ./bootstrap.sh - ./b2 "${BLDARGS[@]}" stage - ./b2 "${BLDARGS[@]}" install -else - BLDARGS+=(runtime-link="static,shared") - BLDARGS+=(--layout=versioned) - BLDARGS+=(--toolset="${BOOST_TOOLSET}") - BLDARGS+=(address-model=64) - BLDARGS+=(architecture=x86) - BLDARGS+=(link=static) - BLDARGS+=(threading=multi) - cmd /E:ON /D /S /C"bootstrap.bat" - ./b2.exe "${BLDARGS[@]}" stage - ./b2.exe "${BLDARGS[@]}" install -fi - -if [[ ${CI:-false} == "true" ]]; then - # save some disk space...these are mostly - # obj files and don't need to be kept in CI contexts - rm -rf bin.v2 -fi - -cd $odir - diff --git a/Builds/containers/shared/install_cmake.sh b/Builds/containers/shared/install_cmake.sh index 2c9fa10d1c5..e6f84dd6c03 100755 --- a/Builds/containers/shared/install_cmake.sh +++ b/Builds/containers/shared/install_cmake.sh @@ -21,8 +21,13 @@ if [[ "${installed}" != "" && ${installed} =~ ${cm_maj}.${cm_min}.${cm_rel} ]] ; echo "cmake already installed: ${installed}" exit fi - -pkgname="cmake-${cm_maj}.${cm_min}.${cm_rel}-$(uname)-x86_64.tar.gz" +# From CMake 20+ "Linux" is lowercase so using `uname` won't create be the correct path +if [ ${cm_min} -gt 19 ]; then + linux="linux" +else + linux=$(uname) +fi +pkgname="cmake-${cm_maj}.${cm_min}.${cm_rel}-${linux}-x86_64.tar.gz" tmppkg="/tmp/cmake.tar.gz" wget --quiet https://cmake.org/files/v${cm_maj}.${cm_min}/${pkgname} -O ${tmppkg} mkdir -p ${CMAKE_ROOT} @@ -30,5 +35,3 @@ cd ${CMAKE_ROOT} tar --strip-components 1 -xf ${tmppkg} rm -f ${tmppkg} echo "installed: $(cmake_version)" - - diff --git a/Builds/containers/ubuntu-builder/Dockerfile b/Builds/containers/ubuntu-builder/Dockerfile index 4550c64a096..478d9ad7590 100644 --- a/Builds/containers/ubuntu-builder/Dockerfile +++ b/Builds/containers/ubuntu-builder/Dockerfile @@ -1,4 +1,4 @@ -ARG DIST_TAG=18.04 +ARG DIST_TAG=20.04 FROM ubuntu:$DIST_TAG ARG GIT_COMMIT=unknown ARG CI_USE=false @@ -6,31 +6,19 @@ LABEL git-commit=$GIT_COMMIT # install/setup prerequisites: COPY ubuntu-builder/ubuntu_setup.sh /tmp/ -COPY shared/build_deps.sh /tmp/ COPY shared/install_cmake.sh /tmp/ -COPY shared/install_boost.sh /tmp/ RUN chmod +x /tmp/ubuntu_setup.sh && \ - chmod +x /tmp/build_deps.sh && \ - chmod +x /tmp/install_boost.sh && \ chmod +x /tmp/install_cmake.sh RUN /tmp/ubuntu_setup.sh -RUN /tmp/install_cmake.sh 3.16.1 /opt/local/cmake-3.16 +RUN /tmp/install_cmake.sh 3.16.3 /opt/local/cmake-3.16 RUN ln -s /opt/local/cmake-3.16 /opt/local/cmake ENV PATH="/opt/local/cmake/bin:$PATH" -# also install min supported cmake for testing -RUN if [ "${CI_USE}" = true ] ; then /tmp/install_cmake.sh 3.9.0 /opt/local/cmake-3.9; fi - -RUN /tmp/build_deps.sh -ENV PLANTUML_JAR="/opt/plantuml/plantuml.jar" -ENV BOOST_ROOT="/opt/local/boost/_INSTALLED_" -ENV OPENSSL_ROOT="/opt/local/openssl" # prep files for package building -RUN mkdir -m 777 -p /opt/rippled_bld/pkg/debian -RUN update-alternatives --set gcc /usr/bin/gcc-8 +RUN update-alternatives --set gcc /usr/bin/gcc-11 +RUN mkdir -m 777 -p /opt/rippled_bld/pkg/ WORKDIR /opt/rippled_bld/pkg COPY packaging/dpkg/build_dpkg.sh ./ CMD ./build_dpkg.sh - diff --git a/Builds/containers/ubuntu-builder/ubuntu_setup.sh b/Builds/containers/ubuntu-builder/ubuntu_setup.sh index c637faafdd1..379ca61e2b1 100755 --- a/Builds/containers/ubuntu-builder/ubuntu_setup.sh +++ b/Builds/containers/ubuntu-builder/ubuntu_setup.sh @@ -3,7 +3,7 @@ set -ex source /etc/os-release -if [[ ${VERSION_ID} =~ ^18\. || ${VERSION_ID} =~ ^16\. ]] ; then +if [[ ${VERSION_ID} =~ ^20\. || ${VERSION_ID} =~ ^22\. ]] ; then echo "setup for ${PRETTY_NAME}" else echo "${VERSION} not supported" @@ -19,12 +19,9 @@ apt-get update -o Acquire::CompressionTypes::Order::=gz apt-get -y update apt-get -y install apt-utils -apt-get -y install software-properties-common wget +apt-get -y install software-properties-common wget curl ca-certificates +apt-get -y install python3-pip apt-get -y upgrade -if [[ ${VERSION_ID} =~ ^18\. ]] ; then - apt-add-repository -y multiverse - apt-add-repository -y universe -fi add-apt-repository -y ppa:ubuntu-toolchain-r/test apt-get -y clean apt-get -y update @@ -34,7 +31,6 @@ apt-get -y --fix-missing install \ openssl libssl-dev \ liblzma-dev libbz2-dev zlib1g-dev \ libjemalloc-dev \ - python-pip \ gdb gdbserver \ libstdc++6 \ flex bison parallel \ @@ -42,148 +38,67 @@ apt-get -y --fix-missing install \ java-common javacc \ dpkg-dev debhelper devscripts fakeroot \ debmake git-buildpackage dh-make gitpkg debsums gnupg \ - dh-buildinfo dh-make dh-systemd \ + dh-buildinfo dh-make \ apt-transport-https -apt-get -y install gcc-7 g++-7 -update-alternatives --install \ - /usr/bin/gcc gcc /usr/bin/gcc-7 40 \ - --slave /usr/bin/g++ g++ /usr/bin/g++-7 \ - --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-7 \ - --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-7 \ - --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-7 \ - --slave /usr/bin/gcov gcov /usr/bin/gcov-7 \ - --slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-dump-7 \ - --slave /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-tool-7 +if [[ ${VERSION_ID} =~ ^20\. ]] ; then +apt-get install -y \ + dh-systemd +fi -apt-get -y install gcc-8 g++-8 +apt-get -y install gcc-11 g++-11 update-alternatives --install \ - /usr/bin/gcc gcc /usr/bin/gcc-8 20 \ - --slave /usr/bin/g++ g++ /usr/bin/g++-8 \ - --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-8 \ - --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-8 \ - --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-8 \ - --slave /usr/bin/gcov gcov /usr/bin/gcov-8 \ - --slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-dump-8 \ - --slave /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-tool-8 + /usr/bin/gcc gcc /usr/bin/gcc-11 20 \ + --slave /usr/bin/g++ g++ /usr/bin/g++-11 \ + --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-11 \ + --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-11 \ + --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-11 \ + --slave /usr/bin/gcov gcov /usr/bin/gcov-11 \ + --slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-dump-11 \ + --slave /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-tool-11 update-alternatives --auto gcc -update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-7 40 -update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-8 20 +update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-11 20 update-alternatives --auto cpp -if [ "${CI_USE}" = true ] ; then - apt-get -y install gcc-6 g++-6 - update-alternatives --install \ - /usr/bin/gcc gcc /usr/bin/gcc-6 10 \ - --slave /usr/bin/g++ g++ /usr/bin/g++-6 \ - --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-6 \ - --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-6 \ - --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-6 \ - --slave /usr/bin/gcov gcov /usr/bin/gcov-6 \ - --slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-dump-6 \ - --slave /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-tool-6 - - apt-get -y install gcc-9 g++-9 - update-alternatives --install \ - /usr/bin/gcc gcc /usr/bin/gcc-9 15 \ - --slave /usr/bin/g++ g++ /usr/bin/g++-9 \ - --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-9 \ - --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-9 \ - --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-9 \ - --slave /usr/bin/gcov gcov /usr/bin/gcov-9 \ - --slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-dump-9 \ - --slave /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-tool-9 -fi - -if [[ ${VERSION_ID} =~ ^18\. ]] ; then - apt-get -y install binutils -elif [[ ${VERSION_ID} =~ ^16\. ]] ; then - apt-get -y install python-software-properties binutils-gold -fi - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - -if [[ ${VERSION_ID} =~ ^18\. ]] ; then - cat << EOF > /etc/apt/sources.list.d/llvm.list -deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic main -deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic main -deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-7 main -deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-7 main -deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-8 main -deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-8 main -deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main -deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main -EOF -elif [[ ${VERSION_ID} =~ ^16\. ]] ; then + +if [[ ${VERSION_ID} =~ ^20\. ]] ; then cat << EOF > /etc/apt/sources.list.d/llvm.list -deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial main -deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial main -deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-7 main -deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-7 main -deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main -deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main -deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main -deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main +deb http://apt.llvm.org/focal/ llvm-toolchain-focal main +deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal main +deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main +deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main +deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main +deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main EOF + apt-get -y install binutils clang-12 fi -apt-get -y update -apt-get -y install \ - clang-7 libclang-common-7-dev libclang-7-dev libllvm7 llvm-7 \ - llvm-7-dev llvm-7-runtime clang-format-7 python-clang-7 \ - lld-7 libfuzzer-7-dev libc++-7-dev -update-alternatives --install \ - /usr/bin/clang clang /usr/bin/clang-7 40 \ - --slave /usr/bin/clang++ clang++ /usr/bin/clang++-7 \ - --slave /usr/bin/llvm-profdata llvm-profdata /usr/bin/llvm-profdata-7 \ - --slave /usr/bin/asan-symbolize asan-symbolize /usr/bin/asan_symbolize-7 \ - --slave /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-7 \ - --slave /usr/bin/clang-format clang-format /usr/bin/clang-format-7 \ - --slave /usr/bin/llvm-ar llvm-ar /usr/bin/llvm-ar-7 \ - --slave /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-7 \ - --slave /usr/bin/llvm-nm llvm-nm /usr/bin/llvm-nm-7 -apt-get -y install \ - clang-8 libclang-common-8-dev libclang-8-dev libllvm8 llvm-8 \ - llvm-8-dev llvm-8-runtime clang-format-8 python-clang-8 \ - lld-8 libfuzzer-8-dev libc++-8-dev -update-alternatives --install \ - /usr/bin/clang clang /usr/bin/clang-8 20 \ - --slave /usr/bin/clang++ clang++ /usr/bin/clang++-8 \ - --slave /usr/bin/llvm-profdata llvm-profdata /usr/bin/llvm-profdata-8 \ - --slave /usr/bin/asan-symbolize asan-symbolize /usr/bin/asan_symbolize-8 \ - --slave /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-8 \ - --slave /usr/bin/clang-format clang-format /usr/bin/clang-format-8 \ - --slave /usr/bin/llvm-ar llvm-ar /usr/bin/llvm-ar-8 \ - --slave /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-8 \ - --slave /usr/bin/llvm-nm llvm-nm /usr/bin/llvm-nm-8 -update-alternatives --auto clang -if [ "${CI_USE}" = true ] ; then +apt-get -y update +if [[ ${VERSION_ID} =~ ^20\. ]] ; then +for v in 12 14; do apt-get -y install \ - clang-9 libclang-common-9-dev libclang-9-dev libllvm9 llvm-9 \ - llvm-9-dev llvm-9-runtime clang-format-9 python-clang-9 \ - lld-9 libfuzzer-9-dev libc++-9-dev - update-alternatives --install \ - /usr/bin/clang clang /usr/bin/clang-9 20 \ - --slave /usr/bin/clang++ clang++ /usr/bin/clang++-9 \ - --slave /usr/bin/llvm-profdata llvm-profdata /usr/bin/llvm-profdata-9 \ - --slave /usr/bin/asan-symbolize asan-symbolize /usr/bin/asan_symbolize-9 \ - --slave /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-9 \ - --slave /usr/bin/clang-format clang-format /usr/bin/clang-format-9 \ - --slave /usr/bin/llvm-ar llvm-ar /usr/bin/llvm-ar-9 \ - --slave /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-9 \ - --slave /usr/bin/llvm-nm llvm-nm /usr/bin/llvm-nm-9 - - # only install latest lldb - apt-get -y install lldb-9 python-lldb-9 liblldb-9-dev + clang-$v libclang-common-$v-dev libclang-$v-dev libllvm$v llvm-$v \ + llvm-$v-dev llvm-$v-runtime clang-format-$v python3-clang-$v \ + lld-$v libfuzzer-$v-dev libc++-$v-dev python-is-python3 update-alternatives --install \ - /usr/bin/lldb lldb /usr/bin/lldb-9 50 \ - --slave /usr/bin/lldb-server lldb-server /usr/bin/lldb-server-9 \ - --slave /usr/bin/lldb-argdumper lldb-argdumper /usr/bin/lldb-argdumper-9 \ - --slave /usr/bin/lldb-instr lldb-instr /usr/bin/lldb-instr-9 \ - --slave /usr/bin/lldb-mi lldb-mi /usr/bin/lldb-mi-9 - update-alternatives --auto clang + /usr/bin/clang clang /usr/bin/clang-$v 40 \ + --slave /usr/bin/clang++ clang++ /usr/bin/clang++-$v \ + --slave /usr/bin/llvm-profdata llvm-profdata /usr/bin/llvm-profdata-$v \ + --slave /usr/bin/asan-symbolize asan-symbolize /usr/bin/asan_symbolize-$v \ + --slave /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-$v \ + --slave /usr/bin/clang-format clang-format /usr/bin/clang-format-$v \ + --slave /usr/bin/llvm-ar llvm-ar /usr/bin/llvm-ar-$v \ + --slave /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-$v \ + --slave /usr/bin/llvm-nm llvm-nm /usr/bin/llvm-nm-$v + done fi -apt-get -y autoremove +pip install "conan<2" && \ + conan profile new default --detect && \ + conan profile update settings.compiler.cppstd=20 default && \ + conan profile update settings.compiler.libcxx=libstdc++11 default +apt-get -y autoremove diff --git a/docs/Docker.md b/docs/Docker.md index d0103fbd9ae..9f67c87ee51 100644 --- a/docs/Docker.md +++ b/docs/Docker.md @@ -1,16 +1,5 @@ -# Rippled Docker Image +# `rippled` Docker Image -Rippled has a continuous deployment pipeline that turns every git commit into a -docker image for quick testing and deployment. - -To run the tip of the latest release via docker: - -```$ docker run -P -v /srv/rippled/ ripple/rippled:latest``` - -To run the tip of active development: - -```$ docker run -P -v /srv/rippled/ ripple/rippled:develop``` - -Where ```/srv/rippled``` points to a directory containing a rippled.cfg and -database files. By default, port 5005/tcp maps to the RPC port and 51235/udp to -the peer port. +- Some info relating to Docker containers can be found here: [../Builds/containers](../Builds/containers) +- Images for building and testing rippled can be found here: [thejohnfreeman/rippled-docker](https://github.com/thejohnfreeman/rippled-docker/) + - These images do not have rippled. They have all the tools necessary to build rippled. diff --git a/src/ripple/app/tx/impl/NFTokenCreateOffer.cpp b/src/ripple/app/tx/impl/NFTokenCreateOffer.cpp index 6db31c69892..22eca2dffdd 100644 --- a/src/ripple/app/tx/impl/NFTokenCreateOffer.cpp +++ b/src/ripple/app/tx/impl/NFTokenCreateOffer.cpp @@ -193,7 +193,7 @@ NFTokenCreateOffer::preclaim(PreclaimContext const& ctx) // flag cannot be set unless amendment is enabled but // out of an abundance of caution check anyway - if (sleDst->getFlags() & lsfDisallowIncomingNFTOffer) + if (sleDst->getFlags() & lsfDisallowIncomingNFTokenOffer) return tecNO_PERMISSION; } } @@ -210,7 +210,7 @@ NFTokenCreateOffer::preclaim(PreclaimContext const& ctx) if (!sleOwner) return tecNO_TARGET; - if (sleOwner->getFlags() & lsfDisallowIncomingNFTOffer) + if (sleOwner->getFlags() & lsfDisallowIncomingNFTokenOffer) return tecNO_PERMISSION; } } diff --git a/src/ripple/app/tx/impl/SetAccount.cpp b/src/ripple/app/tx/impl/SetAccount.cpp index 5c7d4369a76..167644f45fb 100644 --- a/src/ripple/app/tx/impl/SetAccount.cpp +++ b/src/ripple/app/tx/impl/SetAccount.cpp @@ -541,10 +541,10 @@ SetAccount::doApply() // Set or clear flags for disallowing various incoming instruments if (ctx_.view().rules().enabled(featureDisallowIncoming)) { - if (uSetFlag == asfDisallowIncomingNFTOffer) - uFlagsOut |= lsfDisallowIncomingNFTOffer; - else if (uClearFlag == asfDisallowIncomingNFTOffer) - uFlagsOut &= ~lsfDisallowIncomingNFTOffer; + if (uSetFlag == asfDisallowIncomingNFTokenOffer) + uFlagsOut |= lsfDisallowIncomingNFTokenOffer; + else if (uClearFlag == asfDisallowIncomingNFTokenOffer) + uFlagsOut &= ~lsfDisallowIncomingNFTokenOffer; if (uSetFlag == asfDisallowIncomingCheck) uFlagsOut |= lsfDisallowIncomingCheck; diff --git a/src/ripple/overlay/impl/Handshake.cpp b/src/ripple/overlay/impl/Handshake.cpp index 793dec19eef..9fe025787f8 100644 --- a/src/ripple/overlay/impl/Handshake.cpp +++ b/src/ripple/overlay/impl/Handshake.cpp @@ -301,36 +301,6 @@ verifyHandshake( throw std::runtime_error("Bad node public key"); }(); - if (publicKey == app.nodeIdentity().first) - { - auto const peerInstanceID = [&headers]() { - std::uint64_t iid = 0; - - if (auto const iter = headers.find("Instance-Cookie"); - iter != headers.end()) - { - if (!beast::lexicalCastChecked(iid, iter->value().to_string())) - throw std::runtime_error("Invalid instance cookie"); - - if (iid == 0) - throw std::runtime_error("Invalid instance cookie"); - } - - return iid; - }(); - - // Attempt to differentiate self-connections as opposed to accidental - // node identity reuse caused by accidental misconfiguration. When we - // detect this, we stop the process and log an error message. - if (peerInstanceID != app.instanceID()) - { - app.signalStop("Remote server is using our node identity"); - throw std::runtime_error("Node identity reuse detected"); - } - - throw std::runtime_error("Self connection"); - } - // This check gets two birds with one stone: // // 1) it verifies that the node we are talking to has access to the @@ -349,6 +319,9 @@ verifyHandshake( throw std::runtime_error("Failed to verify session"); } + if (publicKey == app.nodeIdentity().first) + throw std::runtime_error("Self connection"); + if (auto const iter = headers.find("Local-IP"); iter != headers.end()) { boost::system::error_code ec; diff --git a/src/ripple/protocol/LedgerFormats.h b/src/ripple/protocol/LedgerFormats.h index 5e3c8b60001..3ba18af4214 100644 --- a/src/ripple/protocol/LedgerFormats.h +++ b/src/ripple/protocol/LedgerFormats.h @@ -241,7 +241,7 @@ enum LedgerSpecificFlags { /* // reserved for Hooks amendment lsfTshCollect = 0x02000000, // True, allow TSH collect-calls to acc hooks */ - lsfDisallowIncomingNFTOffer = + lsfDisallowIncomingNFTokenOffer = 0x04000000, // True, reject new incoming NFT offers lsfDisallowIncomingCheck = 0x08000000, // True, reject new checks diff --git a/src/ripple/protocol/TxFlags.h b/src/ripple/protocol/TxFlags.h index 0af4fab98a5..21cd119698b 100644 --- a/src/ripple/protocol/TxFlags.h +++ b/src/ripple/protocol/TxFlags.h @@ -51,81 +51,83 @@ namespace ripple { @ingroup protocol */ +// Formatting equals sign aligned 4 spaces after longest prefix, except for +// wrapped lines // clang-format off // Universal Transaction flags: -constexpr std::uint32_t tfFullyCanonicalSig = 0x80000000; -constexpr std::uint32_t tfUniversal = tfFullyCanonicalSig; -constexpr std::uint32_t tfUniversalMask = ~tfUniversal; +constexpr std::uint32_t tfFullyCanonicalSig = 0x80000000; +constexpr std::uint32_t tfUniversal = tfFullyCanonicalSig; +constexpr std::uint32_t tfUniversalMask = ~tfUniversal; // AccountSet flags: -constexpr std::uint32_t tfRequireDestTag = 0x00010000; -constexpr std::uint32_t tfOptionalDestTag = 0x00020000; -constexpr std::uint32_t tfRequireAuth = 0x00040000; -constexpr std::uint32_t tfOptionalAuth = 0x00080000; -constexpr std::uint32_t tfDisallowXRP = 0x00100000; -constexpr std::uint32_t tfAllowXRP = 0x00200000; +constexpr std::uint32_t tfRequireDestTag = 0x00010000; +constexpr std::uint32_t tfOptionalDestTag = 0x00020000; +constexpr std::uint32_t tfRequireAuth = 0x00040000; +constexpr std::uint32_t tfOptionalAuth = 0x00080000; +constexpr std::uint32_t tfDisallowXRP = 0x00100000; +constexpr std::uint32_t tfAllowXRP = 0x00200000; constexpr std::uint32_t tfAccountSetMask = ~(tfUniversal | tfRequireDestTag | tfOptionalDestTag | tfRequireAuth | tfOptionalAuth | tfDisallowXRP | tfAllowXRP); // AccountSet SetFlag/ClearFlag values -constexpr std::uint32_t asfRequireDest = 1; -constexpr std::uint32_t asfRequireAuth = 2; -constexpr std::uint32_t asfDisallowXRP = 3; -constexpr std::uint32_t asfDisableMaster = 4; -constexpr std::uint32_t asfAccountTxnID = 5; -constexpr std::uint32_t asfNoFreeze = 6; -constexpr std::uint32_t asfGlobalFreeze = 7; -constexpr std::uint32_t asfDefaultRipple = 8; -constexpr std::uint32_t asfDepositAuth = 9; -constexpr std::uint32_t asfAuthorizedNFTokenMinter = 10; +constexpr std::uint32_t asfRequireDest = 1; +constexpr std::uint32_t asfRequireAuth = 2; +constexpr std::uint32_t asfDisallowXRP = 3; +constexpr std::uint32_t asfDisableMaster = 4; +constexpr std::uint32_t asfAccountTxnID = 5; +constexpr std::uint32_t asfNoFreeze = 6; +constexpr std::uint32_t asfGlobalFreeze = 7; +constexpr std::uint32_t asfDefaultRipple = 8; +constexpr std::uint32_t asfDepositAuth = 9; +constexpr std::uint32_t asfAuthorizedNFTokenMinter = 10; /* // reserved for Hooks amendment -constexpr std::uint32_t asfTshCollect = 11; +constexpr std::uint32_t asfTshCollect = 11; */ -constexpr std::uint32_t asfDisallowIncomingNFTOffer = 12; -constexpr std::uint32_t asfDisallowIncomingCheck = 13; -constexpr std::uint32_t asfDisallowIncomingPayChan = 14; -constexpr std::uint32_t asfDisallowIncomingTrustline = 15; +constexpr std::uint32_t asfDisallowIncomingNFTokenOffer = 12; +constexpr std::uint32_t asfDisallowIncomingCheck = 13; +constexpr std::uint32_t asfDisallowIncomingPayChan = 14; +constexpr std::uint32_t asfDisallowIncomingTrustline = 15; // OfferCreate flags: -constexpr std::uint32_t tfPassive = 0x00010000; -constexpr std::uint32_t tfImmediateOrCancel = 0x00020000; -constexpr std::uint32_t tfFillOrKill = 0x00040000; -constexpr std::uint32_t tfSell = 0x00080000; +constexpr std::uint32_t tfPassive = 0x00010000; +constexpr std::uint32_t tfImmediateOrCancel = 0x00020000; +constexpr std::uint32_t tfFillOrKill = 0x00040000; +constexpr std::uint32_t tfSell = 0x00080000; constexpr std::uint32_t tfOfferCreateMask = ~(tfUniversal | tfPassive | tfImmediateOrCancel | tfFillOrKill | tfSell); // Payment flags: -constexpr std::uint32_t tfNoRippleDirect = 0x00010000; -constexpr std::uint32_t tfPartialPayment = 0x00020000; -constexpr std::uint32_t tfLimitQuality = 0x00040000; +constexpr std::uint32_t tfNoRippleDirect = 0x00010000; +constexpr std::uint32_t tfPartialPayment = 0x00020000; +constexpr std::uint32_t tfLimitQuality = 0x00040000; constexpr std::uint32_t tfPaymentMask = ~(tfUniversal | tfPartialPayment | tfLimitQuality | tfNoRippleDirect); // TrustSet flags: -constexpr std::uint32_t tfSetfAuth = 0x00010000; -constexpr std::uint32_t tfSetNoRipple = 0x00020000; -constexpr std::uint32_t tfClearNoRipple = 0x00040000; -constexpr std::uint32_t tfSetFreeze = 0x00100000; -constexpr std::uint32_t tfClearFreeze = 0x00200000; +constexpr std::uint32_t tfSetfAuth = 0x00010000; +constexpr std::uint32_t tfSetNoRipple = 0x00020000; +constexpr std::uint32_t tfClearNoRipple = 0x00040000; +constexpr std::uint32_t tfSetFreeze = 0x00100000; +constexpr std::uint32_t tfClearFreeze = 0x00200000; constexpr std::uint32_t tfTrustSetMask = ~(tfUniversal | tfSetfAuth | tfSetNoRipple | tfClearNoRipple | tfSetFreeze | tfClearFreeze); // EnableAmendment flags: -constexpr std::uint32_t tfGotMajority = 0x00010000; -constexpr std::uint32_t tfLostMajority = 0x00020000; +constexpr std::uint32_t tfGotMajority = 0x00010000; +constexpr std::uint32_t tfLostMajority = 0x00020000; // PaymentChannelClaim flags: -constexpr std::uint32_t tfRenew = 0x00010000; -constexpr std::uint32_t tfClose = 0x00020000; +constexpr std::uint32_t tfRenew = 0x00010000; +constexpr std::uint32_t tfClose = 0x00020000; constexpr std::uint32_t tfPayChanClaimMask = ~(tfUniversal | tfRenew | tfClose); // NFTokenMint flags: -constexpr std::uint32_t const tfBurnable = 0x00000001; -constexpr std::uint32_t const tfOnlyXRP = 0x00000002; -constexpr std::uint32_t const tfTrustLine = 0x00000004; -constexpr std::uint32_t const tfTransferable = 0x00000008; +constexpr std::uint32_t const tfBurnable = 0x00000001; +constexpr std::uint32_t const tfOnlyXRP = 0x00000002; +constexpr std::uint32_t const tfTrustLine = 0x00000004; +constexpr std::uint32_t const tfTransferable = 0x00000008; // Prior to fixRemoveNFTokenAutoTrustLine, transfer of an NFToken between // accounts allowed a TrustLine to be added to the issuer of that token @@ -147,15 +149,15 @@ constexpr std::uint32_t const tfNFTokenMintMask = ~(tfUniversal | tfBurnable | tfOnlyXRP | tfTransferable); // NFTokenCreateOffer flags: -constexpr std::uint32_t const tfSellNFToken = 0x00000001; +constexpr std::uint32_t const tfSellNFToken = 0x00000001; constexpr std::uint32_t const tfNFTokenCreateOfferMask = ~(tfUniversal | tfSellNFToken); // NFTokenCancelOffer flags: -constexpr std::uint32_t const tfNFTokenCancelOfferMask = ~(tfUniversal); +constexpr std::uint32_t const tfNFTokenCancelOfferMask = ~(tfUniversal); // NFTokenAcceptOffer flags: -constexpr std::uint32_t const tfNFTokenAcceptOfferMask = ~tfUniversal; +constexpr std::uint32_t const tfNFTokenAcceptOfferMask = ~tfUniversal; // AMM Flags: constexpr std::uint32_t tfLPToken = 0x00010000; diff --git a/src/ripple/protocol/impl/BuildInfo.cpp b/src/ripple/protocol/impl/BuildInfo.cpp index 22f2f17be02..5e112371969 100644 --- a/src/ripple/protocol/impl/BuildInfo.cpp +++ b/src/ripple/protocol/impl/BuildInfo.cpp @@ -33,7 +33,7 @@ namespace BuildInfo { // and follow the format described at http://semver.org/ //------------------------------------------------------------------------------ // clang-format off -char const* const versionString = "1.10.0-rc1" +char const* const versionString = "1.10.0-rc4" // clang-format on #if defined(DEBUG) || defined(SANITIZER) diff --git a/src/test/app/NFToken_test.cpp b/src/test/app/NFToken_test.cpp index 40202e07dce..150622c731c 100644 --- a/src/test/app/NFToken_test.cpp +++ b/src/test/app/NFToken_test.cpp @@ -3028,11 +3028,11 @@ class NFToken_test : public beast::unit_test::suite Env env{*this, features - disallowIncoming}; Account const alice{"alice"}; env.fund(XRP(10000), alice); - env(fset(alice, asfDisallowIncomingNFTOffer)); + env(fset(alice, asfDisallowIncomingNFTokenOffer)); env.close(); auto const sle = env.le(alice); uint32_t flags = sle->getFlags(); - BEAST_EXPECT(!(flags & lsfDisallowIncomingNFTOffer)); + BEAST_EXPECT(!(flags & lsfDisallowIncomingNFTokenOffer)); } Env env{*this, features | disallowIncoming}; @@ -3055,7 +3055,7 @@ class NFToken_test : public beast::unit_test::suite env.close(); // enable flag - env(fset(buyer, asfDisallowIncomingNFTOffer)); + env(fset(buyer, asfDisallowIncomingNFTokenOffer)); env.close(); // a sell offer from the minter to the buyer should be rejected @@ -3071,7 +3071,7 @@ class NFToken_test : public beast::unit_test::suite } // disable the flag - env(fclear(buyer, asfDisallowIncomingNFTOffer)); + env(fclear(buyer, asfDisallowIncomingNFTokenOffer)); env.close(); // create offer (allowed now) then cancel @@ -3098,13 +3098,13 @@ class NFToken_test : public beast::unit_test::suite txflags(tfSellNFToken)); env.close(); - env(fset(buyer, asfDisallowIncomingNFTOffer)); + env(fset(buyer, asfDisallowIncomingNFTokenOffer)); env.close(); env(token::cancelOffer(minter, {offerIndex})); env.close(); - env(fclear(buyer, asfDisallowIncomingNFTOffer)); + env(fclear(buyer, asfDisallowIncomingNFTokenOffer)); env.close(); } @@ -3125,7 +3125,7 @@ class NFToken_test : public beast::unit_test::suite // buyer now owns the token // enable flag again - env(fset(buyer, asfDisallowIncomingNFTOffer)); + env(fset(buyer, asfDisallowIncomingNFTokenOffer)); env.close(); // a random offer to buy the token diff --git a/src/test/rpc/AccountSet_test.cpp b/src/test/rpc/AccountSet_test.cpp index b3ca4c9f017..f935e0a846f 100644 --- a/src/test/rpc/AccountSet_test.cpp +++ b/src/test/rpc/AccountSet_test.cpp @@ -86,7 +86,7 @@ class AccountSet_test : public beast::unit_test::suite if (flag == asfDisallowIncomingCheck || flag == asfDisallowIncomingPayChan || - flag == asfDisallowIncomingNFTOffer || + flag == asfDisallowIncomingNFTokenOffer || flag == asfDisallowIncomingTrustline) { // These flags are part of the DisallowIncoming amendment