Compare commits

...

18 Commits

Author SHA1 Message Date
luigi1111
e34c83d7aa Merge pull request #4507
c285879 build: prepare v0.18.4.3 (selsta)
2025-10-07 19:19:50 -04:00
selsta
c28587931f build: prepare v0.18.4.3 2025-10-07 23:36:02 +02:00
tobtoht
1de4a65f90 Merge pull request #4505
c31cdaa p2pool v4.11 (SChernykh)
2025-09-28 18:40:11 +00:00
SChernykh
c31cdaad9e p2pool v4.11 2025-09-27 13:06:57 +02:00
tobtoht
440012b454 Merge pull request #4503
4bd21db p2pool v4.10.1 (sech1)
2025-09-24 20:55:23 +00:00
sech1
4bd21db202 p2pool v4.10.1 2025-09-10 09:59:56 +02:00
tobtoht
25807060a7 Merge pull request #4502
ff9558d p2pool v4.10 (sech1)
2025-09-09 18:06:27 +00:00
sech1
ff9558db09 p2pool v4.10 2025-09-09 10:35:51 +02:00
tobtoht
f3f1dfc020 Merge pull request #4498
0764fba docker: update Qt to 5.15.17 (selsta)
2025-09-08 18:18:06 +00:00
selsta
0764fbad33 docker: update Qt to 5.15.17 2025-09-03 20:31:33 +02:00
tobtoht
792130a7e6 Merge pull request #4496
5ee0484 workflows: fix macOS bundle (selsta)
2025-09-02 20:02:20 +00:00
tobtoht
3f0edae3a7 Merge pull request #4497
76416d9 workflows: remove unmaintained docker caching action (selsta)
2025-09-02 19:59:51 +00:00
selsta
76416d9133 workflows: remove unmaintained docker caching action
Does not work anymore. Action hasn't been updated since 2020.
There's a fork but it also appears unmaintained.
2025-09-02 00:14:10 +02:00
selsta
5ee04841f0 workflows: fix macOS bundle 2025-09-02 00:01:53 +02:00
tobtoht
1d09876323 Merge pull request #4494
dce481a wizard: add new Ledger Flex (selsta)
2025-08-31 12:32:37 +00:00
selsta
dce481a3d9 wizard: add new Ledger Flex 2025-08-31 00:11:23 +02:00
tobtoht
28c698375c Merge pull request #4492
cabbbaf cmake: update macOS deploy for newer boost (selsta)
2025-08-29 18:26:32 +00:00
selsta
cabbbaf172 cmake: update macOS deploy for newer boost 2025-08-25 19:29:36 +02:00
13 changed files with 61 additions and 172 deletions

107
.github/qt_helper.py vendored
View File

@@ -1,107 +0,0 @@
#!/usr/bin/env python3
import defusedxml.ElementTree
import hashlib
import mmap
import pathlib
import subprocess
import sys
import urllib.parse
import urllib.request
import xml.etree.ElementTree as ET
MAX_TRIES = 32
def fetch_links_to_archives(os, target, major, minor, patch, toolchain):
MAX_XML_SIZE = 1024 * 1024 * 1024
MIRROR = 'download.qt.io'
base_url = f'https://{MIRROR}/online/qtsdkrepository/{os}/{target}/qt{major}_{major}{minor}{patch}'
url = f'{base_url}/Updates.xml'
for _ in range(MAX_TRIES):
try:
resp = urllib.request.urlopen(url).read(MAX_XML_SIZE)
update_xml = defusedxml.ElementTree.fromstring(resp)
break
except KeyboardInterrupt:
raise
except BaseException as e:
print('error', e, flush=True)
else:
return
for pkg in update_xml.findall('./PackageUpdate'):
name = pkg.find('.//Name')
if name == None:
continue
if name.text != f'qt.qt{major}.{major}{minor}{patch}.{toolchain}':
continue
version = pkg.find('.//Version')
if version == None:
continue
archives = pkg.find('.//DownloadableArchives')
if archives == None or archives.text == None:
continue
for archive in archives.text.split(', '):
url = f'{base_url}/{name.text}/{version.text}{archive}'
file_name = pathlib.Path(urllib.parse.urlparse(url).path).name
yield {'name': file_name, 'url': url}
def download(links):
metalink = ET.Element('metalink', xmlns = "urn:ietf:params:xml:ns:metalink")
for link in links:
file = ET.SubElement(metalink, 'file', name = link['name'])
ET.SubElement(file, 'url').text = link['url']
data = ET.tostring(metalink, encoding='UTF-8', xml_declaration=True)
for _ in range(MAX_TRIES):
with subprocess.Popen([
'aria2c',
'--connect-timeout=8',
'--console-log-level=warn',
'--continue',
'--follow-metalink=mem',
'--max-concurrent-downloads=100',
'--max-connection-per-server=16',
'--max-file-not-found=100',
'--max-tries=100',
'--min-split-size=1MB',
'--retry-wait=1',
'--split=100',
'--summary-interval=0',
'--timeout=8',
'--user-agent=',
'--metalink-file=-',
], stdin=subprocess.PIPE) as aria:
aria.communicate(data)
if aria.wait() == 0:
return True
return False
def calc_hash_sum(files):
obj = hashlib.new('sha256')
for path in files:
with open(path, 'rb') as f:
with mmap.mmap(f.fileno(), 0, mmap.MAP_SHARED, mmap.PROT_READ) as m:
file_hash = hashlib.new('sha256', m).digest()
obj.update(file_hash)
return obj.digest().hex()
def extract_archives(files, out='.', targets=[]):
for path in files:
if subprocess.Popen(['7z', 'x', '-bd', '-y', '-aoa', f'-o{out}', path] + targets,
stdout=subprocess.DEVNULL,
).wait() != 0:
return False
return True
def main():
os, target, version, toolchain, expect = sys.argv[1:]
major, minor, patch = version.split('.')
links = [*fetch_links_to_archives(os, target, major, minor, patch, toolchain)]
print(*[l['url'].encode() for l in links], sep='\n', flush=True)
assert download(links)
result = calc_hash_sum([l['name'] for l in links])
print('result', result, 'expect', expect, flush=True)
assert result == expect
assert extract_archives([l['name'] for l in links], '.', ['{}.{}.{}'.format(major, minor, patch)])
[pathlib.Path(l['name']).unlink() for l in links]
if __name__ == '__main__':
main()

View File

@@ -5,6 +5,8 @@ on: [push, pull_request]
env:
FREE_DISKSPACE: |
sudo rm -rf /usr/local/.ghcup /usr/share/dotnet /usr/share/swift /usr/share/miniconda
QT_TAG: v5.15.17-lts-lgpl
QT_PREFIX: ${{ github.workspace }}/qt-install
jobs:
build-macos:
@@ -66,25 +68,35 @@ jobs:
run: build/release/bin/monero-wallet-gui --test-qml
macos-bundle:
runs-on: macos-13
runs-on: macos-15
steps:
- uses: actions/checkout@v1
with:
submodules: recursive
- name: install dependencies
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install boost hidapi openssl zmq libpgm miniupnpc expat libunwind-headers protobuf pkg-config pyenv p7zip aria2
- name: install dependencies
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install boost hidapi openssl zmq libpgm miniupnpc expat libunwind-headers protobuf pkg-config
- name: clone qt repo
run: git clone -b "${QT_TAG}" --recursive --depth 1 --shallow-submodules https://github.com/qt/qt5
- name: build qt from source
run: |
pyenv install 3.12.0
pip install defusedxml
- name: download qt
run: python monero-gui/.github/qt_helper.py mac_x64 desktop 5.15.2 clang_64 c384008156fe63cc183bade0316828c598ff3e5074397c0c9ccc588d6cdc5aca
working-directory: ../
- name: build
cd qt5
mkdir build && cd build
../configure -prefix "${QT_PREFIX}" -opensource -confirm-license -release -nomake examples -nomake tests -no-rpath -skip qtwebengine -skip qt3d -skip qtandroidextras -skip qtcanvas3d -skip qtcharts -skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtgamepad -skip qtlocation -skip qtnetworkauth -skip qtpurchasing -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qttools -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebsockets -skip qtwebview -skip qtwinextras -skip qtx11extras -skip gamepad -skip serialbus -skip location -skip webengine
make -j"$(sysctl -n hw.ncpu)"
make install
cd ../qttools/src/linguist/lrelease
../../../../build/qtbase/bin/qmake
make -j"$(sysctl -n hw.ncpu)"
make install
cd ../../../../qttools/src/macdeployqt/macdeployqt/
../../../../build/qtbase/bin/qmake
make -j"$(sysctl -n hw.ncpu)"
make install
- name: build monero-gui
run: |
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D ARCH=default -D CMAKE_PREFIX_PATH=/Users/runner/work/monero-gui/5.15.2/clang_64 ..
make
cmake -D CMAKE_BUILD_TYPE=Release -D ARCH=default -D CMAKE_PREFIX_PATH="${QT_PREFIX}" ..
make -j"$(sysctl -n hw.ncpu)"
- name: deploy
run: make deploy
working-directory: build
@@ -104,13 +116,6 @@ jobs:
- uses: actions/checkout@v1
with:
submodules: recursive
- uses: satackey/action-docker-layer-caching@v0.0.11
if: "!startsWith(github.ref, 'refs/tags/v')"
continue-on-error: true
with:
key: docker-linux-static-{hash}
restore-keys: |
docker-linux-static-
- name: install dependencies
run: sudo apt -y install xvfb libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xkb1 libxcb-shape0 libxkbcommon-x11-0
- name: free up diskspace
@@ -136,13 +141,6 @@ jobs:
- uses: actions/checkout@v1
with:
submodules: recursive
- uses: satackey/action-docker-layer-caching@v0.0.11
if: "!startsWith(github.ref, 'refs/tags/v')"
continue-on-error: true
with:
key: docker-windows-static-{hash}
restore-keys: |
docker-windows-static-
- name: free up diskspace
run: ${{env.FREE_DISKSPACE}}
- name: prepare build environment
@@ -164,21 +162,12 @@ jobs:
- uses: actions/checkout@v1
with:
submodules: recursive
- uses: satackey/action-docker-layer-caching@v0.0.11
if: "!startsWith(github.ref, 'refs/tags/v')"
continue-on-error: true
with:
key: docker-android-static-{hash}
restore-keys: |
docker-android-static-
- name: free up diskspace
run: ${{env.FREE_DISKSPACE}}
- name: prepare build environment
run: docker build --tag monero:build-env-android --build-arg THREADS=3 --file Dockerfile.android .
- name: build
run: docker run --rm -v /home/runner/work/monero-gui/monero-gui:/monero-gui -e THREADS=3 monero:build-env-android
- name: Remove obsolete docker layers
run: docker images -a | grep none | awk '{ print $3; }' | xargs docker rmi || true
- uses: actions/upload-artifact@v4
with:
name: ${{ github.job }}

View File

@@ -5,7 +5,7 @@ message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}")
set(VERSION_MAJOR "18")
set(VERSION_MINOR "4")
set(VERSION_REVISION "2")
set(VERSION_REVISION "3")
set(VERSION "0.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
option(STATIC "Link libraries statically, requires static Qt")

View File

@@ -5,7 +5,7 @@ ARG ANDROID_NDK_REVISION=23c
ARG ANDROID_NDK_HASH=e5053c126a47e84726d9f7173a04686a71f9a67a
ARG ANDROID_SDK_REVISION=7302050_latest
ARG ANDROID_SDK_HASH=7a00faadc0864f78edd8f4908a629a46d622375cbe2e5814e82934aebecdb622
ARG QT_VERSION=v5.15.16-lts-lgpl
ARG QT_VERSION=v5.15.17-lts-lgpl
WORKDIR /opt/android
ENV WORKDIR=/opt/android

View File

@@ -1,7 +1,7 @@
FROM ubuntu:18.04
ARG THREADS=1
ARG QT_VERSION=v5.15.16-lts-lgpl
ARG QT_VERSION=v5.15.17-lts-lgpl
ENV CFLAGS="-fPIC"
ENV CPPFLAGS="-fPIC"

View File

@@ -1,7 +1,7 @@
FROM ubuntu:20.04
ARG THREADS=1
ARG QT_VERSION=v5.15.16-lts-lgpl
ARG QT_VERSION=v5.15.17-lts-lgpl
ENV SOURCE_DATE_EPOCH=1397818193
RUN apt update && \
@@ -12,9 +12,9 @@ RUN apt update && \
RUN update-alternatives --set x86_64-w64-mingw32-g++ $(which x86_64-w64-mingw32-g++-posix) && \
update-alternatives --set x86_64-w64-mingw32-gcc $(which x86_64-w64-mingw32-gcc-posix)
RUN git clone -b v0.18.4.2 --depth 1 https://github.com/monero-project/monero && \
RUN git clone -b v0.18.4.3 --depth 1 https://github.com/monero-project/monero && \
cd monero && \
git reset --hard d87edf57fcc4bc2279ad9d8a1db093805e6becd7 && \
git reset --hard 7c6e84466a90f6701ebe09ff8f61ea8af3883181 && \
cp -a contrib/depends / && \
cd .. && \
rm -rf monero

View File

@@ -105,7 +105,7 @@ Packaging for your favorite distribution would be a welcome contribution!
```
git clone --branch master --recursive https://github.com/monero-project/monero-gui.git
```
\* `master` - replace with the desired version tag (e.g. `v0.18.4.2`) to build the release binaries.
\* `master` - replace with the desired version tag (e.g. `v0.18.4.3`) to build the release binaries.
3. Prepare build environment
```
cd monero-gui
@@ -128,7 +128,7 @@ Packaging for your favorite distribution would be a welcome contribution!
```
git clone --branch master --recursive https://github.com/monero-project/monero-gui.git
```
\* `master` - replace with the desired version tag (e.g. `v0.18.4.2`) to build the release binaries.
\* `master` - replace with the desired version tag (e.g. `v0.18.4.3`) to build the release binaries.
3. Prepare build environment
```
cd monero-gui

View File

@@ -26,16 +26,19 @@ if(APPLE OR (WIN32 AND NOT STATIC))
)
endif()
# libbost_filesyste-mt.dylib has a dependency on libboost_atomic-mt.dylib, maydeployqt does not copy it by itself
find_package(Boost COMPONENTS atomic)
get_target_property(BOOST_ATOMIC_LIB_PATH Boost::atomic LOCATION)
if(EXISTS ${BOOST_ATOMIC_LIB_PATH})
add_custom_command(TARGET deploy
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${BOOST_ATOMIC_LIB_PATH}" "$<TARGET_FILE_DIR:monero-wallet-gui>/../Frameworks/"
COMMENT "Copying libboost_atomic-mt.dylib"
)
endif()
# Copy Boost dylibs that macdeployqt doesn't pick up
find_package(Boost QUIET COMPONENTS atomic container date_time)
set(_boost_extras Boost::atomic Boost::container Boost::date_time)
foreach(_tgt IN LISTS _boost_extras)
if(TARGET ${_tgt})
add_custom_command(TARGET deploy POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"$<TARGET_FILE:${_tgt}>"
"$<TARGET_FILE_DIR:monero-wallet-gui>/../Frameworks/"
COMMENT "Copying $<TARGET_FILE_NAME:${_tgt}>"
)
endif()
endforeach()
# Apple Silicon requires all binaries to be codesigned
find_program(CODESIGN_EXECUTABLE NAMES codesign)

BIN
images/ledgerFlex.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

2
monero

Submodule monero updated: d87edf57fc...7c6e84466a

View File

@@ -282,6 +282,7 @@
<file>images/ledgerNanoSPlus.png</file>
<file>images/ledgerNanoX.png</file>
<file>images/ledgerStax.png</file>
<file>images/ledgerFlex.png</file>
<file>images/trezor3.png</file>
<file>images/trezor5.png</file>
<file>images/trezorT.png</file>

View File

@@ -53,21 +53,21 @@ void P2PoolManager::download() {
QString fileName;
QString validHash;
#ifdef Q_OS_WIN
url = "https://github.com/SChernykh/p2pool/releases/download/v4.9.1/p2pool-v4.9.1-windows-x64.zip";
fileName = m_p2poolPath + "/p2pool-v4.9.1-windows-x64.zip";
validHash = "97a388ffb445f943db1130169f803cc1f8a4bcc29d35c2843d3dd82ae274faf6";
url = "https://github.com/SChernykh/p2pool/releases/download/v4.11/p2pool-v4.11-windows-x64.zip";
fileName = m_p2poolPath + "/p2pool-v4.11-windows-x64.zip";
validHash = "7b3851f4a74e3729e17a0601c9bde77bcf849e8a6528ad5829417d034989cf75";
#elif defined(Q_OS_LINUX)
url = "https://github.com/SChernykh/p2pool/releases/download/v4.9.1/p2pool-v4.9.1-linux-x64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v4.9.1-linux-x64.tar.gz";
validHash = "4a5369b9e15504d9f4d8d1f8be834fd4cc590cbcea4a3bb9db2703f728f8b8cb";
url = "https://github.com/SChernykh/p2pool/releases/download/v4.11/p2pool-v4.11-linux-x64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v4.11-linux-x64.tar.gz";
validHash = "57754a4d3ed964314b2ec5c98a64d6ca76ba0062239115859949d0f67d91edb0";
#elif defined(Q_OS_MACOS_AARCH64)
url = "https://github.com/SChernykh/p2pool/releases/download/v4.9.1/p2pool-v4.9.1-macos-aarch64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v4.9.1-macos-aarch64.tar.gz";
validHash = "20054d77a3e193035e84a011e3c6e864d2e7631a5e3c9e23e73cfe906bb01794";
url = "https://github.com/SChernykh/p2pool/releases/download/v4.11/p2pool-v4.11-macos-aarch64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v4.11-macos-aarch64.tar.gz";
validHash = "51fe9680fb2a80e8fc29a4401655f40b508f38e8aff1ae94a4399c5a036ab370";
#elif defined(Q_OS_MACOS)
url = "https://github.com/SChernykh/p2pool/releases/download/v4.9.1/p2pool-v4.9.1-macos-x64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v4.9.1-macos-x64.tar.gz";
validHash = "769989d0d299ae6dac513e14eda3269f88ad66e1f73e781a3ad0b2299863db4f";
url = "https://github.com/SChernykh/p2pool/releases/download/v4.11/p2pool-v4.11-macos-x64.tar.gz";
fileName = m_p2poolPath + "/p2pool-v4.11-macos-x64.tar.gz";
validHash = "53470b203209837336e60933bda9e2ba4ae179aef4ec773abb76d6f9b64023f5";
#endif
QFile file(fileName);
epee::net_utils::http::http_simple_client http_client;

View File

@@ -56,6 +56,7 @@ Rectangle {
ListElement { column1: "Ledger Nano S Plus"; column2: "Ledger";}
ListElement { column1: "Ledger Nano X"; column2: "Ledger";}
ListElement { column1: "Ledger Stax"; column2: "Ledger";}
ListElement { column1: "Ledger Flex"; column2: "Ledger";}
ListElement { column1: "Trezor Model T"; column2: "Trezor";}
ListElement { column1: "Trezor Safe 3"; column2: "Trezor";}
ListElement { column1: "Trezor Safe 5"; column2: "Trezor";}
@@ -182,6 +183,8 @@ Rectangle {
return "qrc:///images/ledgerNanoX.png";
} else if (ledgerType == "Ledger Stax") {
return "qrc:///images/ledgerStax.png";
} else if (ledgerType == "Ledger Flex") {
return "qrc:///images/ledgerFlex.png";
}
}
return "";