Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
150 commits
Select commit Hold shift + click to select a range
165090d
add: you can select now multiple masternode and click start/stop.
IamLupo Apr 21, 2023
92d2307
Merge pull request #6 from IamLupo/master
rubber-duckie-au Apr 20, 2026
08714c0
feat: v2.0.0.7 — PROTOCOL_VERSION 62055, BIP39 seed phrase, async GUI…
rubber-duckie-au Apr 20, 2026
4eabdbf
Update ci-linux-aarch64.yml
rubber-duckie-au Apr 20, 2026
ef8423f
Update ci-linux-aarch64.yml
rubber-duckie-au Apr 20, 2026
c211391
Update ci-linux-x64.yml
rubber-duckie-au Apr 20, 2026
db71089
Update ci-windows.yml
rubber-duckie-au Apr 20, 2026
f008f1f
fix: MIN_PROTO_VERSION test
rubber-duckie-au Apr 20, 2026
bb15c04
Merge branch '2.0.0.7-testing' of https://github.com/rubber-duckie-au…
rubber-duckie-au Apr 20, 2026
6624ce6
Update cnetaddr.h
rubber-duckie-au Apr 20, 2026
7c8d1b6
fix: added source and header pri updates
rubber-duckie-au Apr 20, 2026
859eb83
update: pri dependency versions
rubber-duckie-au Apr 20, 2026
5f38885
update: gmp
rubber-duckie-au Apr 20, 2026
de290f4
fix: include <cstdint>
rubber-duckie-au Apr 21, 2026
7b3666c
update: submodule
rubber-duckie-au Apr 21, 2026
90fada7
fix: ccoincontrol.h includes
rubber-duckie-au Apr 21, 2026
9de9fab
fix: BEP39 Solution
rubber-duckie-au Apr 22, 2026
ccd25c9
Update bip39
rubber-duckie-au Apr 22, 2026
37876bb
fix: GUI layout and deprecation warnings
rubber-duckie-au Apr 22, 2026
b977279
update: test hash files
rubber-duckie-au Apr 22, 2026
7e69e17
Update ci-windows.yml
rubber-duckie-au Apr 22, 2026
e587d83
Update ci-windows.yml
rubber-duckie-au Apr 22, 2026
a2bd7d0
update: test suite
rubber-duckie-au Apr 22, 2026
287195d
fix: BIP39 recovery clarification
rubber-duckie-au Apr 23, 2026
5a661ba
Update bip39
rubber-duckie-au Apr 23, 2026
0cf794f
fix: final for regression testing
rubber-duckie-au Apr 25, 2026
29af04d
fix: test and splash
rubber-duckie-au Apr 25, 2026
d3b4b53
push: final CI test
rubber-duckie-au Apr 25, 2026
562c266
fix: workflow update
rubber-duckie-au Apr 26, 2026
a18e225
update: libs pre build
rubber-duckie-au Apr 26, 2026
5ec970c
Create build-prebuilt-libs.yml
rubber-duckie-au Apr 26, 2026
3770c62
Update build-prebuilt-libs.yml
rubber-duckie-au Apr 26, 2026
32e3048
fix: spilt builds
rubber-duckie-au Apr 27, 2026
b6c09c9
update: logos
rubber-duckie-au Apr 27, 2026
c3d3775
Delete .github/workflows/build-prebuilt-libs.yml
rubber-duckie-au Apr 27, 2026
3e59677
ci: split lib compilation into separate jobs, manual trigger only
rubber-duckie-au Apr 27, 2026
6579f33
Create ci-linux-x64.yml
rubber-duckie-au Apr 27, 2026
e3e2250
update: add new split CI's
rubber-duckie-au Apr 27, 2026
10d343a
Update ci-linux-x64.yml
rubber-duckie-au Apr 27, 2026
5ffe8d5
Update ci-linux-aarch64.yml
rubber-duckie-au Apr 27, 2026
167e0fa
Update ci-macos.yml
rubber-duckie-au Apr 27, 2026
36d1f83
update: ci openssl path
rubber-duckie-au Apr 27, 2026
a1ba4f3
Merge branch 'master' of https://github.com/rubber-duckie-au/DigitalN…
rubber-duckie-au Apr 27, 2026
06f4cf0
fix: CI - remove gmp dowload
rubber-duckie-au Apr 27, 2026
f44bb53
fix: symlink path
rubber-duckie-au Apr 27, 2026
9f83dac
fix: password change
rubber-duckie-au Apr 27, 2026
e826799
Update ci-linux-x64.yml
rubber-duckie-au Apr 27, 2026
c37695e
Update ci-linux-x64.yml
rubber-duckie-au Apr 27, 2026
d435455
fix: CI update
rubber-duckie-au Apr 27, 2026
c123217
Update ci-linux-x64.yml
rubber-duckie-au Apr 27, 2026
da314be
Update ci-linux-x64.yml
rubber-duckie-au Apr 27, 2026
702e886
update: daemon enable
rubber-duckie-au Apr 27, 2026
c6a76f8
Update ci-linux-x64.yml
rubber-duckie-au Apr 27, 2026
d18e102
Update ci-linux-x64.yml
rubber-duckie-au Apr 27, 2026
0adc4f0
Update DigitalNote_config.pri
rubber-duckie-au Apr 27, 2026
22fe7c8
fix: Manual build and CI coexistence
rubber-duckie-au Apr 27, 2026
0f30eaf
revert: pro revert in favour of CI symlink
rubber-duckie-au Apr 27, 2026
00f9130
Update ci-linux-x64.yml
rubber-duckie-au Apr 27, 2026
6bb1e88
fix: cache dump
rubber-duckie-au Apr 27, 2026
da11cd6
fix: static miniupnpc versioning
rubber-duckie-au Apr 28, 2026
6602b57
fix: CI hard coded branch (temporary)
rubber-duckie-au Apr 28, 2026
136aa05
Remove bip39 submodule
rubber-duckie-au Apr 28, 2026
ca53d23
fix: submodule remove and copy
rubber-duckie-au Apr 28, 2026
0974f8f
Update cdb.cpp
rubber-duckie-au Apr 28, 2026
6af3b1b
fix: error script aggression
rubber-duckie-au Apr 28, 2026
c9e8062
Update askpassphrasedialog.cpp
rubber-duckie-au Apr 28, 2026
86ace49
update: full test suite
rubber-duckie-au Apr 28, 2026
1ac7b56
update: tests
rubber-duckie-au Apr 28, 2026
fca35c9
fix: add automake to Windows CI
rubber-duckie-au Apr 28, 2026
7d39a34
fix: split macos, windows test fix
rubber-duckie-au Apr 28, 2026
8630cea
Update ci-windows.yml
rubber-duckie-au Apr 28, 2026
6b56013
Update ci-windows.yml
rubber-duckie-au Apr 28, 2026
377c762
Update ci-windows.yml
rubber-duckie-au Apr 28, 2026
f930880
Update ci-macos-x64.yml
rubber-duckie-au Apr 28, 2026
8bea031
Delete .github/workflows directory
rubber-duckie-au Apr 28, 2026
10788dd
Update ci-windows.yml
rubber-duckie-au Apr 28, 2026
71d2fda
update: mac tests
rubber-duckie-au Apr 28, 2026
31ed3da
update: mac tests
rubber-duckie-au Apr 28, 2026
10d265d
update: macos libs
rubber-duckie-au Apr 28, 2026
7ec42d9
update: macos lib paths
rubber-duckie-au Apr 28, 2026
0d10da6
Update: final push 2.0.0.7 pre release code
rubber-duckie-au May 6, 2026
41bf04c
update yamls
rubber-duckie-au May 6, 2026
3aabeca
update: detect boost
rubber-duckie-au May 6, 2026
d5dbdd2
Update ci-windows.yml
rubber-duckie-au May 6, 2026
9a1a492
ci: sync workflow files from master (drop push trigger, mgw suffix au…
rubber-duckie-au May 6, 2026
e30253e
ci(macos): set SDKROOT explicitly so leveldb's Makefile finds the SDK"
rubber-duckie-au May 6, 2026
b59f6f0
include: re-enable libc++ C++17-removed symbols for macOS Xcode 15+ (…
rubber-duckie-au May 6, 2026
fef4623
include: silence Clang-16 diagnostics tripped by Boost 1.80 headers (…
rubber-duckie-au May 6, 2026
bd9f313
qmake: silence Boost-1.80 vs Clang-16 diagnostics in QMAKE_CXXFLAGS_W…
rubber-duckie-au May 6, 2026
e676289
update: dump cache revert gmp - testing purposes
rubber-duckie-au May 6, 2026
80af3e0
include: GMP 6.3.0 path, libc++ feature defines, Clang-16 -Wno- flags…
rubber-duckie-au May 6, 2026
84d98e4
ci: macOS GMP build, aarch64 cross-compile fix, cache busting
rubber-duckie-au May 6, 2026
93008c1
ci: more reliable downloads (retry, GNU mirror for GMP, verbose on er…
rubber-duckie-au May 6, 2026
1392e3e
ci(macos): include libs/gmp-6.3.0 in cache paths
rubber-duckie-au May 6, 2026
6eeed0c
Update ci-macos-arm64.yml
rubber-duckie-au May 6, 2026
0870cff
ci(aarch64): point apt at ports.ubuntu.com for arm64 packages
rubber-duckie-au May 6, 2026
c0ebce6
Update ci-linux-aarch64.yml
rubber-duckie-au May 6, 2026
6051131
ci(macos): fix DigitalNoted casing in version assert + upload glob
rubber-duckie-au May 6, 2026
3446890
aarch64: handle mirror+file: scheme in apt sources
rubber-duckie-au May 6, 2026
c9f1681
ci: gmp --with-pic, drop bogus --version assert, bust fast-libs cache
rubber-duckie-au May 6, 2026
81993e0
ci(aarch64): cache path: use runner.workspace, not github.workspace/..
rubber-duckie-au May 6, 2026
7bab71f
ci(windows): Assert step searches MSYS2 home where build actually writes
rubber-duckie-au May 6, 2026
fe316da
ci(aarch64): add libs symlink for $$PWD/../libs resolution
rubber-duckie-au May 6, 2026
ad68842
include/libs/secp256k1.pri: cross-compile for aarch64
rubber-duckie-au May 6, 2026
e23470c
ci(release): remove continue-on-error from reusable-workflow callers
rubber-duckie-au May 6, 2026
5c43180
merge: CI workflows from master
rubber-duckie-au May 6, 2026
18d5e8b
ci: fix DigitalNoted casing in release place() and CI uploads rc1 sur…
rubber-duckie-au May 7, 2026
b029752
ci: fix DigitalNoted casing in release place() and CI uploads
rubber-duckie-au May 7, 2026
98d00d6
docs+ci: per-version release notes & changelog
rubber-duckie-au May 7, 2026
e5f70f9
include/compiler_settings.pri: add COMPAT_BUILD support for static li…
rubber-duckie-au May 7, 2026
026f507
ci(linux-x64): add compat build via ubuntu:20.04 container
rubber-duckie-au May 7, 2026
c769241
ci(linux-x64): add compat build via ubuntu:20.04 container
rubber-duckie-au May 7, 2026
29e7fe0
Update ci-linux-x64-compat.yml
rubber-duckie-au May 7, 2026
a12704b
Update ci-linux-x64-compat.yml
rubber-duckie-au May 7, 2026
ed68c26
ci(linux-x64-compat): force bash for run: steps inside container
rubber-duckie-au May 7, 2026
d78addd
ci(linux-x64-compat): force bash for run: steps inside container
rubber-duckie-au May 7, 2026
c28649e
ci(linux-x64-compat): unify dev packages env, add missing xcb deps
rubber-duckie-au May 7, 2026
aef50e0
ci(linux-x64-compat): unify dev packages env, add missing xcb deps
rubber-duckie-au May 7, 2026
6f31f0d
ci(release): publish linux-x64-compat as parallel artifact
rubber-duckie-au May 7, 2026
dea24e7
ci(release): publish linux-x64-compat as parallel artifact
rubber-duckie-au May 7, 2026
49a74d3
include: compiler settings and BIP39 enforcement
rubber-duckie-au May 8, 2026
2b8de19
ci(linux-x64-compat): drop COMPAT_BUILD=1 (now always-on in .pri)
rubber-duckie-au May 8, 2026
84f6ee9
ci: remove USE_BIP39 qmake arg (now mandatory in source)
rubber-duckie-au May 8, 2026
63e38e8
ci: remove USE_BIP39 qmake arg (now mandatory in source)
rubber-duckie-au May 8, 2026
ee169ea
uat fix: masternode skipping locked collateral
rubber-duckie-au May 8, 2026
39b858b
ci(aarch64): clone with retry, drop fragile git pull fallback
rubber-duckie-au May 8, 2026
9af4828
ci(aarch64): clone with retry, drop fragile git pull fallback
rubber-duckie-au May 8, 2026
0ea36d3
readme: update changelog and release notes
rubber-duckie-au May 8, 2026
b9041e6
uat fix: mn nLastPaid initialisation
rubber-duckie-au May 8, 2026
ce10507
update: change and release doco
rubber-duckie-au May 9, 2026
7044dd5
fix: spork enablement (fallback)
rubber-duckie-au May 13, 2026
1227fd9
ci: branch input is now a choice dropdown with blank fallback
rubber-duckie-au May 16, 2026
b7e903e
Phase 1 Consensus Voting
rubber-duckie-au May 16, 2026
10b3a6b
fix: Consensus redesign and bug fixes
rubber-duckie-au Jun 1, 2026
8556841
update: Report Version Constants
rubber-duckie-au Jun 1, 2026
4893bbe
update: CI Sync
rubber-duckie-au Jun 1, 2026
95b7d30
update: Minor staking and consensus updates
rubber-duckie-au Jun 7, 2026
b82e1a0
fix: debug mode wildcards
rubber-duckie-au Jun 9, 2026
8ee4c91
Update release.yml
rubber-duckie-au Jun 9, 2026
2d86e9d
add: Release Notes
rubber-duckie-au Jun 9, 2026
c5b9315
Merge branch 'v2.0.0.8-voted-consensus' of https://github.com/rubber-…
rubber-duckie-au Jun 9, 2026
d86b8f3
update: Activation Lowering
rubber-duckie-au Jun 10, 2026
8d8777d
UAT fix: MN awareness and nBits mining computation
rubber-duckie-au Jun 11, 2026
3633744
Merge branch 'master' into v2.0.0.8-voted-consensus
rubber-duckie-au Jun 13, 2026
082d69e
Merge pull request #7 from rubber-duckie-au/v2.0.0.8-voted-consensus
rubber-duckie-au Jun 13, 2026
a5b457a
ci(release): write changelog to file, cat in body (avoid shell inject…
rubber-duckie-au Jun 13, 2026
728f9ab
Update release.yml
rubber-duckie-au Jun 13, 2026
9d010d0
Merge pull request #83 from rubber-duckie-au/master
rubber-duckie-au Jun 13, 2026
dc76e5f
Update release.yml
rubber-duckie-au Jun 13, 2026
e30a991
ci: update for main repo
rubber-duckie-au Jun 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
499 changes: 499 additions & 0 deletions .github/workflows/ci-linux-aarch64.yml

Large diffs are not rendered by default.

319 changes: 319 additions & 0 deletions .github/workflows/ci-linux-x64-compat.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,319 @@
name: CI - Linux x64 (compat)

# COMPAT BUILD: produces a Linux x64 binary that runs on Ubuntu 20.04+
# (glibc 2.31+) instead of requiring the runner's modern glibc. Built
# inside a docker container running ubuntu:20.04 — the host runner stays
# on whatever ubuntu-latest provides; only the build environment is
# pinned to the older OS. Combined with -static-libstdc++ -static-libgcc
# (set in compiler_settings.pri's linux scope), the resulting binary
# runs on any glibc >= 2.31.
#
# This file lives alongside ci-linux-x64.yml during the rollout. Once
# the compat build proves itself across several releases, the plan is
# to consolidate by replacing ci-linux-x64.yml with this approach.

on:
workflow_dispatch:
inputs:
branch:
description: "Branch to build (leave empty / blank choice to use the branch from 'Use workflow from' above)"
required: false
type: choice
options:
- ""
- master
- 2.0.0.7-testing
- 2.0.0.8-testing
default: ""
workflow_call:
inputs:
branch:
description: "Branch / ref to build (passed by release.yml)"
required: false
type: string
default: ""

env:
JOBS: 4
# Absolute path inside the container — actions/cache does NOT allow ..
BUILDER: /__w/DigitalNote-2/DigitalNote-Builder
# Dev packages needed for both libs compile and the Qt wallet's link
# against system X11/XCB libraries. Defined once at workflow level so
# both jobs get the same set — divergence between them would surface
# as confusing link-time errors only on the wallet build.
DEV_PACKAGES: >-
build-essential
autoconf automake libtool pkg-config
wget xz-utils
python3
libgmp-dev
libfreetype6-dev libfontconfig1-dev
libx11-dev libxcb1-dev libxext-dev libxfixes-dev
libxi-dev libxrender-dev libxkbcommon-dev libxkbcommon-x11-dev
libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev
libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev
libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev
libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev
libxcb-xkb-dev
libdbus-1-dev

jobs:

# ── Job 1: Compile libraries (cached) ─────────────────────────────────────────
libs-linux-x64-compat:
name: Compile libraries — Linux x64 (compat)
runs-on: ubuntu-latest
container:
image: ubuntu:20.04
# ubuntu:20.04 image is bare; we install everything explicitly.
# No --user flag — runs as root inside the container, which is fine
# because the container is ephemeral and the workspace is bind-mounted.
timeout-minutes: 360
# Default shell for run: steps. Without this, the container uses
# dash (Ubuntu's /bin/sh) which doesn't support bash array syntax
# like ${PIPESTATUS[0]}. Forcing bash matches GitHub's default
# behaviour outside containers and makes our scripts portable.
defaults:
run:
shell: bash

steps:
# Install curl + ca-certificates BEFORE checkout so actions/checkout's
# git clone HTTPS works. ubuntu:20.04 ships without either.
- name: Bootstrap container
env:
DEBIAN_FRONTEND: noninteractive
run: |
apt-get update -qq
apt-get install -y --no-install-recommends \
ca-certificates curl git sudo

- uses: actions/checkout@v4
with:
ref: ${{ inputs.branch || github.ref }}
submodules: false

- name: Clone DigitalNote-Builder
run: |
git clone https://github.com/DigitalNoteXDN/DigitalNote-Builder.git \
${{ env.BUILDER }}
mkdir -p ${{ env.BUILDER }}/linux/x64/libs

- name: Cache all libraries
uses: actions/cache@v4
id: libs-cache
with:
path: ${{ env.BUILDER }}/linux/x64/libs
# -compat-v1 suffix keeps this cache distinct from the standard
# ci-linux-x64.yml's cache (which has different glibc symbols
# baked into its libs).
key: linux-x64-compat-libs-${{ hashFiles('include/libs.pri', 'include/libs/bip39.pri') }}-v1
restore-keys: linux-x64-compat-libs-

- name: Install build dependencies
if: steps.libs-cache.outputs.cache-hit != 'true'
env:
DEBIAN_FRONTEND: noninteractive
run: |
apt-get update -qq
# No 'sudo' prefix — we're root inside the container.
apt-get install -y --no-install-recommends ${{ env.DEV_PACKAGES }}

- name: Download library source archives
if: steps.libs-cache.outputs.cache-hit != 'true'
working-directory: ${{ env.BUILDER }}
run: |
mkdir -p download && cd download
WGET="wget --tries=3 --timeout=60 --no-verbose"
$WGET https://archives.boost.io/release/1.80.0/source/boost_1_80_0.tar.gz
$WGET https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz
$WGET http://download.oracle.com/berkeley-db/db-6.2.32.NC.tar.gz
$WGET https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
$WGET "http://miniupnp.free.fr/files/download.php?file=miniupnpc-2.2.8.tar.gz" -O miniupnpc-2.2.8.tar.gz
$WGET https://github.com/fukuchi/libqrencode/archive/refs/tags/v4.1.1.tar.gz
$WGET https://download.qt.io/archive/qt/5.15/5.15.7/single/qt-everywhere-opensource-src-5.15.7.tar.xz

- name: Compile all libraries
if: steps.libs-cache.outputs.cache-hit != 'true'
working-directory: ${{ env.BUILDER }}/linux/x64
run: |
mkdir -p temp libs
CPUS=$(nproc)
echo ">>> [1/7] BerkeleyDB..." && ../../compile/berkeleydb.sh "build_unix" "" "-j $CPUS"
echo ">>> [2/7] Boost..." && ../../compile/boost.sh "address-model=64 toolset=gcc -j $CPUS"
echo ">>> [3/7] OpenSSL..." && ../../compile/openssl.sh "linux-x86_64" "-j $CPUS"
echo ">>> [4/7] libevent..." && ../../compile/libevent.sh "" "-j $CPUS"
echo ">>> [5/7] miniupnpc..." && ../../compile/miniupnpc.sh "libminiupnpc.a" "-j $CPUS"
echo ">>> [6/7] qrencode..." && ../../compile/qrencode.sh "" "-j $CPUS"
echo ">>> [7/7] Qt 5.15.7..." && ../../compile/qt.sh "-bundled-xcb-xinput -fontconfig -system-freetype" "-j $CPUS"
echo ">>> All libraries compiled"
ls libs/

- name: Verify qmake
run: |
QMAKE="${{ env.BUILDER }}/linux/x64/libs/qt-5.15.7/bin/qmake"
[ -f "$QMAKE" ] || { echo "ERROR: qmake not found"; exit 1; }
echo "Qt: $($QMAKE --version)"

# ── Job 2: Build daemon + wallet ──────────────────────────────────────────────
build-and-test-linux-x64-compat:
name: Linux x64 (compat) — Build + Test
runs-on: ubuntu-latest
container:
image: ubuntu:20.04
timeout-minutes: 60
needs: libs-linux-x64-compat
defaults:
run:
shell: bash

steps:
- name: Bootstrap container
env:
DEBIAN_FRONTEND: noninteractive
run: |
apt-get update -qq
apt-get install -y --no-install-recommends \
ca-certificates curl git sudo

- uses: actions/checkout@v4
with:
ref: ${{ inputs.branch || github.ref }}
submodules: false

- name: Clone DigitalNote-Builder
run: |
git clone https://github.com/DigitalNoteXDN/DigitalNote-Builder.git \
${{ env.BUILDER }}
mkdir -p ${{ env.BUILDER }}/linux/x64/libs

- name: Restore libraries from cache
uses: actions/cache@v4
with:
path: ${{ env.BUILDER }}/linux/x64/libs
key: linux-x64-compat-libs-${{ hashFiles('include/libs.pri', 'include/libs/bip39.pri') }}-v1
restore-keys: linux-x64-compat-libs-

- name: Install runtime build dependencies
env:
DEBIAN_FRONTEND: noninteractive
run: |
apt-get update -qq
# Same package list as the libs job — Qt wallet links against
# libxcb-shape, libxcb-sync, libxcb-xfixes etc. which the
# daemon doesn't need but the GUI does.
apt-get install -y --no-install-recommends ${{ env.DEV_PACKAGES }}

- name: Verify qmake
run: |
QMAKE="${{ env.BUILDER }}/linux/x64/libs/qt-5.15.7/bin/qmake"
[ -f "$QMAKE" ] || { echo "ERROR: qmake not found after cache restore"; exit 1; }
echo "Qt: $($QMAKE --version)"

- name: Link source tree and libs
run: |
# NOTE: Inside containers, ${{ github.workspace }} expands to the
# HOST path (/home/runner/work/...) which doesn't exist inside
# the container. Use $GITHUB_WORKSPACE env var instead — that
# gets remapped by the runner to the container path (/__w/...).
# Same fix applies to anywhere we'd otherwise use the action
# context's github.workspace inside a containerised step.
#
# Link source into Builder (for compile scripts)
ln -sfn "$GITHUB_WORKSPACE" \
${{ env.BUILDER }}/linux/x64/DigitalNote-2
# Link libs next to DigitalNote-2 so $$PWD/../libs resolves correctly
ln -sfn ${{ env.BUILDER }}/linux/x64/libs \
"$GITHUB_WORKSPACE/../libs"

- name: Compile daemon (DigitalNoted) — static libstdc++/libgcc
working-directory: ${{ env.BUILDER }}/linux/x64
run: |
export PATH="$PWD/libs/qt-5.15.7/bin:$PATH"
cd DigitalNote-2
rm -rf build Makefile
# Static libstdc++/libgcc is now unconditional on Linux (set in
# compiler_settings.pri's linux:!macx scope). Combined with this
# ubuntu:20.04 build host (glibc 2.31), the resulting binary
# runs on Ubuntu 20.04+, Debian 11+, RHEL 9+, and similar.
qmake DigitalNote.daemon.pro \
USE_UPNP=1 USE_BUILD_INFO=0 RELEASE=1
make -j${{ env.JOBS }} 2>&1 | tee $BUILDER/build-daemon-compat.log
exit ${PIPESTATUS[0]}

- name: Compile Qt wallet (DigitalNote-qt) — static libstdc++/libgcc
working-directory: ${{ env.BUILDER }}/linux/x64
run: |
export PATH="$PWD/libs/qt-5.15.7/bin:$PATH"
cd DigitalNote-2
rm -rf build Makefile
qmake DigitalNote.app.pro \
USE_UPNP=1 USE_DBUS=1 USE_QRCODE=1 USE_BUILD_INFO=0 \
RELEASE=1
make -j${{ env.JOBS }} 2>&1 | tee $BUILDER/build-app-compat.log
exit ${PIPESTATUS[0]}

- name: Verify glibc requirement of built binary
run: |
DAEMON="${{ env.BUILDER }}/linux/x64/DigitalNote-2/DigitalNoted"
[ -f "$DAEMON" ] || { echo "ERROR: DigitalNoted not found"; exit 1; }
echo "=== Binary file info ==="
file "$DAEMON"
echo
echo "=== glibc symbols required ==="
# Extract every GLIBC_x.y symbol the binary needs and show the
# MAX version. If this is > 2.31, our compat target failed.
MAX_GLIBC=$(objdump -T "$DAEMON" 2>/dev/null \
| grep -oE 'GLIBC_[0-9.]+' \
| sort -V \
| tail -1)
echo "Highest GLIBC_ symbol: $MAX_GLIBC"
if [ "$MAX_GLIBC" \> "GLIBC_2.31" ]; then
echo "WARNING: binary requires $MAX_GLIBC, exceeds 2.31 target"
echo "(this means the resulting binary may not run on Ubuntu 20.04)"
else
echo "OK: binary will run on Ubuntu 20.04+ (glibc 2.31+)"
fi
echo
echo "=== libstdc++ check (should NOT appear if static link worked) ==="
if ldd "$DAEMON" | grep -q libstdc++; then
echo "WARNING: libstdc++.so dynamic dep found — static link may have failed"
ldd "$DAEMON" | grep libstdc++
else
echo "OK: no libstdc++.so dependency (statically linked)"
fi

- name: Report version constants
run: |
# Extract the version constants from source and print them.
# No assertion — if the source is wrong, the binary will be
# wrong too, and that's a source-review problem, not a CI one.
BUILD=$(grep -oE 'CLIENT_VERSION_BUILD[[:space:]]+[0-9]+' src/clientversion.h | awk '{print $NF}')
PROTOCOL=$(grep -oE 'PROTOCOL_VERSION[[:space:]]*=[[:space:]]*[0-9]+' src/version.h | awk '{print $NF}')
MIN_PEER=$(grep -oE 'MIN_PEER_PROTO_VERSION[[:space:]]*=[[:space:]]*[0-9]+' src/version.h | awk '{print $NF}')
echo "Building with:"
echo " CLIENT_VERSION_BUILD = $BUILD"
echo " PROTOCOL_VERSION = $PROTOCOL"
echo " MIN_PEER_PROTO_VERSION = $MIN_PEER"
- name: Upload binaries
uses: actions/upload-artifact@v4
timeout-minutes: 10
with:
name: digitalnote-linux-x64-compat
path: |
${{ env.BUILDER }}/linux/x64/DigitalNote-2/DigitalNoted
${{ env.BUILDER }}/linux/x64/DigitalNote-2/DigitalNote-qt
if-no-files-found: warn
retention-days: 14

- name: Upload build logs
uses: actions/upload-artifact@v4
if: always()
with:
name: build-logs-linux-x64-compat-${{ github.sha }}
# Logs written into $BUILDER inside container; the action is
# container-aware and reads from the container path correctly.
path: |
${{ env.BUILDER }}/build-app-compat.log
${{ env.BUILDER }}/build-daemon-compat.log
retention-days: 14
Loading
Loading