Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
3c6fcfb
Add multi-OS release workflow and release guide
arnoldcho Feb 24, 2026
92ba467
Fix release workflow runner and release dependencies
arnoldcho Feb 24, 2026
81abd3f
Fix linux build by including deque in httpserver
arnoldcho Feb 24, 2026
d7a50e5
Fix linux return-path build error and macOS boost detection
arnoldcho Feb 24, 2026
f024a1e
Fix boost placeholders build issue in validationinterface
arnoldcho Feb 24, 2026
718b337
Qualify boost placeholders in validationinterface
arnoldcho Feb 24, 2026
7a116d0
Fix boost placeholder usage in validation connect trace
arnoldcho Feb 24, 2026
b0e95b4
Stabilize CI downloads and macOS boost library detection
arnoldcho Feb 24, 2026
39e9438
Make Windows builds no-gui and relax macOS build blocking
arnoldcho Feb 24, 2026
b044510
Update Qt 5.9.6 source URL to new_archive
arnoldcho Feb 24, 2026
5cca461
Qualify boost bind placeholders across qt and core sources
arnoldcho Feb 24, 2026
c932219
Make macOS build blocking and set explicit boost lib names
arnoldcho Feb 24, 2026
8d50e48
Force mingw posix toolchain for Windows builds
arnoldcho Feb 24, 2026
d1423f1
Fix Qt build by including QPainterPath
arnoldcho Feb 24, 2026
9db4469
Fix macOS boost link flags in CI workflow
arnoldcho Feb 24, 2026
1f10e41
Fix mingw build by using gmtime_s on Windows
arnoldcho Feb 24, 2026
368bd83
Fix macOS configure by removing forced global boost LIBS
arnoldcho Feb 24, 2026
8d972f8
Enable Windows Qt builds and strip release binaries
arnoldcho Feb 24, 2026
3c662b1
Stabilize macOS CI configure flags
arnoldcho Feb 24, 2026
eec70c5
Fix macOS boost lib detection in CI
arnoldcho Feb 24, 2026
3cbc25c
Enable macOS GUI build in release workflow
arnoldcho Feb 24, 2026
b95401f
Fix Qt 5.9.6 mingw build by including limits
arnoldcho Feb 24, 2026
00b490a
Adjust macOS boost detection to use boost prefix
arnoldcho Feb 24, 2026
f8d2ed7
Switch DNS seed and website domain to xpchain.co.kr
arnoldcho Feb 24, 2026
18d5232
Update source code URL to community core repository
arnoldcho Feb 24, 2026
de8a612
Allow macOS builds when boost_system is header-only
arnoldcho Feb 24, 2026
fb61f06
Replace xpchain.io references with xpchain.co.kr
arnoldcho Feb 24, 2026
31d4f12
Fix macOS build by including list in validation.cpp
arnoldcho Feb 24, 2026
40a57bc
Fix macOS compile by including list in validation.h
arnoldcho Feb 24, 2026
0055061
Fix filesystem basename usage for modern boost
arnoldcho Feb 24, 2026
a0aab21
Update wallet db filesystem calls for modern boost
arnoldcho Feb 24, 2026
56da0fc
Pin macOS protobuf to v21 for C++11 compatibility
arnoldcho Feb 24, 2026
e04b401
Fix macOS objc_msgSend calls for modern Xcode
arnoldcho Feb 24, 2026
a9d2ca6
Add macOS DMG packaging to release workflow
arnoldcho Feb 24, 2026
af192a0
Improve macOS DMG packaging layout and app signing
arnoldcho Feb 24, 2026
1546412
Fix wallet backup copy for older Boost filesystem
arnoldcho Feb 24, 2026
5e306dd
Bundle missing Boost dylibs in macOS app package
arnoldcho Feb 24, 2026
14576d2
Bundle all Boost dylibs for macOS app runtime
arnoldcho Feb 24, 2026
eacd3da
Bundle Linux runtime shared libs in release artifact
arnoldcho Feb 24, 2026
1db5063
Switch Linux release to depends-based 4-file standalone build
arnoldcho Feb 24, 2026
82129c4
Add Vultr Linux node setup and troubleshooting log
arnoldcho Feb 24, 2026
8d84a3b
release: finalize 0.17.0-4 metadata and release docs
arnoldcho Feb 24, 2026
1a1f456
doc: add linux validation results for v0.17.0-4
arnoldcho Feb 24, 2026
d5f23c7
docs: update v0.17.0-4 validation and release notes
arnoldcho Feb 26, 2026
e207dd0
core: apply chain params, init, and locale updates
arnoldcho Feb 26, 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
279 changes: 279 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,279 @@
name: Build and Release XPChain Core

on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
tag:
description: 'Release tag (example: v0.17.0-4)'
required: true
type: string

permissions:
contents: write

env:
RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref_name }}

jobs:
linux:
name: Linux Ubuntu x86_64
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential libtool autotools-dev automake pkg-config bsdmainutils \
curl git python3

- name: Build depends (x86_64-linux-gnu)
run: |
cd depends
make HOST=x86_64-linux-gnu FALLBACK_DOWNLOAD_PATH=https://bitcoincore.org/depends-sources -j"$(nproc)"

- name: Build
run: |
./autogen.sh
CONFIG_SITE=$PWD/depends/x86_64-linux-gnu/share/config.site ./configure --prefix=/
make -j"$(nproc)"

- name: Package
run: |
TAG="${RELEASE_TAG}"
mkdir -p dist
cp src/xpchaind src/xpchain-cli src/xpchain-tx src/qt/xpchain-qt dist/
strip dist/xpchaind dist/xpchain-cli dist/xpchain-tx dist/xpchain-qt || true
tar -C dist -czf "xpchain-${TAG}-linux-x86_64.tar.gz" xpchaind xpchain-cli xpchain-tx xpchain-qt

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: linux-x86_64
path: xpchain-*.tar.gz

windows64:
name: Windows x86_64
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential libtool autotools-dev automake pkg-config bsdmainutils curl git \
g++-mingw-w64-x86-64

- name: Select posix mingw toolchain (x86_64)
run: |
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix

- name: Build depends (x86_64-w64-mingw32)
run: |
cd depends
make HOST=x86_64-w64-mingw32 FALLBACK_DOWNLOAD_PATH=https://bitcoincore.org/depends-sources -j"$(nproc)"

- name: Configure and build
run: |
./autogen.sh
CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure --prefix=/
make -j"$(nproc)"

- name: Package
run: |
TAG="${RELEASE_TAG}"
mkdir -p dist
cp src/xpchaind.exe src/xpchain-cli.exe src/xpchain-tx.exe src/qt/xpchain-qt.exe dist/
x86_64-w64-mingw32-strip dist/xpchaind.exe dist/xpchain-cli.exe dist/xpchain-tx.exe dist/xpchain-qt.exe || true
cd dist
zip -9 "../xpchain-${TAG}-win64.zip" xpchaind.exe xpchain-cli.exe xpchain-tx.exe xpchain-qt.exe

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: win64
path: xpchain-*-win64.zip

windows32:
name: Windows x86
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential libtool autotools-dev automake pkg-config bsdmainutils curl git \
g++-mingw-w64-i686 mingw-w64-i686-dev

- name: Select posix mingw toolchain (i686)
run: |
sudo update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix
sudo update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix

- name: Build depends (i686-w64-mingw32)
run: |
cd depends
make HOST=i686-w64-mingw32 FALLBACK_DOWNLOAD_PATH=https://bitcoincore.org/depends-sources -j"$(nproc)"

- name: Configure and build
run: |
./autogen.sh
CONFIG_SITE=$PWD/depends/i686-w64-mingw32/share/config.site ./configure --prefix=/
make -j"$(nproc)"

- name: Package
run: |
TAG="${RELEASE_TAG}"
mkdir -p dist
cp src/xpchaind.exe src/xpchain-cli.exe src/xpchain-tx.exe src/qt/xpchain-qt.exe dist/
i686-w64-mingw32-strip dist/xpchaind.exe dist/xpchain-cli.exe dist/xpchain-tx.exe dist/xpchain-qt.exe || true
cd dist
zip -9 "../xpchain-${TAG}-win32.zip" xpchaind.exe xpchain-cli.exe xpchain-tx.exe xpchain-qt.exe

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: win32
path: xpchain-*-win32.zip

macos:
name: macOS arm64/x86_64 runner build
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Install dependencies
run: |
brew update
brew install autoconf automake libtool pkg-config openssl@3 libevent boost berkeley-db@4 miniupnpc protobuf@21 qt@5 qrencode create-dmg

- name: Build
run: |
BREW_PREFIX="$(brew --prefix)"
BOOST_PREFIX="$(brew --prefix boost)"
PROTOBUF_PREFIX="$(brew --prefix protobuf@21)"
export BOOST_ROOT="${BOOST_PREFIX}"
export BOOST_INCLUDEDIR="${BOOST_PREFIX}/include"
export BOOST_LIBRARYDIR="${BOOST_PREFIX}/lib"
export BOOST_LDFLAGS="-L${BOOST_PREFIX}/lib"
export PATH="${PROTOBUF_PREFIX}/bin:${PATH}"
export LDFLAGS="-L${BREW_PREFIX}/opt/openssl@3/lib -L${BREW_PREFIX}/opt/berkeley-db@4/lib -L${PROTOBUF_PREFIX}/lib"
export CPPFLAGS="-I${BREW_PREFIX}/opt/openssl@3/include -I${BREW_PREFIX}/opt/berkeley-db@4/include -I${BREW_PREFIX}/opt/boost/include -I${PROTOBUF_PREFIX}/include"
export PKG_CONFIG_PATH="${PROTOBUF_PREFIX}/lib/pkgconfig:${BREW_PREFIX}/opt/openssl@3/lib/pkgconfig:${BREW_PREFIX}/opt/qt@5/lib/pkgconfig"
./autogen.sh
./configure --with-gui=qt5 \
--disable-tests \
--disable-bench \
--with-incompatible-bdb \
--with-boost="${BOOST_PREFIX}" \
--with-boost-libdir="${BOOST_PREFIX}/lib"
make -j"$(sysctl -n hw.ncpu)"

- name: Package
run: |
TAG="${RELEASE_TAG}"
mkdir -p dist
cp src/xpchaind src/xpchain-cli src/xpchain-tx dist/
if [ -f src/qt/xpchain-qt ]; then
cp src/qt/xpchain-qt dist/
make appbundle
QT5_PREFIX="$(brew --prefix qt@5)"
"${QT5_PREFIX}/bin/macdeployqt" XPChain-Qt.app -verbose=1
BOOST_LIBDIR="$(brew --prefix boost)/lib"
APP_BIN="XPChain-Qt.app/Contents/MacOS/XPChain-Qt"
APP_FW_DIR="XPChain-Qt.app/Contents/Frameworks"
# macdeployqt may miss transitive non-Qt dylibs. Bundle all Boost dylibs and rewrite install names.
for libpath in "${BOOST_LIBDIR}"/libboost_*.dylib; do
[ -f "${libpath}" ] || continue
cp -f "${libpath}" "${APP_FW_DIR}/"
done

for dylib in "${APP_FW_DIR}"/libboost_*.dylib; do
[ -f "${dylib}" ] || continue
base="$(basename "${dylib}")"
install_name_tool -id "@loader_path/${base}" "${dylib}" || true
otool -L "${dylib}" | awk '/libboost_.*\\.dylib/{print $1}' | while read -r dep; do
[ -n "${dep}" ] || continue
dep_base="$(basename "${dep}")"
install_name_tool -change "${dep}" "@loader_path/${dep_base}" "${dylib}" || true
done
done

otool -L "${APP_BIN}" | awk '/libboost_.*\\.dylib/{print $1}' | while read -r dep; do
[ -n "${dep}" ] || continue
dep_base="$(basename "${dep}")"
install_name_tool -change "${dep}" "@executable_path/../Frameworks/${dep_base}" "${APP_BIN}" || true
done
# Re-sign after deployment to avoid broken signature state on user machines.
codesign --force --deep --sign - --timestamp=none XPChain-Qt.app
codesign --verify --deep --strict --verbose=2 XPChain-Qt.app
mkdir -p dmg-src
ditto XPChain-Qt.app dmg-src/XPChain-Qt.app
ln -s /Applications dmg-src/Applications
create-dmg \
--volname "XPChain-Qt" \
--window-pos 200 120 \
--window-size 560 360 \
--icon-size 120 \
--icon "XPChain-Qt.app" 140 170 \
--icon "Applications" 420 170 \
--hide-extension "XPChain-Qt.app" \
--app-drop-link 420 170 \
"xpchain-${TAG}-macos.dmg" \
"dmg-src"
tar -C dist -czf "xpchain-${TAG}-macos.tar.gz" xpchaind xpchain-cli xpchain-tx xpchain-qt
else
tar -C dist -czf "xpchain-${TAG}-macos.tar.gz" xpchaind xpchain-cli xpchain-tx
fi

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: macos
path: |
xpchain-*-macos.tar.gz
xpchain-*-macos.dmg

release:
name: Publish GitHub Release
runs-on: ubuntu-22.04
needs: [linux, windows64, windows32]
steps:
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
path: release-assets

- name: Flatten assets
run: |
mkdir -p out
find release-assets -type f \( -name '*.zip' -o -name '*.tar.gz' -o -name '*.dmg' \) -exec cp {} out/ \;
ls -lah out

- name: Create release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.RELEASE_TAG }}
name: XPChain Core ${{ env.RELEASE_TAG }}
generate_release_notes: true
files: out/*
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ XPChain Core integration/staging tree

[![Build Status](https://travis-ci.org/xpc-wg/xpchain.svg?branch=master)](https://travis-ci.org/xpc-wg/xpchain)

https://www.xpchain.io/
https://www.xpchain.co.kr/

What is XPChain?
----------------
Expand All @@ -18,7 +18,7 @@ XPChain Core is the name of open source
software which enables the use of this currency.

For more information, <!-- as well as an immediately useable, binary version of
the XPChain Core software, see https://bitcoincore.org/en/download/, --> read the [original whitepaper](https://www.xpchain.io/?loc=lnkwhitepaper).
the XPChain Core software, see https://bitcoincore.org/en/download/, --> read the [original whitepaper](https://www.xpchain.co.kr/?loc=lnkwhitepaper).

For Exchanges
-------
Expand Down
16 changes: 12 additions & 4 deletions build-aux/m4/ax_boost_system.m4
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,19 @@ AC_DEFUN([AX_BOOST_SYSTEM],

fi
if test "x$ax_lib" = "x"; then
AC_MSG_ERROR(Could not find a version of the boost_system library!)
dnl Boost.System can be header-only in newer Boost versions.
dnl If no library is found, continue without -lboost_system.
AC_MSG_WARN([Could not find a version of the boost_system library; continuing without it])
BOOST_SYSTEM_LIB=""
AC_SUBST(BOOST_SYSTEM_LIB)
link_system="yes"
fi
if test "x$link_system" = "xno"; then
AC_MSG_WARN([Could not link against $ax_lib; continuing without boost_system library])
BOOST_SYSTEM_LIB=""
AC_SUBST(BOOST_SYSTEM_LIB)
link_system="yes"
fi
if test "x$link_system" = "xno"; then
AC_MSG_ERROR(Could not link against $ax_lib !)
fi
fi

CPPFLAGS="$CPPFLAGS_SAVED"
Expand Down
8 changes: 4 additions & 4 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 0)
define(_CLIENT_VERSION_MINOR, 17)
define(_CLIENT_VERSION_REVISION, 0)
define(_CLIENT_VERSION_BUILD, 3)
define(_CLIENT_VERSION_BUILD, 4)
define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2019)
define(_COPYRIGHT_YEAR, 2026)
define(_COPYRIGHT_HOLDERS,[The %s developers])
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[XPChain Core]])
AC_INIT([XPChain Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[https://github.com/xpchain/xpchain/issues],[xpchain],[https://xpchaincore.org/])
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[XPChain Community]])
AC_INIT([XPChain Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[https://github.com/arnoldcho/xpchain-community-core/issues],[xpchain],[https://www.xpchain.co.kr/])
AC_CONFIG_SRCDIR([src/validation.cpp])
AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
AC_CONFIG_AUX_DIR([build-aux])
Expand Down
2 changes: 1 addition & 1 deletion depends/packages/boost.mk
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package=boost
$(package)_version=1_64_0
$(package)_download_path=https://dl.bintray.com/boostorg/release/1.64.0/source/
$(package)_download_path=https://archives.boost.io/release/1.64.0/source/
$(package)_file_name=$(package)_$($(package)_version).tar.bz2
$(package)_sha256_hash=7bcc5caace97baa948931d712ea5f37038dbb1c5d89b43ad4def4ed7cb683332

Expand Down
4 changes: 3 additions & 1 deletion depends/packages/qt.mk
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
PACKAGE=qt
$(package)_version=5.9.6
$(package)_download_path=https://download.qt.io/official_releases/qt/5.9/$($(package)_version)/submodules
$(package)_download_path=https://download.qt.io/new_archive/qt/5.9/$($(package)_version)/submodules
$(package)_suffix=opensource-src-$($(package)_version).tar.xz
$(package)_file_name=qtbase-$($(package)_suffix)
$(package)_sha256_hash=eed620cb268b199bd83b3fc6a471c51d51e1dc2dbb5374fc97a0cc75facbe36f
Expand Down Expand Up @@ -122,6 +122,8 @@ define $(package)_preprocess_cmds
sed -i.old "s|updateqm.commands = \$$$$\$$$$LRELEASE|updateqm.commands = $($(package)_extract_dir)/qttools/bin/lrelease|" qttranslations/translations/translations.pro && \
sed -i.old "/updateqm.depends =/d" qttranslations/translations/translations.pro && \
sed -i.old "s/src_plugins.depends = src_sql src_network/src_plugins.depends = src_network/" qtbase/src/src.pro && \
sed -i.old '/#include <QtCore\/qbytearray.h>/a\
\#include <limits>' qtbase/src/corelib/tools/qbytearraymatcher.h && \
sed -i.old "s|X11/extensions/XIproto.h|X11/X.h|" qtbase/src/plugins/platforms/xcb/qxcbxsettings.cpp && \
sed -i.old 's/if \[ "$$$$XPLATFORM_MAC" = "yes" \]; then xspecvals=$$$$(macSDKify/if \[ "$$$$BUILD_ON_MAC" = "yes" \]; then xspecvals=$$$$(macSDKify/' qtbase/configure && \
sed -i.old 's/CGEventCreateMouseEvent(0, kCGEventMouseMoved, pos, 0)/CGEventCreateMouseEvent(0, kCGEventMouseMoved, pos, kCGMouseButtonLeft)/' qtbase/src/plugins/platforms/cocoa/qcocoacursor.mm && \
Expand Down
2 changes: 1 addition & 1 deletion doc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Setup
---------------------
XPChain Core is the original XPChain client and it builds the backbone of the network. It downloads and, by default, stores the entire history of XPChain transactions (which is currently more than 100 GBs); depending on the speed of your computer and network connection, the synchronization process can take anywhere from a few hours to a day or more.

To download XPChain Core, visit the [official website](https://www.xpchain.io/).
To download XPChain Core, visit the [official website](https://www.xpchain.co.kr/).

Running
---------------------
Expand Down
Loading