From 27bc7a115847963e72b0d9be820480a60d2ca142 Mon Sep 17 00:00:00 2001 From: Fredrick Gabelmann Date: Mon, 13 Jan 2025 14:48:00 -0600 Subject: [PATCH 01/18] chore: updating DigiByte version tag and logos. --- .github/workflows/ci.yml | 40 +++++++-------------- configure.ac | 2 +- depends/packages/boost.mk | 2 +- src/qt/res/icons/digibyte_wallet.png | Bin 22219 -> 21404 bytes src/qt/res/icons/digibyte_wallet_blank.png | Bin 20041 -> 19042 bytes 5 files changed, 14 insertions(+), 30 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6803ecf35a..100257e10b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,16 +11,23 @@ concurrency: on: pull_request: branches: [develop, master] + push: + branches: [feature/**] env: CI_FAILFAST_TEST_LEAVE_DANGLING: 1 # GHA does not care about dangling processes and setting this variable avoids killing the CI script itself on error jobs: build: - runs-on: ubuntu-latest + runs-on: macos-latest steps: - uses: actions/checkout@v2 + - name: Set up Python 3.10.9 + uses: actions/setup-python@v2 + with: + python-version: 3.10.9 + - name: Cache pip id: cache-pip uses: actions/cache@v3 @@ -31,14 +38,6 @@ jobs: key: v1-${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} restore-keys: v1-${{ runner.os }}-pip- - - name: Cache BerkeleyDB - id: cache-db4 - uses: actions/cache@v3 - with: - path: db4 - key: v1-${{ runner.os }}-db4-${{ hashFiles('contrib/install_db4.sh') }} - restore-keys: v1-${{ runner.os }}-db4- - - name: Cache depends build id: cache-depends uses: actions/cache@v3 @@ -48,42 +47,27 @@ jobs: depends/sources depends/sdk-sources depends/work - depends/x86_64-linux-gnu + depends/arch64-apple-darwin* key: v1-${{ runner.os }}-depends-${{ hashFiles('depends/Makefile') }} restore-keys: | v1-${{ runner.os }}-depends- - - name: Install Build Dependencies - run: | - sudo apt-get update - sudo apt-get install -y build-essential libtool autotools-dev automake pkg-config python3 \ - libssl-dev bsdmainutils libevent-dev \ - libboost-dev libboost-system-dev libboost-filesystem-dev libboost-test-dev \ - libsqlite3-dev \ - libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools \ - libqrencode-dev python3-zmq - - name: Install Python Packages if: steps.cache-pip.outputs.cache-hit != 'true' run: | pip3 install pypandoc digibyte_scrypt pyzmq - - name: Install BerkeleyDB - if: steps.cache-db4.outputs.cache-hit != 'true' - run: | - ./contrib/install_db4.sh `pwd` --enable-cxx - - name: Build Dependencies if: steps.cache-depends.outputs.cache-hit != 'true' run: | cd depends - make -j$(nproc) HOST=x86_64-linux-gnu + make -j$(nproc) HOST=aarch64-apple-darwin24.2.0 cd .. - name: Configure and Build run: | ./autogen.sh - CONFIG_SITE=$PWD/depends/x86_64-linux-gnu/share/config.site ./configure --with-bdb --with-sqlite --with-gui=yes --with-zmq + CONFIG_SITE=$PWD/depends/aarch64-apple-darwin24.2.0/share/config.site ./configure --with-bdb --with-sqlite --with-gui=yes --with-zmq make -j$(nproc) - name: Run Tests @@ -94,4 +78,4 @@ jobs: if: failure() with: name: test-suite-log - path: test-suite.log + path: src/test-suite.log diff --git a/configure.ac b/configure.ac index 07eae8dd35..72ee9dd039 100644 --- a/configure.ac +++ b/configure.ac @@ -7,7 +7,7 @@ define(_CLIENT_VERSION_IS_RELEASE, true) define(_COPYRIGHT_YEAR, 2025) define(_COPYRIGHT_HOLDERS,[The %s developers]) define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[DigiByte Core]]) -AC_INIT([DigiByte Core],m4_join([.], _CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MINOR, _CLIENT_VERSION_BUILD)m4_if(_CLIENT_VERSION_RC, [0], [], [rc]_CLIENT_VERSION_RC),[https://github.com/DigiByte-Core/digibyte/issues],[digibyte],[https://digibyte.org/]) +AC_INIT([DigiByte Core],m4_join([.], _CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MINOR, _CLIENT_VERSION_BUILD),[https://github.com/DigiByte-Core/digibyte/issues],[digibyte],[https://digibyte.org/]) AC_CONFIG_SRCDIR([src/validation.cpp]) AC_CONFIG_HEADERS([src/config/digibyte-config.h]) AC_CONFIG_AUX_DIR([build-aux]) diff --git a/depends/packages/boost.mk b/depends/packages/boost.mk index ebbd4c79c8..e85c5fd2a0 100644 --- a/depends/packages/boost.mk +++ b/depends/packages/boost.mk @@ -1,6 +1,6 @@ package=boost $(package)_version=1_84_0 -$(package)_download_path=https://boostorg.jfrog.io/artifactory/main/release/$(subst _,.,$($(package)_version))/source/ +$(package)_download_path=https://archives.boost.io/release/$(subst _,.,$($(package)_version))/source/ $(package)_file_name=boost_$($(package)_version).tar.bz2 $(package)_sha256_hash=cc4b893acf645c9d4b698e9a0f08ca8846aa5d6c68275c14c3e7949c24109454 $(package)_dependencies=native_b2 diff --git a/src/qt/res/icons/digibyte_wallet.png b/src/qt/res/icons/digibyte_wallet.png index 608a3608d386786ee4d61df4fffc85b0b967eeea..e90b8f0f4f449892409bb6b65453f92636f90b61 100644 GIT binary patch literal 21404 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 diff --git a/src/qt/res/icons/digibyte_wallet_blank.png b/src/qt/res/icons/digibyte_wallet_blank.png index 10368c09f776603ec52cfa179069069de1645fa7..2bb6a22597ebdf125debc7b3958a190659c23406 100644 GIT binary patch literal 19042 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 Date: Mon, 13 Jan 2025 15:06:13 -0600 Subject: [PATCH 02/18] chore: updated github action concurrency --- .github/workflows/ci.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 100257e10b..d3f8bbef15 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,6 +52,9 @@ jobs: restore-keys: | v1-${{ runner.os }}-depends- + - name: Install brew dependencies + run: brew install autoconf automake libtool pkg-config pandoc + - name: Install Python Packages if: steps.cache-pip.outputs.cache-hit != 'true' run: | @@ -61,17 +64,17 @@ jobs: if: steps.cache-depends.outputs.cache-hit != 'true' run: | cd depends - make -j$(nproc) HOST=aarch64-apple-darwin24.2.0 + make -j2 HOST=aarch64-apple-darwin24.2.0 cd .. - name: Configure and Build run: | ./autogen.sh CONFIG_SITE=$PWD/depends/aarch64-apple-darwin24.2.0/share/config.site ./configure --with-bdb --with-sqlite --with-gui=yes --with-zmq - make -j$(nproc) + make -j2 - name: Run Tests - run: make check -j$(nproc) + run: make check - name: Upload Test Suite Log uses: actions/upload-artifact@v3 From 3ced4c0b0bcd39dfdb8d5e3e8caf0c69bf6b84e0 Mon Sep 17 00:00:00 2001 From: Fredrick Gabelmann Date: Mon, 13 Jan 2025 17:44:20 -0600 Subject: [PATCH 03/18] chore: Added github action permissions --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d3f8bbef15..7bf7177a4c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,6 +4,9 @@ name: DigiByte CI +permissions: + contents: read + concurrency: group: ${{ github.event_name != 'pull_request' && github.run_id || github.ref }} cancel-in-progress: true From 5e85beec8ddf18799a8e1c55c6d883a34ac3ddb1 Mon Sep 17 00:00:00 2001 From: Fredrick Gabelmann Date: Mon, 13 Jan 2025 18:54:28 -0600 Subject: [PATCH 04/18] chore: Updated CodeQL to align with ci.yml --- .github/workflows/codeql.yml | 55 ++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 6d28f09789..d2ea2a6a53 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -76,6 +76,43 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: Set up Python 3.10.9 + uses: actions/setup-python@v2 + with: + python-version: 3.10.90 + + - name: Cache pip + id: cache-pip + uses: actions/cache@v3 + with: + path: | + ~/.cache/pip + ~/.cache/pip3 + key: v1-${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: v1-${{ runner.os }}-pip- + + - name: Cache depends build + id: cache-depends + uses: actions/cache@v3 + with: + path: | + depends/built + depends/sources + depends/sdk-sources + depends/work + depends/arch64-apple-darwin* + key: v1-${{ runner.os }}-depends-${{ hashFiles('depends/Makefile') }} + restore-keys: | + v1-${{ runner.os }}-depends- + + - name: Install brew dependencies + run: brew install autoconf automake libtool pkg-config pandoc + + - name: Install Python Packages + if: steps.cache-pip.outputs.cache-hit != 'true' + run: | + pip3 install pypandoc digibyte_scrypt pyzmq + # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v3 @@ -95,27 +132,15 @@ jobs: - if: matrix.build-mode == 'manual' shell: bash run: | - # Cache management from your existing workflow - sudo apt-get update - sudo apt-get install -y build-essential libtool autotools-dev automake pkg-config python3 \ - libssl-dev bsdmainutils libevent-dev \ - libboost-dev libboost-system-dev libboost-filesystem-dev libboost-test-dev \ - libsqlite3-dev \ - libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools \ - libqrencode-dev python3-zmq - - # Install BerkeleyDB - ./contrib/install_db4.sh `pwd` --enable-cxx - # Build Dependencies cd depends - make -j$(nproc) HOST=x86_64-linux-gnu + make -j2 HOST=aarch64-apple-darwin24.2.0 cd .. # Configure and Build ./autogen.sh - CONFIG_SITE=$PWD/depends/x86_64-linux-gnu/share/config.site ./configure --with-bdb --with-sqlite --with-gui=yes --with-zmq - make -j$(nproc) + CONFIG_SITE=$PWD/depends/aarch64-apple-darwin24.2.0/share/config.site ./configure --with-bdb --with-sqlite --with-gui=yes --with-zmq + make -j2 - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 From b67c7d3005844c98c36fbf0399476cf5848b13e7 Mon Sep 17 00:00:00 2001 From: Fredrick Gabelmann Date: Mon, 13 Jan 2025 18:58:19 -0600 Subject: [PATCH 05/18] chore: Removed push rule from GitHub Runner --- .github/workflows/ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7bf7177a4c..a8435371df 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,8 +14,6 @@ concurrency: on: pull_request: branches: [develop, master] - push: - branches: [feature/**] env: CI_FAILFAST_TEST_LEAVE_DANGLING: 1 # GHA does not care about dangling processes and setting this variable avoids killing the CI script itself on error From c79af40851f0c5c8088e3ff71a11f98018fa5c98 Mon Sep 17 00:00:00 2001 From: Fredrick Gabelmann Date: Mon, 13 Jan 2025 18:59:42 -0600 Subject: [PATCH 06/18] chore: Removed unnecessary branches from GitHub runner --- .github/workflows/ci.yml | 2 +- .github/workflows/codeql.yml | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a8435371df..a2eae6ebf4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ concurrency: on: pull_request: - branches: [develop, master] + branches: [develop] env: CI_FAILFAST_TEST_LEAVE_DANGLING: 1 # GHA does not care about dangling processes and setting this variable avoids killing the CI script itself on error diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index d2ea2a6a53..56ca557e68 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -17,13 +17,8 @@ concurrency: cancel-in-progress: true on: - push: - branches: ["develop", "master", "release**/**/*"] - paths-ignore: - - 'depends/**' - - 'contrib/**' pull_request: - branches: ["develop", "master", "release**/**/*"] + branches: ["develop"] paths-ignore: - 'depends/**' - 'contrib/**' From 2fc91eb22f1f29508291320443b6bb61213f5b16 Mon Sep 17 00:00:00 2001 From: Fredrick Gabelmann Date: Mon, 13 Jan 2025 19:00:28 -0600 Subject: [PATCH 07/18] chore: Added permissions and concurrency to CodeQL runner --- .github/workflows/codeql.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 56ca557e68..eb7fa3faed 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -11,9 +11,11 @@ # name: "CodeQL Advanced" -# Add this concurrency configuration right after the 'name' field +permissions: + contents: read + concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{ github.event_name != 'pull_request' && github.run_id || github.ref }} cancel-in-progress: true on: From 7f7ac04ef7f8ab69bb4e9a57407bcc37f8ef4947 Mon Sep 17 00:00:00 2001 From: Fredrick Gabelmann Date: Mon, 13 Jan 2025 19:02:57 -0600 Subject: [PATCH 08/18] chore: Resolved incorrect python version in github runner --- .github/workflows/codeql.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index eb7fa3faed..1fada1c47d 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -76,7 +76,7 @@ jobs: - name: Set up Python 3.10.9 uses: actions/setup-python@v2 with: - python-version: 3.10.90 + python-version: 3.10.9 - name: Cache pip id: cache-pip From 1675f978627e4970656fde89b4c318a32ba5479a Mon Sep 17 00:00:00 2001 From: Fredrick Gabelmann Date: Mon, 13 Jan 2025 19:05:26 -0600 Subject: [PATCH 09/18] chore: Using macos-latest for CodeQL runner --- .github/workflows/ci.yml | 2 +- .github/workflows/codeql.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a2eae6ebf4..1e663521b4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ concurrency: on: pull_request: - branches: [develop] + branches: ["develop"] env: CI_FAILFAST_TEST_LEAVE_DANGLING: 1 # GHA does not care about dangling processes and setting this variable avoids killing the CI script itself on error diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 1fada1c47d..fd81f11cba 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -35,7 +35,7 @@ jobs: # - https://gh.io/supported-runners-and-hardware-resources # - https://gh.io/using-larger-runners (GitHub.com only) # Consider using larger runners or machines with greater resources for possible analysis time improvements. - runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + runs-on: macos-latest #${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} permissions: # required for all workflows security-events: write From 5b6da82c085c171c28d3329b732e548082b227b9 Mon Sep 17 00:00:00 2001 From: Fredrick Gabelmann Date: Mon, 13 Jan 2025 19:10:33 -0600 Subject: [PATCH 10/18] chore: debugging ci.yml workflow run --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1e663521b4..41cc3510d9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ concurrency: on: pull_request: - branches: ["develop"] + branches: ["develop", "master", "main"] env: CI_FAILFAST_TEST_LEAVE_DANGLING: 1 # GHA does not care about dangling processes and setting this variable avoids killing the CI script itself on error From 9f25195ad454b8ce508c9ed3bbdd00568f1f34d5 Mon Sep 17 00:00:00 2001 From: Fredrick Gabelmann Date: Mon, 13 Jan 2025 19:19:52 -0600 Subject: [PATCH 11/18] chore: consolidating ci --- .github/workflows/ci.yml | 85 ------------------------------------ .github/workflows/codeql.yml | 3 ++ 2 files changed, 3 insertions(+), 85 deletions(-) delete mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 41cc3510d9..0000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright (c) 2023 The DigiByte Core developers -# Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. - -name: DigiByte CI - -permissions: - contents: read - -concurrency: - group: ${{ github.event_name != 'pull_request' && github.run_id || github.ref }} - cancel-in-progress: true - -on: - pull_request: - branches: ["develop", "master", "main"] - -env: - CI_FAILFAST_TEST_LEAVE_DANGLING: 1 # GHA does not care about dangling processes and setting this variable avoids killing the CI script itself on error - -jobs: - build: - runs-on: macos-latest - steps: - - uses: actions/checkout@v2 - - - name: Set up Python 3.10.9 - uses: actions/setup-python@v2 - with: - python-version: 3.10.9 - - - name: Cache pip - id: cache-pip - uses: actions/cache@v3 - with: - path: | - ~/.cache/pip - ~/.cache/pip3 - key: v1-${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} - restore-keys: v1-${{ runner.os }}-pip- - - - name: Cache depends build - id: cache-depends - uses: actions/cache@v3 - with: - path: | - depends/built - depends/sources - depends/sdk-sources - depends/work - depends/arch64-apple-darwin* - key: v1-${{ runner.os }}-depends-${{ hashFiles('depends/Makefile') }} - restore-keys: | - v1-${{ runner.os }}-depends- - - - name: Install brew dependencies - run: brew install autoconf automake libtool pkg-config pandoc - - - name: Install Python Packages - if: steps.cache-pip.outputs.cache-hit != 'true' - run: | - pip3 install pypandoc digibyte_scrypt pyzmq - - - name: Build Dependencies - if: steps.cache-depends.outputs.cache-hit != 'true' - run: | - cd depends - make -j2 HOST=aarch64-apple-darwin24.2.0 - cd .. - - - name: Configure and Build - run: | - ./autogen.sh - CONFIG_SITE=$PWD/depends/aarch64-apple-darwin24.2.0/share/config.site ./configure --with-bdb --with-sqlite --with-gui=yes --with-zmq - make -j2 - - - name: Run Tests - run: make check - - - name: Upload Test Suite Log - uses: actions/upload-artifact@v3 - if: failure() - with: - name: test-suite-log - path: src/test-suite.log diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index fd81f11cba..bd79fb4141 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -139,6 +139,9 @@ jobs: CONFIG_SITE=$PWD/depends/aarch64-apple-darwin24.2.0/share/config.site ./configure --with-bdb --with-sqlite --with-gui=yes --with-zmq make -j2 + # Run Tests + make check + - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 with: From 981368372f70801ac7536c6baf3bbd9ffdc708f4 Mon Sep 17 00:00:00 2001 From: Fredrick Gabelmann Date: Mon, 13 Jan 2025 22:09:14 -0600 Subject: [PATCH 12/18] Revert "chore: Updated CodeQL to align with ci.yml" This reverts commit 5e85beec8ddf18799a8e1c55c6d883a34ac3ddb1. --- .github/workflows/codeql.yml | 48 +++++++++++++----------------------- 1 file changed, 17 insertions(+), 31 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index bd79fb4141..de746221c2 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -15,7 +15,7 @@ permissions: contents: read concurrency: - group: ${{ github.event_name != 'pull_request' && github.run_id || github.ref }} + group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true on: @@ -24,8 +24,6 @@ on: paths-ignore: - 'depends/**' - 'contrib/**' - schedule: - - cron: "0 0 * * 0" jobs: analyze: @@ -74,39 +72,17 @@ jobs: uses: actions/checkout@v4 - name: Set up Python 3.10.9 + if: matrix.build-mode == 'manual' uses: actions/setup-python@v2 with: python-version: 3.10.9 - - name: Cache pip - id: cache-pip - uses: actions/cache@v3 - with: - path: | - ~/.cache/pip - ~/.cache/pip3 - key: v1-${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} - restore-keys: v1-${{ runner.os }}-pip- - - - name: Cache depends build - id: cache-depends - uses: actions/cache@v3 - with: - path: | - depends/built - depends/sources - depends/sdk-sources - depends/work - depends/arch64-apple-darwin* - key: v1-${{ runner.os }}-depends-${{ hashFiles('depends/Makefile') }} - restore-keys: | - v1-${{ runner.os }}-depends- - - name: Install brew dependencies + if: matrix.build-mode == 'manual' run: brew install autoconf automake libtool pkg-config pandoc - name: Install Python Packages - if: steps.cache-pip.outputs.cache-hit != 'true' + if: matrix.build-mode == 'manual' run: | pip3 install pypandoc digibyte_scrypt pyzmq @@ -129,6 +105,18 @@ jobs: - if: matrix.build-mode == 'manual' shell: bash run: | + # Cache management from your existing workflow + sudo apt-get update + sudo apt-get install -y build-essential libtool autotools-dev automake pkg-config python3 \ + libssl-dev bsdmainutils libevent-dev \ + libboost-dev libboost-system-dev libboost-filesystem-dev libboost-test-dev \ + libsqlite3-dev \ + libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools \ + libqrencode-dev python3-zmq + + # Install BerkeleyDB + ./contrib/install_db4.sh `pwd` --enable-cxx + # Build Dependencies cd depends make -j2 HOST=aarch64-apple-darwin24.2.0 @@ -138,9 +126,7 @@ jobs: ./autogen.sh CONFIG_SITE=$PWD/depends/aarch64-apple-darwin24.2.0/share/config.site ./configure --with-bdb --with-sqlite --with-gui=yes --with-zmq make -j2 - - # Run Tests - make check +2 - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 From 533328ca66cff36f4c69e58ba610f424bfcd1d54 Mon Sep 17 00:00:00 2001 From: Fredrick Gabelmann Date: Mon, 13 Jan 2025 22:13:41 -0600 Subject: [PATCH 13/18] chore: reverting and tuning ci runners --- .github/workflows/ci.yml | 85 ++++++++++++++++++++++++++++++++++++ .github/workflows/codeql.yml | 31 +++++++------ 2 files changed, 100 insertions(+), 16 deletions(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000000..8bf0517e4e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,85 @@ +# Copyright (c) 2023 The DigiByte Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +name: DigiByte CI + +permissions: + contents: read + +concurrency: + group: ${{ github.event_name != 'pull_request' && github.run_id || github.ref }} + cancel-in-progress: true + +on: + pull_request: + branches: ["develop"] + +env: + CI_FAILFAST_TEST_LEAVE_DANGLING: 1 # GHA does not care about dangling processes and setting this variable avoids killing the CI script itself on error + +jobs: + build: + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + + - name: Set up Python 3.10.9 + uses: actions/setup-python@v2 + with: + python-version: 3.10.9 + + - name: Cache pip + id: cache-pip + uses: actions/cache@v3 + with: + path: | + ~/.cache/pip + ~/.cache/pip3 + key: v1-${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: v1-${{ runner.os }}-pip- + + - name: Cache depends build + id: cache-depends + uses: actions/cache@v3 + with: + path: | + depends/built + depends/sources + depends/sdk-sources + depends/work + depends/arch64-apple-darwin* + key: v1-${{ runner.os }}-depends-${{ hashFiles('depends/Makefile') }} + restore-keys: | + v1-${{ runner.os }}-depends- + + - name: Install brew dependencies + run: brew install autoconf automake libtool pkg-config pandoc + + - name: Install Python Packages + if: steps.cache-pip.outputs.cache-hit != 'true' + run: | + pip3 install pypandoc digibyte_scrypt pyzmq + + - name: Build Dependencies + if: steps.cache-depends.outputs.cache-hit != 'true' + run: | + cd depends + make -j2 HOST=aarch64-apple-darwin24.2.0 + cd .. + + - name: Configure and Build + run: | + ./autogen.sh + CONFIG_SITE=$PWD/depends/aarch64-apple-darwin24.2.0/share/config.site ./configure --with-bdb --with-sqlite --with-gui=yes --with-zmq + make -j2 + + - name: Run Tests + run: make check + + - name: Upload Test Suite Log + uses: actions/upload-artifact@v3 + if: failure() + with: + name: test-suite-log + path: src/test-suite.log \ No newline at end of file diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index de746221c2..f8238f225f 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -71,21 +71,6 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Set up Python 3.10.9 - if: matrix.build-mode == 'manual' - uses: actions/setup-python@v2 - with: - python-version: 3.10.9 - - - name: Install brew dependencies - if: matrix.build-mode == 'manual' - run: brew install autoconf automake libtool pkg-config pandoc - - - name: Install Python Packages - if: matrix.build-mode == 'manual' - run: | - pip3 install pypandoc digibyte_scrypt pyzmq - # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v3 @@ -96,6 +81,21 @@ jobs: dependency-caching: true config-file: ./.github/codeql/codeql-config.yml + - if: matrix.build-mode == 'manual' + name: Set up Python 3.10.9 + uses: actions/setup-python@v2 + with: + python-version: 3.10.9 + + - if: matrix.build-mode == 'manual' + name: Install brew dependencies + run: brew install autoconf automake libtool pkg-config pandoc + + - if: matrix.build-mode == 'manual' + name: Install Python Packages + run: | + pip3 install pypandoc digibyte_scrypt pyzmq + # If the analyze step fails for one of the languages you are analyzing with # "We were unable to automatically build your code", modify the matrix above # to set the build mode to "manual" for that language. Then modify this step @@ -126,7 +126,6 @@ jobs: ./autogen.sh CONFIG_SITE=$PWD/depends/aarch64-apple-darwin24.2.0/share/config.site ./configure --with-bdb --with-sqlite --with-gui=yes --with-zmq make -j2 -2 - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 From 86a260a83f0e5abda5f63c3d0e1d229ad9c4aa74 Mon Sep 17 00:00:00 2001 From: GTO90 <33842337+gto90@users.noreply.github.com> Date: Mon, 13 Jan 2025 22:37:30 -0600 Subject: [PATCH 14/18] Update codeql.yml --- .github/workflows/codeql.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f8238f225f..d10f754048 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -89,7 +89,7 @@ jobs: - if: matrix.build-mode == 'manual' name: Install brew dependencies - run: brew install autoconf automake libtool pkg-config pandoc + run: arch -arm64 brew install brew autoconf automake libtool pkg-config pandoc - if: matrix.build-mode == 'manual' name: Install Python Packages From 4b592a83dee3f432617855c6c475710eb98e40e1 Mon Sep 17 00:00:00 2001 From: GTO90 <33842337+gto90@users.noreply.github.com> Date: Mon, 13 Jan 2025 23:21:30 -0600 Subject: [PATCH 15/18] Update codeql.yml --- .github/workflows/codeql.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index d10f754048..1d1613a7ad 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -89,7 +89,7 @@ jobs: - if: matrix.build-mode == 'manual' name: Install brew dependencies - run: arch -arm64 brew install brew autoconf automake libtool pkg-config pandoc + run: arch -arm64 brew install autoconf automake libtool pkg-config pandoc - if: matrix.build-mode == 'manual' name: Install Python Packages From 7eedb66783c59be7fd021826ff5d1cb78c8e591f Mon Sep 17 00:00:00 2001 From: GTO90 <33842337+gto90@users.noreply.github.com> Date: Tue, 14 Jan 2025 06:29:42 -0600 Subject: [PATCH 16/18] Update codeql.yml --- .github/workflows/codeql.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 1d1613a7ad..f755fd6ba6 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -105,18 +105,6 @@ jobs: - if: matrix.build-mode == 'manual' shell: bash run: | - # Cache management from your existing workflow - sudo apt-get update - sudo apt-get install -y build-essential libtool autotools-dev automake pkg-config python3 \ - libssl-dev bsdmainutils libevent-dev \ - libboost-dev libboost-system-dev libboost-filesystem-dev libboost-test-dev \ - libsqlite3-dev \ - libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools \ - libqrencode-dev python3-zmq - - # Install BerkeleyDB - ./contrib/install_db4.sh `pwd` --enable-cxx - # Build Dependencies cd depends make -j2 HOST=aarch64-apple-darwin24.2.0 From 6fe0078ac304a25e292a4523251707922e32f1fd Mon Sep 17 00:00:00 2001 From: GTO90 <33842337+gto90@users.noreply.github.com> Date: Tue, 14 Jan 2025 07:14:37 -0600 Subject: [PATCH 17/18] Update ci.yml --- .github/workflows/ci.yml | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8bf0517e4e..ba073af634 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,20 +39,6 @@ jobs: key: v1-${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} restore-keys: v1-${{ runner.os }}-pip- - - name: Cache depends build - id: cache-depends - uses: actions/cache@v3 - with: - path: | - depends/built - depends/sources - depends/sdk-sources - depends/work - depends/arch64-apple-darwin* - key: v1-${{ runner.os }}-depends-${{ hashFiles('depends/Makefile') }} - restore-keys: | - v1-${{ runner.os }}-depends- - - name: Install brew dependencies run: brew install autoconf automake libtool pkg-config pandoc @@ -62,7 +48,6 @@ jobs: pip3 install pypandoc digibyte_scrypt pyzmq - name: Build Dependencies - if: steps.cache-depends.outputs.cache-hit != 'true' run: | cd depends make -j2 HOST=aarch64-apple-darwin24.2.0 From b8027cbe2dd832fc8da146ff12b532ddb77615f1 Mon Sep 17 00:00:00 2001 From: GTO90 <33842337+gto90@users.noreply.github.com> Date: Tue, 14 Jan 2025 09:53:01 -0600 Subject: [PATCH 18/18] Disabling gui for codeql --- .github/workflows/codeql.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f755fd6ba6..556f7450b1 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -112,7 +112,7 @@ jobs: # Configure and Build ./autogen.sh - CONFIG_SITE=$PWD/depends/aarch64-apple-darwin24.2.0/share/config.site ./configure --with-bdb --with-sqlite --with-gui=yes --with-zmq + CONFIG_SITE=$PWD/depends/aarch64-apple-darwin24.2.0/share/config.site ./configure --with-bdb --with-sqlite --with-gui=no --with-zmq make -j2 - name: Perform CodeQL Analysis