diff --git a/.gitea/workflows/build-releases.yml b/.gitea/workflows/build-releases.yml new file mode 100644 index 0000000..b8948f0 --- /dev/null +++ b/.gitea/workflows/build-releases.yml @@ -0,0 +1,163 @@ +name: build-releases + +on: + workflow_dispatch: + inputs: + version: + description: 'Tag to build and package (e.g. v4.9)' + required: true + title: + description: 'Title for the release (unused on Gitea workflow)' + required: false + default: '' + description: + description: 'Description for the release (unused on Gitea workflow)' + required: false + default: '' + +jobs: + release-packages: + name: Build Linux/macOS/Windows archives + runs-on: ubuntu-24.04 + timeout-minutes: 360 + env: + P2POOL_VERSION: ${{ github.event.inputs.version }} + + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y git build-essential cmake libuv1-dev libzmq3-dev libsodium-dev libpgm-dev libnorm-dev libgss-dev libcurl4-openssl-dev libidn2-0-dev xz-utils docker.io python3 jq + + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: recursive + + - name: Ensure version is provided + shell: bash + run: | + if [ -z "${P2POOL_VERSION}" ]; then + echo "P2POOL_VERSION is empty. Provide the version input when dispatching." + exit 1 + fi + echo "Building release for ${P2POOL_VERSION}" + + - name: Ensure Docker is running + run: | + sudo systemctl start docker || sudo service docker start || true + docker info + + - name: Build base toolchain image + shell: bash + run: | + set -euo pipefail + cd scripts/release/images/ubuntu + ./build.sh + + - name: Build Linux x64 release + shell: bash + run: scripts/release/linux_x64/build.sh "${P2POOL_VERSION}" + + - name: Build macOS aarch64 release + shell: bash + run: scripts/release/macos_aarch64/build.sh "${P2POOL_VERSION}" + + - name: Build Windows x64 release + shell: bash + run: scripts/release/windows_x64/build.sh "${P2POOL_VERSION}" + + - name: Generate checksums + shell: bash + run: | + set -euo pipefail + cd scripts/release + ./gen_sums.sh + + - name: Create Gitea release and upload assets + env: + VERSION: ${{ env.P2POOL_VERSION }} + TOKEN: ${{ secrets.GITEA_TOKEN }} + API_URL: ${{ github.api_url || env.GITHUB_API_URL }} + REPOSITORY: ${{ github.repository }} + run: | + set -euo pipefail + if [ -z "${TOKEN:-}" ]; then + echo "No GITEA_TOKEN available; cannot create release." + exit 1 + fi + + api="${API_URL:-}" + if [ -z "$api" ]; then + echo "API URL not provided; set github.api_url or GITHUB_API_URL." + exit 0 + fi + + release_payload=$(cat <<'EOF' +{ + "tag_name": "<>", + "target_commitish": "<>", + "name": "<>", + "body": "Release <>", + "draft": false, + "prerelease": false +} +EOF +) + release_payload="${release_payload//<>/${VERSION}}" + + echo "Creating release ${VERSION} via ${api}/repos/${REPOSITORY}/releases" + response=$(curl -sS -X POST \ + -H "Authorization: token ${TOKEN}" \ + -H "Content-Type: application/json" \ + -d "${release_payload}" \ + "${api}/repos/${REPOSITORY}/releases") + + release_id=$(python3 - <<'PY' +import json,sys +try: + data=json.load(sys.stdin) + rid=data.get("id") + if rid: + print(rid) +except Exception: + pass +PY +<<<"$response") + + if [ -z "$release_id" ]; then + echo "Failed to create release; response:" + echo "$response" + exit 1 + fi + + echo "Release created with id $release_id. Uploading assets..." + for file in \ + scripts/release/p2pool-${VERSION}-linux-x64.tar.gz \ + scripts/release/p2pool-${VERSION}-macos-aarch64.tar.gz \ + scripts/release/p2pool-${VERSION}-windows-x64.zip \ + scripts/release/sha256sums.txt; do + if [ ! -f "$file" ]; then + echo "Missing asset $file; skipping upload." + continue + fi + fname="$(basename "$file")" + upload_url="${api}/repos/${REPOSITORY}/releases/${release_id}/assets?name=${fname}" + echo "Uploading $fname" + curl -sS -X POST \ + -H "Authorization: token ${TOKEN}" \ + -H "Content-Type: application/octet-stream" \ + --data-binary @"$file" \ + "$upload_url" + done + + - name: Upload release artifacts + uses: actions/upload-artifact@v4 + with: + name: p2pool-release-${{ env.P2POOL_VERSION }} + path: | + scripts/release/p2pool-${{ env.P2POOL_VERSION }}-linux-x64.tar.gz + scripts/release/p2pool-${{ env.P2POOL_VERSION }}-macos-aarch64.tar.gz + scripts/release/p2pool-${{ env.P2POOL_VERSION }}-windows-x64.zip + scripts/release/sha256sums.txt diff --git a/.gitea/workflows/c-cpp.yml b/.gitea/workflows/c-cpp.yml new file mode 100644 index 0000000..aa007a4 --- /dev/null +++ b/.gitea/workflows/c-cpp.yml @@ -0,0 +1,145 @@ +name: C/C++ CI (Gitea) + +on: + workflow_dispatch: + +jobs: + build-alpine-static: + timeout-minutes: 90 + runs-on: ubuntu-24.04 + + strategy: + matrix: + config: + - {arch: x86_64, branch: latest-stable, flags: "-ffunction-sections"} + - {arch: aarch64, branch: latest-stable, flags: "-ffunction-sections -mfix-cortex-a53-835769 -mfix-cortex-a53-843419"} + - {arch: riscv64, branch: latest-stable, flags: "-ffunction-sections"} + + steps: + - name: Setup Alpine Linux + uses: jirutka/setup-alpine@v1 + with: + arch: ${{ matrix.config.arch }} + branch: ${{ matrix.config.branch }} + + - name: Install dependencies + shell: alpine.sh --root {0} + run: | + apk add git cmake gcc g++ make linux-headers xz + + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Build libcurl + shell: alpine.sh {0} + run: | + cd external/src/curl + cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-Os -flto=auto ${{ matrix.config.flags }}" -DBUILD_CURL_EXE=OFF -DBUILD_SHARED_LIBS=OFF -DCURL_DISABLE_INSTALL=ON -DCURL_ENABLE_EXPORT_TARGET=OFF -DCURL_DISABLE_HEADERS_API=ON -DCURL_DISABLE_BINDLOCAL=ON -DBUILD_LIBCURL_DOCS=OFF -DBUILD_MISC_DOCS=OFF -DENABLE_CURL_MANUAL=OFF -DCURL_ZLIB=OFF -DCURL_BROTLI=OFF -DCURL_ZSTD=OFF -DCURL_DISABLE_ALTSVC=ON -DCURL_DISABLE_COOKIES=ON -DCURL_DISABLE_DOH=ON -DCURL_DISABLE_GETOPTIONS=ON -DCURL_DISABLE_HSTS=ON -DCURL_DISABLE_LIBCURL_OPTION=ON -DCURL_DISABLE_MIME=ON -DCURL_DISABLE_NETRC=ON -DCURL_DISABLE_NTLM=ON -DCURL_DISABLE_PARSEDATE=ON -DCURL_DISABLE_PROGRESS_METER=ON -DCURL_DISABLE_SHUFFLE_DNS=ON -DCURL_DISABLE_SOCKETPAIR=ON -DCURL_DISABLE_VERBOSE_STRINGS=ON -DCURL_DISABLE_WEBSOCKETS=ON -DHTTP_ONLY=ON -DCURL_ENABLE_SSL=OFF -DUSE_LIBIDN2=OFF -DCURL_USE_LIBPSL=OFF -DCURL_USE_LIBSSH2=OFF -DENABLE_UNIX_SOCKETS=OFF -DCURL_DISABLE_TESTS=ON -DUSE_NGHTTP2=OFF -DBUILD_EXAMPLES=OFF -DP2POOL_BORINGSSL=ON -DCURL_DISABLE_SRP=ON -DCURL_DISABLE_AWS=ON -DCURL_DISABLE_BASIC_AUTH=ON -DCURL_DISABLE_BEARER_AUTH=ON -DCURL_DISABLE_KERBEROS_AUTH=ON -DCURL_DISABLE_NEGOTIATE_AUTH=ON -DOPENSSL_INCLUDE_DIR=../grpc/third_party/boringssl-with-bazel/include + make -j$(nproc) + + - name: Build libuv + shell: alpine.sh {0} + run: | + cd external/src/libuv + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS='-Os -flto=auto ${{ matrix.config.flags }}' -DBUILD_TESTING=OFF -DLIBUV_BUILD_SHARED=OFF + make -j$(nproc) + + - name: Build libzmq + shell: alpine.sh {0} + run: | + cd external/src/libzmq + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM="3.5" -DCMAKE_C_FLAGS='-Os -flto=auto ${{ matrix.config.flags }}' -DCMAKE_CXX_FLAGS='-Os -flto=auto ${{ matrix.config.flags }}' -DWITH_LIBSODIUM=OFF -DWITH_LIBBSD=OFF -DBUILD_TESTS=OFF -DWITH_DOCS=OFF -DENABLE_DRAFTS=OFF -DBUILD_SHARED=OFF + make -j$(nproc) + + - name: Build p2pool + shell: alpine.sh {0} + run: | + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM="3.5" -DCMAKE_C_FLAGS='${{ matrix.config.flags }} -Wl,-s -Wl,--gc-sections' -DCMAKE_CXX_FLAGS='${{ matrix.config.flags }} -Wl,-s -Wl,--gc-sections' -DWITH_GRPC=OFF -DSTATIC_BINARY=ON -DARCH_ID=${{ matrix.config.arch }} + make -j$(nproc) p2pool + + - name: Run RandomX tests + shell: alpine.sh {0} + run: | + cd build + ./p2pool --test + make -j$(nproc) randomx-tests + external/src/RandomX/randomx-tests + + - name: Build tests + shell: alpine.sh {0} + run: | + cd tests + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM="3.5" -DCMAKE_C_FLAGS='${{ matrix.config.flags }} -Wl,-s -Wl,--gc-sections' -DCMAKE_CXX_FLAGS='${{ matrix.config.flags }} -Wl,-s -Wl,--gc-sections' -DSTATIC_LIBS=ON -DARCH_ID=${{ matrix.config.arch }} + make -j$(nproc) p2pool_tests + + - name: Run tests + shell: alpine.sh {0} + run: | + cd tests/build + unxz *.xz + ./p2pool_tests + + - name: Archive binary + uses: actions/upload-artifact@v4 + with: + name: p2pool-alpine-static-${{ matrix.config.arch }} + path: build/p2pool + + build-ubuntu: + timeout-minutes: 60 + runs-on: ubuntu-24.04 + + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y git build-essential cmake libuv1-dev libzmq3-dev libsodium-dev libpgm-dev libnorm-dev libgss-dev libcurl4-openssl-dev libidn2-0-dev xz-utils + + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Build p2pool + run: | + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM="3.5" + make -j$(nproc) p2pool + + - name: Run RandomX tests + run: | + cd build + ./p2pool --test + make -j$(nproc) randomx-tests + external/src/RandomX/randomx-tests + + - name: Build tests + run: | + cd tests + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM="3.5" + make -j$(nproc) p2pool_tests + + - name: Run tests + run: | + cd tests/build + unxz *.xz + ./p2pool_tests + + - name: Archive binary + uses: actions/upload-artifact@v4 + with: + name: p2pool-ubuntu + path: build/p2pool diff --git a/.gitea/workflows/clang-tidy.yml b/.gitea/workflows/clang-tidy.yml new file mode 100644 index 0000000..7b8b8cf --- /dev/null +++ b/.gitea/workflows/clang-tidy.yml @@ -0,0 +1,38 @@ +name: clang-tidy + +on: + workflow_dispatch: + +jobs: + clang-tidy: + runs-on: ubuntu-24.04 + + steps: + - name: Install build dependencies + run: | + sudo apt-get update + sudo apt-get install -y git build-essential cmake libuv1-dev libzmq3-dev libsodium-dev libpgm-dev libnorm-dev libgss-dev libcurl4-openssl-dev libidn2-0-dev + + - name: Install clang + run: | + wget https://apt.llvm.org/llvm.sh + chmod +x llvm.sh + sudo ./llvm.sh 21 + sudo apt-get install -y clang-tidy-21 + clang-tidy-21 --verify-config + + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: cmake p2pool + run: | + mkdir build + cd build + cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_C_COMPILER=clang-21 -DCMAKE_CXX_COMPILER=clang++-21 -DDEV_CLANG_TIDY=ON -DSTATIC_LIBS=ON -DWITH_INDEXED_HASHES=ON -DCMAKE_POLICY_VERSION_MINIMUM="3.5" + + - name: Run clang-tidy + run: | + cd src + clang-tidy-21 *.cpp -p ../build -checks=bugprone-*,clang-analyzer-*,llvm-*,cppcoreguidelines-pro-type-const-cast,cppcoreguidelines-pro-type-cstyle-cast,cppcoreguidelines-rvalue-reference-param-not-moved,hicpp-use-emplace,hicpp-use-override,-bugprone-easily-swappable-parameters,-bugprone-empty-catch,-llvm-include-order -warnings-as-errors=* -header-filter=^[^\./] diff --git a/.gitea/workflows/codeql-analysis.yml b/.gitea/workflows/codeql-analysis.yml new file mode 100644 index 0000000..32d7876 --- /dev/null +++ b/.gitea/workflows/codeql-analysis.yml @@ -0,0 +1,42 @@ +name: CodeQL + +on: + workflow_dispatch: + +jobs: + analyze: + name: Analyze + timeout-minutes: 180 + runs-on: ubuntu-24.04 + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'cpp' ] + + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y git build-essential cmake libuv1-dev libzmq3-dev libsodium-dev libpgm-dev libnorm-dev libgss-dev libcurl4-openssl-dev libidn2-0-dev + + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + + - run: | + cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM="3.5" + make -j$(nproc) p2pool-salvium + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 diff --git a/.gitea/workflows/coverage.yml b/.gitea/workflows/coverage.yml new file mode 100644 index 0000000..c88e8ea --- /dev/null +++ b/.gitea/workflows/coverage.yml @@ -0,0 +1,62 @@ +name: Code coverage + +on: + workflow_dispatch: + +jobs: + coverage: + timeout-minutes: 60 + runs-on: ubuntu-24.04 + + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y git build-essential cmake libuv1-dev libzmq3-dev libsodium-dev libpgm-dev libnorm-dev libgss-dev libcurl4-openssl-dev libidn2-0-dev lcov xz-utils + + - name: Install clang + run: | + wget https://apt.llvm.org/llvm.sh + chmod +x llvm.sh + sudo ./llvm.sh 21 all + + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Build tests + run: | + cd tests + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DDEV_DEBUG=ON -DWITH_INDEXED_HASHES=ON -DWITH_COVERAGE=ON -DCMAKE_C_COMPILER=clang-21 -DCMAKE_CXX_COMPILER=clang++-21 -DCMAKE_POLICY_VERSION_MINIMUM="3.5" + make -j$(nproc) p2pool_tests + + - name: Run tests + run: | + cd tests/build + unxz *.xz + LLVM_PROFILE_FILE="p2pool_tests.profraw" ./p2pool_tests + + - name: Merge profile data + run: | + cd tests/build + llvm-profdata-21 merge -sparse ./p2pool_tests.profraw -o ./p2pool_tests.profdata + + - name: Export profile data + run: | + cd tests/build + llvm-cov-21 export ./p2pool_tests -format=lcov -instr-profile=./p2pool_tests.profdata > coverage.info + + - name: Run genhtml + run: | + cd tests/build + genhtml --demangle-cpp -o coverage coverage.info + + - name: Archive coverage data + if: '!cancelled()' + uses: actions/upload-artifact@v4 + with: + name: p2pool-coverage + path: tests/build/coverage diff --git a/.gitea/workflows/cppcheck.yml b/.gitea/workflows/cppcheck.yml new file mode 100644 index 0000000..babdf76 --- /dev/null +++ b/.gitea/workflows/cppcheck.yml @@ -0,0 +1,55 @@ +name: cppcheck + +on: + workflow_dispatch: + +jobs: + cppcheck-ubuntu: + timeout-minutes: 240 + runs-on: ubuntu-24.04 + + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y git build-essential cmake python3 libuv1-dev libzmq3-dev libsodium-dev libpgm-dev libnorm-dev libgss-dev libcurl4-openssl-dev libidn2-0-dev + + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Checkout cppcheck + run: | + git clone https://github.com/danmar/cppcheck cppcheck-main + + - name: Build cppcheck + run: | + cd cppcheck-main + make -j$(nproc) cppcheck + + - name: cmake p2pool + run: | + mkdir build + cd build + cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DSTATIC_LIBS=ON -DWITH_GRPC=OFF -DWITH_INDEXED_HASHES=ON -DCMAKE_POLICY_VERSION_MINIMUM="3.5" + python ../cppcheck/remove_external.py compile_commands.json + + - name: Run cppcheck + run: | + cd cppcheck + ./run.sh + + - name: Archive full error list + if: '!cancelled()' + uses: actions/upload-artifact@v4 + with: + name: errors_full-linux + path: cppcheck/errors_full.txt + + - name: Archive checkers report + if: '!cancelled()' + uses: actions/upload-artifact@v4 + with: + name: checkers_report-linux + path: cppcheck/checkers_report.txt diff --git a/.gitea/workflows/main.yml b/.gitea/workflows/main.yml new file mode 100644 index 0000000..10868a0 --- /dev/null +++ b/.gitea/workflows/main.yml @@ -0,0 +1,60 @@ +name: release-linux + +on: + workflow_dispatch: + inputs: + create_release: + description: 'Create release after successful build (true/false)' + required: true + default: 'false' + tag: + description: 'Tag name for the release (e.g. v1.2.3)' + required: false + release_name: + description: 'Release title' + required: false + release_body: + description: 'Release notes / body' + required: false + draft: + description: 'Create release as draft (true/false)' + required: false + default: 'false' + prerelease: + description: 'Create release as prerelease (true/false)' + required: false + default: 'false' + +permissions: + contents: write + packages: write + +jobs: + build-linux-amd64: + name: Build Linux x86_64 + runs-on: ubuntu-24.04 + timeout-minutes: 60 + + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y git build-essential cmake libuv1-dev libzmq3-dev libsodium-dev libpgm-dev libnorm-dev libgss-dev libcurl4-openssl-dev libidn2-0-dev xz-utils + + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Build p2pool (Linux) + run: | + mkdir -p build + cd build + cmake .. + make -j$(nproc) + + - name: Archive binary + uses: actions/upload-artifact@v4 + with: + name: p2pool-linux-amd64 + path: build/p2pool diff --git a/.gitea/workflows/msvc-analysis.yml b/.gitea/workflows/msvc-analysis.yml new file mode 100644 index 0000000..4095207 --- /dev/null +++ b/.gitea/workflows/msvc-analysis.yml @@ -0,0 +1,11 @@ +name: Microsoft C++ Code Analysis (disabled) + +on: + workflow_dispatch: + +jobs: + analyze: + if: ${{ false }} # Disabled: no Windows runner available on Gitea + runs-on: ubuntu-24.04 + steps: + - run: echo "MSVC analysis workflow disabled on Gitea (no Windows runner available)." diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..6745da9 --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,154 @@ +name: Release + +on: + workflow_dispatch: + inputs: + version: + description: 'v4.12' + required: true + type: string + +jobs: + build-linux-x64: + runs-on: ubuntu-24.04 + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y git build-essential cmake libuv1-dev libzmq3-dev libsodium-dev libpgm-dev libnorm-dev libgss-dev libcurl4-openssl-dev libidn2-0-dev xz-utils + + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Build static binary + run: | + cd external/src/curl + cmake . -DCMAKE_BUILD_TYPE=Release -DBUILD_CURL_EXE=OFF -DBUILD_SHARED_LIBS=OFF -DCURL_DISABLE_INSTALL=ON -DHTTP_ONLY=ON -DCURL_ENABLE_SSL=OFF + make -j$(nproc) + cd ../../.. + mkdir build && cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DSTATIC_BINARY=ON -DWITH_LTO=OFF + make -j$(nproc) + strip p2pool-salvium + + - name: Package + run: | + cd build + tar -czf p2pool-salvium-v${{ inputs.version }}-linux-x64.tar.gz p2pool-salvium + + - uses: actions/upload-artifact@v4 + with: + name: linux-x64 + path: build/p2pool-salvium-v${{ inputs.version }}-linux-x64.tar.gz + + build-linux-aarch64: + runs-on: ubuntu-24.04 + steps: + - uses: jirutka/setup-alpine@v1 + with: + arch: aarch64 + branch: latest-stable + + - name: Install dependencies and build + shell: alpine.sh {0} + run: | + apk add git cmake gcc g++ make linux-headers xz + + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Build + shell: alpine.sh {0} + run: | + cd external/src/curl + cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-Os -flto=auto" -DBUILD_CURL_EXE=OFF -DBUILD_SHARED_LIBS=OFF -DCURL_DISABLE_INSTALL=ON -DHTTP_ONLY=ON -DCURL_ENABLE_SSL=OFF + make -j$(nproc) + cd ../../.. + mkdir build && cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DSTATIC_BINARY=ON -DWITH_LTO=OFF + make -j$(nproc) + strip p2pool-salvium + tar -czf p2pool-salvium-v${{ inputs.version }}-linux-aarch64.tar.gz p2pool-salvium + + - uses: actions/upload-artifact@v4 + with: + name: linux-aarch64 + path: build/p2pool-salvium-v${{ inputs.version }}-linux-aarch64.tar.gz + + build-linux-riscv64: + runs-on: ubuntu-24.04 + steps: + - uses: jirutka/setup-alpine@v1 + with: + arch: riscv64 + branch: latest-stable + + - name: Install dependencies + shell: alpine.sh --root {0} + run: apk add git cmake gcc g++ make linux-headers xz + + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Build + shell: alpine.sh {0} + run: | + cd external/src/curl + cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-Os" -DBUILD_CURL_EXE=OFF -DBUILD_SHARED_LIBS=OFF -DCURL_DISABLE_INSTALL=ON -DHTTP_ONLY=ON -DCURL_ENABLE_SSL=OFF + make -j$(nproc) + cd ../../.. + mkdir build && cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DSTATIC_BINARY=ON -DWITH_LTO=OFF + make -j$(nproc) + strip p2pool-salvium + tar -czf p2pool-salvium-v${{ inputs.version }}-linux-riscv64.tar.gz p2pool-salvium + + - uses: actions/upload-artifact@v4 + with: + name: linux-riscv64 + path: build/p2pool-salvium-v${{ inputs.version }}-linux-riscv64.tar.gz + + create-checksums: + needs: [build-linux-x64, build-linux-aarch64, build-linux-riscv64] + runs-on: ubuntu-24.04 + steps: + - uses: actions/download-artifact@v4 + with: + path: artifacts + + - name: Create source archive + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Package source + run: | + cd .. + tar --exclude='.git' -cJf p2pool-salvium_source-v${{ inputs.version }}.tar.xz p2pool-salvium + mv p2pool-salvium_source-v${{ inputs.version }}.tar.xz p2pool-salvium/ + + - name: Generate checksums + run: | + cd artifacts + find . -name "*.tar.gz" -o -name "*.zip" | while read file; do + sha256sum "$file" >> ../sha256sums.txt + done + cd .. + sha256sum p2pool-salvium_source-v${{ inputs.version }}.tar.xz >> sha256sums.txt + sed -i 's|./[^/]*/||g' sha256sums.txt + + - name: Move all files to release directory + run: | + mkdir release + find artifacts -name "*.tar.gz" -exec mv {} release/ \; + find artifacts -name "*.zip" -exec mv {} release/ \; + mv p2pool-salvium_source-v${{ inputs.version }}.tar.xz release/ + mv sha256sums.txt release/ + + - uses: actions/upload-artifact@v4 + with: + name: release-files + path: release/ diff --git a/.gitea/workflows/source-snapshot.yml b/.gitea/workflows/source-snapshot.yml new file mode 100644 index 0000000..e968f3f --- /dev/null +++ b/.gitea/workflows/source-snapshot.yml @@ -0,0 +1,25 @@ +name: source-snapshot + +on: + workflow_dispatch: + +jobs: + source-snapshot: + runs-on: ubuntu-24.04 + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Compress source code + run: | + mkdir build + XZ_OPT=-e9 tar --exclude=".git" --exclude="build" -f build/p2pool_source.tar.xz -c ../p2pool-salvium --xz + + - name: Archive source code + uses: actions/upload-artifact@v4 + with: + name: p2pool_source.tar.xz + path: build/p2pool_source.tar.xz diff --git a/.gitea/workflows/test-sync.yml b/.gitea/workflows/test-sync.yml new file mode 100644 index 0000000..22ab814 --- /dev/null +++ b/.gitea/workflows/test-sync.yml @@ -0,0 +1,224 @@ +name: Sync test + +on: + workflow_dispatch: + +jobs: + sync-test-ubuntu-tsan: + + timeout-minutes: 60 + runs-on: ubuntu-24.04 + + steps: + - name: Install dependencies + run: | + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + sudo apt-get update + sudo apt-get install -y git build-essential cmake libuv1-dev libzmq3-dev libsodium-dev libpgm-dev libnorm-dev libgss-dev libcurl4-openssl-dev libidn2-0-dev gcc-12 g++-12 + + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Build libcurl + run: | + cd external/src/curl + cmake . -DCMAKE_C_COMPILER=gcc-12 -DCMAKE_C_FLAGS='-fsanitize=thread -Og -fno-omit-frame-pointer -g' -DBUILD_CURL_EXE=OFF -DBUILD_SHARED_LIBS=OFF -DCURL_DISABLE_INSTALL=ON -DCURL_ENABLE_EXPORT_TARGET=OFF -DCURL_DISABLE_HEADERS_API=ON -DCURL_DISABLE_BINDLOCAL=ON -DBUILD_LIBCURL_DOCS=OFF -DBUILD_MISC_DOCS=OFF -DENABLE_CURL_MANUAL=OFF -DCURL_ZLIB=OFF -DCURL_BROTLI=OFF -DCURL_ZSTD=OFF -DCURL_DISABLE_ALTSVC=ON -DCURL_DISABLE_COOKIES=ON -DCURL_DISABLE_DOH=ON -DCURL_DISABLE_GETOPTIONS=ON -DCURL_DISABLE_HSTS=ON -DCURL_DISABLE_LIBCURL_OPTION=ON -DCURL_DISABLE_MIME=ON -DCURL_DISABLE_NETRC=ON -DCURL_DISABLE_NTLM=ON -DCURL_DISABLE_PARSEDATE=ON -DCURL_DISABLE_PROGRESS_METER=ON -DCURL_DISABLE_SHUFFLE_DNS=ON -DCURL_DISABLE_SOCKETPAIR=ON -DCURL_DISABLE_VERBOSE_STRINGS=ON -DCURL_DISABLE_WEBSOCKETS=ON -DHTTP_ONLY=ON -DCURL_ENABLE_SSL=OFF -DUSE_LIBIDN2=OFF -DCURL_USE_LIBPSL=OFF -DCURL_USE_LIBSSH2=OFF -DENABLE_UNIX_SOCKETS=OFF -DCURL_DISABLE_TESTS=ON -DUSE_NGHTTP2=OFF -DBUILD_EXAMPLES=OFF -DP2POOL_BORINGSSL=ON -DCURL_DISABLE_SRP=ON -DCURL_DISABLE_AWS=ON -DCURL_DISABLE_BASIC_AUTH=ON -DCURL_DISABLE_BEARER_AUTH=ON -DCURL_DISABLE_KERBEROS_AUTH=ON -DCURL_DISABLE_NEGOTIATE_AUTH=ON -DOPENSSL_INCLUDE_DIR=../grpc/third_party/boringssl-with-bazel/include + make -j$(nproc) + + - name: Build libuv + run: | + cd external/src/libuv + mkdir build + cd build + cmake .. -DCMAKE_C_COMPILER=gcc-12 -DCMAKE_C_FLAGS='-fsanitize=thread -Og -fno-omit-frame-pointer -g' -DBUILD_TESTING=OFF -DLIBUV_BUILD_SHARED=OFF + make -j$(nproc) + + - name: Build libzmq + run: | + cd external/src/libzmq + mkdir build + cd build + cmake .. -DCMAKE_C_COMPILER=gcc-12 -DCMAKE_CXX_COMPILER=g++-12 -DCMAKE_C_FLAGS='-fsanitize=thread -Og -fno-omit-frame-pointer -g' -DCMAKE_CXX_FLAGS='-fsanitize=thread -Og -fno-omit-frame-pointer -g' -DWITH_LIBSODIUM=OFF -DWITH_LIBBSD=OFF -DBUILD_TESTS=OFF -DWITH_DOCS=OFF -DENABLE_DRAFTS=OFF -DBUILD_SHARED=OFF -DCMAKE_POLICY_VERSION_MINIMUM="3.5" + make -j$(nproc) + + - name: Build p2pool + run: | + mkdir build + cd build + cmake .. -DDEV_TEST_SYNC=ON -DDEV_WITH_TSAN=ON -DCMAKE_C_COMPILER=gcc-12 -DCMAKE_CXX_COMPILER=g++-12 -DCMAKE_C_FLAGS='-fsanitize=thread -Og -fno-omit-frame-pointer -g' -DCMAKE_CXX_FLAGS='-fsanitize=thread -Og -fno-omit-frame-pointer -g' -DWITH_LTO=OFF -DSTATIC_LIBS=ON -DWITH_INDEXED_HASHES=ON -DCMAKE_POLICY_VERSION_MINIMUM="3.5" + make -j$(nproc) p2pool + + - name: Run p2pool + run: | + cd build + mkdir data + python ../tests/src/stratum_dummy.py 1 & + python ../tests/src/stratum_dummy.py 2 & + python ../tests/src/stratum_dummy.py 3 & + sudo sysctl vm.mmap_rnd_bits=28 + TSAN_OPTIONS="suppressions=../tests/src/tsan_sup.txt halt_on_error=1 history_size=4" ./p2pool --host seed01.whiskymine.io --rpc-port 19089 --zmq-port 19084 --host seed02.whiskymine.io --rpc-port 19089 --zmq-port 19084 --wallet SC11n4s2UEj9Rc8XxppPbegwQethVmREpG9JP3aJUBGRCuD3wEvS4qtYtBjhqSx3S1hw3WDCfmbWKHJqa9g5Vqyo3jrsReJ5vp ${{ secrets.MM_PARAMS }} --mini --out-peers 200 --data-api data --local-api --loglevel 6 + + - name: Check synchronization + run: | + cd build + grep 'Synchronization finished successfully' p2pool.log + + - name: Check p2pool.log for errors + run: | + cd build + ../scripts/workflows/test-sync-check.sh + + - name: Archive p2pool.log + if: '!cancelled()' + uses: actions/upload-artifact@v4 + with: + name: p2pool_ubuntu_data_tsan + path: | + build/*.log + build/data/ + + sync-test-ubuntu-msan: + timeout-minutes: 60 + runs-on: ubuntu-24.04 + + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y git build-essential cmake ninja-build libuv1-dev libzmq3-dev libsodium-dev libpgm-dev libnorm-dev libgss-dev libcurl4-openssl-dev libidn2-0-dev + + - name: Install clang + run: | + wget https://apt.llvm.org/llvm.sh + chmod +x llvm.sh + sudo ./llvm.sh 21 all + + - name: Build libcxx_msan + run: | + git clone --depth=1 https://github.com/llvm/llvm-project -b release/21.x + cd llvm-project + mkdir build + cmake -G Ninja -S runtimes -B build -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" -DCMAKE_C_COMPILER=clang-21 -DCMAKE_CXX_COMPILER=clang++-21 -DLLVM_USE_SANITIZER=MemoryWithOrigins -DLIBCXXABI_USE_LLVM_UNWINDER=OFF + ninja -C build cxx cxxabi + cd build + mkdir /tmp/libcxx_msan + cp -r include /tmp/libcxx_msan + cp -r lib /tmp/libcxx_msan + + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Build libcurl + run: | + cd external/src/curl + cmake . -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=clang-21 -DCMAKE_C_FLAGS='-fsanitize=memory -fsanitize-recover -fsanitize-memory-track-origins -O0 -fno-omit-frame-pointer -g3' -DBUILD_CURL_EXE=OFF -DBUILD_SHARED_LIBS=OFF -DCURL_DISABLE_INSTALL=ON -DCURL_ENABLE_EXPORT_TARGET=OFF -DCURL_DISABLE_HEADERS_API=ON -DCURL_DISABLE_BINDLOCAL=ON -DBUILD_LIBCURL_DOCS=OFF -DBUILD_MISC_DOCS=OFF -DENABLE_CURL_MANUAL=OFF -DCURL_ZLIB=OFF -DCURL_BROTLI=OFF -DCURL_ZSTD=OFF -DCURL_DISABLE_ALTSVC=ON -DCURL_DISABLE_COOKIES=ON -DCURL_DISABLE_DOH=ON -DCURL_DISABLE_GETOPTIONS=ON -DCURL_DISABLE_HSTS=ON -DCURL_DISABLE_LIBCURL_OPTION=ON -DCURL_DISABLE_MIME=ON -DCURL_DISABLE_NETRC=ON -DCURL_DISABLE_NTLM=ON -DCURL_DISABLE_PARSEDATE=ON -DCURL_DISABLE_PROGRESS_METER=ON -DCURL_DISABLE_SHUFFLE_DNS=ON -DCURL_DISABLE_SOCKETPAIR=ON -DCURL_DISABLE_VERBOSE_STRINGS=ON -DCURL_DISABLE_WEBSOCKETS=ON -DHTTP_ONLY=ON -DCURL_ENABLE_SSL=OFF -DUSE_LIBIDN2=OFF -DCURL_USE_LIBPSL=OFF -DCURL_USE_LIBSSH2=OFF -DENABLE_UNIX_SOCKETS=OFF -DCURL_DISABLE_TESTS=ON -DUSE_NGHTTP2=OFF -DBUILD_EXAMPLES=OFF -DP2POOL_BORINGSSL=ON -DCURL_DISABLE_SRP=ON -DCURL_DISABLE_AWS=ON -DCURL_DISABLE_BASIC_AUTH=ON -DCURL_DISABLE_BEARER_AUTH=ON -DCURL_DISABLE_KERBEROS_AUTH=ON -DCURL_DISABLE_NEGOTIATE_AUTH=ON -DOPENSSL_INCLUDE_DIR=../grpc/third_party/boringssl-with-bazel/include + make -j$(nproc) + + - name: Build libuv + run: | + cd external/src/libuv + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=clang-21 -DCMAKE_C_FLAGS='-fsanitize=memory -fsanitize-recover -fsanitize-memory-track-origins -O0 -fno-omit-frame-pointer -g3' -DBUILD_TESTING=OFF -DLIBUV_BUILD_SHARED=OFF + make -j$(nproc) + + - name: Build libzmq + run: | + cd external/src/libzmq + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=clang-21 -DCMAKE_CXX_COMPILER=clang++-21 -DCMAKE_C_FLAGS='-fsanitize=memory -fsanitize-recover -fsanitize-memory-track-origins -O0 -fno-omit-frame-pointer -g3' -DCMAKE_CXX_FLAGS='-nostdinc++ -nostdlib++ -fsanitize=memory -fsanitize-recover -fsanitize-memory-track-origins -isystem /tmp/libcxx_msan/include/c++/v1 -O0 -fno-omit-frame-pointer -g3' -DWITH_LIBSODIUM=OFF -DWITH_LIBBSD=OFF -DBUILD_TESTS=OFF -DWITH_DOCS=OFF -DENABLE_DRAFTS=OFF -DBUILD_SHARED=OFF -DCMAKE_POLICY_VERSION_MINIMUM="3.5" + make -j$(nproc) + + - name: Build p2pool + run: | + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=clang-21 -DCMAKE_CXX_COMPILER=clang++-21 -DCMAKE_C_FLAGS='-fsanitize=memory -fsanitize-recover -fsanitize-memory-track-origins -fno-omit-frame-pointer' -DCMAKE_CXX_FLAGS='-nostdinc++ -nostdlib++ -fsanitize=memory -fsanitize-recover -fsanitize-memory-track-origins -isystem /tmp/libcxx_msan/include/c++/v1 -L/tmp/libcxx_msan/lib -Wl,-rpath /tmp/libcxx_msan/lib -lc++ -lc++abi -Wno-unused-command-line-argument -fuse-ld=lld-21 -fno-omit-frame-pointer' -DDEV_TEST_SYNC=ON -DDEV_WITH_MSAN=ON -DWITH_LTO=OFF -DSTATIC_LIBS=ON -DWITH_INDEXED_HASHES=ON -DCMAKE_POLICY_VERSION_MINIMUM="3.5" + make -j$(nproc) p2pool + + - name: Run p2pool + run: | + cd build + mkdir data + python ../tests/src/stratum_dummy.py 1 & + python ../tests/src/stratum_dummy.py 2 & + python ../tests/src/stratum_dummy.py 3 & + sudo sysctl vm.mmap_rnd_bits=28 + MSAN_OPTIONS="halt_on_error=1" ./p2pool --host seed01.whiskymine.io --rpc-port 19089 --zmq-port 19084 --host seed02.whiskymine.io --rpc-port 19089 --zmq-port 19084 --wallet SC11n4s2UEj9Rc8XxppPbegwQethVmREpG9JP3aJUBGRCuD3wEvS4qtYtBjhqSx3S1hw3WDCfmbWKHJqa9g5Vqyo3jrsReJ5vp ${{ secrets.MM_PARAMS }} --out-peers 50 --data-api data --local-api --loglevel 6 + + - name: Check synchronization + run: | + cd build + grep 'Synchronization finished successfully' p2pool.log + + - name: Check p2pool.log for errors + run: | + cd build + ../scripts/workflows/test-sync-check.sh + + - name: Archive p2pool.log + if: '!cancelled()' + uses: actions/upload-artifact@v4 + with: + name: p2pool_ubuntu_data_msan + path: | + build/*.log + build/data/ + + sync-test-ubuntu-ubsan: + + timeout-minutes: 60 + runs-on: ubuntu-24.04 + + steps: + - name: Install dependencies + run: | + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + sudo apt-get update + sudo apt-get install -y git build-essential cmake libuv1-dev libzmq3-dev libsodium-dev libpgm-dev libnorm-dev libgss-dev libcurl4-openssl-dev libidn2-0-dev gcc-12 g++-12 + + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Build p2pool + run: | + mkdir build + cd build + cmake .. -DDEV_TEST_SYNC=ON -DDEV_WITH_UBSAN=ON -DCMAKE_C_COMPILER=gcc-12 -DCMAKE_CXX_COMPILER=g++-12 -DCMAKE_C_FLAGS='-fsanitize=undefined -Og -fno-omit-frame-pointer -g' -DCMAKE_CXX_FLAGS='-fsanitize=undefined -Og -fno-omit-frame-pointer -g' -DWITH_LTO=OFF -DSTATIC_LIBS=ON -DWITH_INDEXED_HASHES=ON -DCMAKE_POLICY_VERSION_MINIMUM="3.5" + make -j$(nproc) p2pool + + - name: Run p2pool + run: | + cd build + mkdir data + python ../tests/src/stratum_dummy.py 1 & + python ../tests/src/stratum_dummy.py 2 & + python ../tests/src/stratum_dummy.py 3 & + sudo sysctl vm.mmap_rnd_bits=28 + UBSAN_OPTIONS="halt_on_error=1" ./p2pool --host seed01.whiskymine.io --rpc-port 19089 --zmq-port 19084 --host seed02.whiskymine.io --rpc-port 19089 --zmq-port 19084 --wallet SC11n4s2UEj9Rc8XxppPbegwQethVmREpG9JP3aJUBGRCuD3wEvS4qtYtBjhqSx3S1hw3WDCfmbWKHJqa9g5Vqyo3jrsReJ5vp ${{ secrets.MM_PARAMS }} --mini --out-peers 200 --data-api data --local-api --loglevel 6 + + - name: Check synchronization + run: | + cd build + grep 'Synchronization finished successfully' p2pool.log + + - name: Check p2pool.log for errors + run: | + cd build + ../scripts/workflows/test-sync-check.sh + + - name: Archive p2pool.log + if: '!cancelled()' + uses: actions/upload-artifact@v4 + with: + name: p2pool_ubuntu_data_ubsan + path: | + build/*.log + build/data/ diff --git a/.github/workflows/build-releases.yml b/.github/workflows/build-releases.yml index 2ef1409..bd58ff0 100644 --- a/.github/workflows/build-releases.yml +++ b/.github/workflows/build-releases.yml @@ -1,9 +1,6 @@ name: Build Releases on: - push: - tags: - - 'v*' workflow_dispatch: inputs: version: diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 9b791e7..aff6604 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -1,14 +1,7 @@ name: C/C++ CI on: - push: - branches: ["main"] - paths-ignore: - - 'docker-compose/**' - - 'docs/**' - - 'README.md' - - pull_request: + workflow_dispatch: jobs: build-alpine-static: diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index 2eec50f..5c75396 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -1,14 +1,7 @@ name: clang-tidy on: - push: - branches: ["main"] - paths-ignore: - - 'docker-compose/**' - - 'docs/**' - - 'README.md' - - pull_request: + workflow_dispatch: jobs: clang-tidy: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 10458b4..f610ed1 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -12,17 +12,7 @@ name: "CodeQL" on: - push: - branches: ["main"] - paths-ignore: - - 'docker-compose/**' - - 'docs/**' - - 'README.md' - - pull_request: - - schedule: - - cron: '44 11 * * 0' + workflow_dispatch: jobs: analyze: @@ -72,4 +62,3 @@ jobs: - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 - diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 19e48bf..ccaff4a 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -1,14 +1,7 @@ name: Code coverage on: - push: - branches: ["main"] - paths-ignore: - - 'docker-compose/**' - - 'docs/**' - - 'README.md' - - pull_request: + workflow_dispatch: jobs: coverage: diff --git a/.github/workflows/cppcheck.yml b/.github/workflows/cppcheck.yml index f1ff44e..6ee1274 100644 --- a/.github/workflows/cppcheck.yml +++ b/.github/workflows/cppcheck.yml @@ -1,17 +1,7 @@ name: cppcheck on: - push: - branches: ["main"] - paths-ignore: - - 'docker-compose/**' - - 'docs/**' - - 'README.md' - - pull_request: - - schedule: - - cron: '57 0 * * *' + workflow_dispatch: jobs: cppcheck-ubuntu: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1cc464e..34baa8a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,15 +1,6 @@ name: Release on: - push: - branches: ["master"] - paths-ignore: - - 'docker-compose/**' - - 'docs/**' - - 'README.md' - - pull_request: - workflow_dispatch: inputs: create_release: diff --git a/.github/workflows/msvc-analysis.yml b/.github/workflows/msvc-analysis.yml index 04c10ff..4f40fc3 100644 --- a/.github/workflows/msvc-analysis.yml +++ b/.github/workflows/msvc-analysis.yml @@ -9,17 +9,7 @@ name: Microsoft C++ Code Analysis on: - push: - branches: ["main"] - paths-ignore: - - 'docker-compose/**' - - 'docs/**' - - 'README.md' - - pull_request: - - schedule: - - cron: '40 10 * * 0' + workflow_dispatch: env: # Path to the CMake build directory. diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5ed4cdc..49aba84 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -233,4 +233,3 @@ jobs: with: name: release-files path: release/ - diff --git a/.github/workflows/source-snapshot.yml b/.github/workflows/source-snapshot.yml index 1294ac2..6e77e79 100644 --- a/.github/workflows/source-snapshot.yml +++ b/.github/workflows/source-snapshot.yml @@ -1,10 +1,7 @@ name: source-snapshot on: - push: - branches: ["main"] - - pull_request: + workflow_dispatch: jobs: source-snapshot: diff --git a/.github/workflows/test-sync.yml b/.github/workflows/test-sync.yml index de78591..fab3c61 100644 --- a/.github/workflows/test-sync.yml +++ b/.github/workflows/test-sync.yml @@ -1,17 +1,7 @@ name: Sync test on: - push: - branches: ["main"] - paths-ignore: - - 'docker-compose/**' - - 'docs/**' - - 'README.md' - - pull_request: - - schedule: - - cron: '47 0/3 * * *' + workflow_dispatch: jobs: sync-test-ubuntu-tsan: diff --git a/.gitignore b/.gitignore index a91886b..4d3184e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,8 @@ .vscode build +/build-*/ +/build*/ logs tests/extract_cache tests/extract_chain tests/inspect_dump - diff --git a/scripts/release/linux_x64/p2pool_linux_x64.sh b/scripts/release/linux_x64/p2pool_linux_x64.sh index 5232418..67e51aa 100755 --- a/scripts/release/linux_x64/p2pool_linux_x64.sh +++ b/scripts/release/linux_x64/p2pool_linux_x64.sh @@ -39,7 +39,7 @@ make -j$(nproc) cd /p2pool mkdir build && cd build -cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM="3.5" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="$flags_p2pool" -DCMAKE_CXX_FLAGS="$flags_p2pool" -DOPENSSL_NO_ASM=ON -DSTATIC_BINARY=ON -DARCH_ID=x86_64 -DGIT_COMMIT="$(git rev-parse --short=7 HEAD)" +cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM="3.5" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="$flags_p2pool" -DCMAKE_CXX_FLAGS="$flags_p2pool" -DOPENSSL_NO_ASM=ON -DSTATIC_BINARY=ON -DARCH_ID=x86_64 -DGIT_COMMIT="$(git rev-parse --short=7 HEAD)" -DWITH_GRPC=OFF if ! cmake --build . --target p2pool -- -j$(nproc); then cmake --build . --target p2pool-salvium -- -j$(nproc) mv p2pool-salvium p2pool diff --git a/scripts/release/macos_aarch64/p2pool_macos_aarch64.sh b/scripts/release/macos_aarch64/p2pool_macos_aarch64.sh index b467bf1..64ed777 100755 --- a/scripts/release/macos_aarch64/p2pool_macos_aarch64.sh +++ b/scripts/release/macos_aarch64/p2pool_macos_aarch64.sh @@ -110,7 +110,7 @@ make -j$(nproc) cd /p2pool mkdir build && cd build -cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM="3.5" -DCMAKE_TOOLCHAIN_FILE=../cmake/macos_aarch64_toolchain_clang.cmake -DCMAKE_C_FLAGS="$flags_p2pool" -DCMAKE_CXX_FLAGS="$flags_p2pool" $cmake_osx_args $cmake_compiler_args -DOPENSSL_NO_ASM=ON -DSTATIC_LIBS=ON -DARCH_ID=aarch64 -DGIT_COMMIT="$(git rev-parse --short=7 HEAD)" +cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM="3.5" -DCMAKE_TOOLCHAIN_FILE=../cmake/macos_aarch64_toolchain_clang.cmake -DCMAKE_C_FLAGS="$flags_p2pool" -DCMAKE_CXX_FLAGS="$flags_p2pool" $cmake_osx_args $cmake_compiler_args -DOPENSSL_NO_ASM=ON -DSTATIC_LIBS=ON -DARCH_ID=aarch64 -DGIT_COMMIT="$(git rev-parse --short=7 HEAD)" -DWITH_GRPC=OFF if ! cmake --build . --target p2pool -- -j$(nproc); then cmake --build . --target p2pool-salvium -- -j$(nproc) mv p2pool-salvium p2pool diff --git a/scripts/release/windows_x64/p2pool_windows_x64.sh b/scripts/release/windows_x64/p2pool_windows_x64.sh index 54461c9..8d2d7aa 100755 --- a/scripts/release/windows_x64/p2pool_windows_x64.sh +++ b/scripts/release/windows_x64/p2pool_windows_x64.sh @@ -107,7 +107,7 @@ make -j$(nproc) cd /p2pool mkdir build && cd build -cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM="3.5" -DCMAKE_TOOLCHAIN_FILE=../cmake/windows_x86_64_toolchain_clang.cmake -DCMAKE_C_FLAGS="$flags_p2pool" -DCMAKE_CXX_FLAGS="$flags_p2pool" -DOPENSSL_NO_ASM=ON -DSTATIC_BINARY=ON -DARCH_ID=x86_64 -DGIT_COMMIT="$(git rev-parse --short=7 HEAD)" +cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM="3.5" -DCMAKE_TOOLCHAIN_FILE=../cmake/windows_x86_64_toolchain_clang.cmake -DCMAKE_C_FLAGS="$flags_p2pool" -DCMAKE_CXX_FLAGS="$flags_p2pool" -DOPENSSL_NO_ASM=ON -DSTATIC_BINARY=ON -DARCH_ID=x86_64 -DGIT_COMMIT="$(git rev-parse --short=7 HEAD)" -DWITH_GRPC=OFF if ! cmake --build . --target p2pool -- -j$(nproc); then cmake --build . --target p2pool-salvium -- -j$(nproc) mv p2pool-salvium.exe p2pool.exe