From 1959b2904e5fb173c78e0fa440fedd99aa56f07c Mon Sep 17 00:00:00 2001 From: davide3011 Date: Wed, 18 Feb 2026 14:40:20 +0100 Subject: [PATCH] feat(arm64): add ARM64/aarch64 QML support with pinned PyQt6 dependencies - Pin qml_gui extras in setup.py to PyQt6>=6.7.0,<6.8.0, PyQt6-Qt6>=6.7.0,<6.8.0 and PyQt6-sip==13.10.2 for compatibility on both x86_64 and aarch64 architectures - Add ARM64/aarch64 QML GUI installation instructions in README.md with the exact pinned package versions required for correct operation on Apple Silicon and Linux ARM64 systems --- README.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++--------- setup.py | 6 ++++- 2 files changed, 69 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 28ecdb1bb..67ba3ebc9 100644 --- a/README.md +++ b/README.md @@ -53,9 +53,7 @@ If you want to run Pallectrum from source, you'll need Python 3.10 or higher. #### Windows -**Prerequisites:** - -- Python 3.10+ installed from [python.org](https://www.python.org/downloads/) +**Prerequisites:** Python 3.10+ installed from [python.org](https://www.python.org/downloads/) **Setup with Virtual Environment:** @@ -88,16 +86,20 @@ python run_electrum gui -g qml #### Linux (Ubuntu/Debian) -**Install Prerequisites:** +##### Install Prerequisites ```bash # System packages sudo apt update -sudo apt install -y python3-venv python3-pip build-essential python3-dev -sudo apt install -y libffi-dev libssl-dev libsecp256k1-dev +sudo apt install -y \ + python3-venv python3-pip python3-dev build-essential \ + libffi-dev libssl-dev libsecp256k1-dev \ + libpulse0 ``` -**Setup with Virtual Environment:** +--- + +##### Standard Installation (x86_64) ```bash # Clone repository @@ -108,23 +110,73 @@ cd pallectrum python3 -m venv env source env/bin/activate -# Upgrade pip and install dependencies +# Upgrade pip python3 -m pip install --upgrade pip -pip install -e ".[gui,crypto]" + +# Install project with GUI + crypto extras +pip install -e "[gui,crypto]" # Run with Qt GUI python run_electrum ``` -##### Optional: QML GUI on Linux (simulates Android interface) +--- + +##### ARM64 (aarch64) + +> PyQt6 ≥ 6.9 wheels are not available for ARM64 on PyPI. Use pinned versions. ```bash -pip install ".[qml_gui]" +# Clone repository (if not already done) +git clone https://github.com/palladium-coin/pallectrum.git +cd pallectrum + +# Create and activate virtual environment +python3 -m venv env +source env/bin/activate + +# Upgrade pip +python3 -m pip install --upgrade pip + +# Base requirements +pip install -r contrib/requirements/requirements.txt +pip install "cryptography>=2.6" + +# Install ARM64-compatible PyQt6 versions +pip install --only-binary PyQt6,PyQt6-Qt6,PyQt6-sip \ + "PyQt6>=6.7.0,<6.8.0" \ + "PyQt6-Qt6>=6.7.0,<6.8.0" \ + "PyQt6-sip==13.10.2" + +# Install project (development mode) +pip install -e . + +# Run +python run_electrum +``` + +--- + +##### Optional: QML GUI (Android-like interface) + +###### x86_64 + +```bash +pip install "[qml_gui]" python run_electrum gui -g qml ``` -For detailed installation instructions, including dependencies and platform-specific notes, see the [original Electrum documentation](README-ELECTRUM.md#getting-started). +###### ARM64 +```bash +python run_electrum gui -g qml +``` + +--- + +For detailed installation instructions, including dependencies and platform-specific notes, see the original Electrum documentation: + +[README-ELECTRUM.md#getting-started](README-ELECTRUM.md#getting-started) ## User Guide diff --git a/setup.py b/setup.py index 0674ce38d..58e256b4b 100755 --- a/setup.py +++ b/setup.py @@ -45,7 +45,11 @@ extras_require = { 'gui': ['pyqt6'], 'crypto': ['cryptography>=2.6'], 'tests': ['pycryptodomex>=3.7', 'cryptography>=2.6', 'pyaes>=0.1a1'], - 'qml_gui': ['pyqt6<6.6', 'pyqt6-qt6<6.6'] + 'qml_gui': [ + 'pyqt6>=6.7.0,<6.8.0', + 'pyqt6-qt6>=6.7.0,<6.8.0', + 'pyqt6-sip==13.10.2', + ], } # 'full' extra that tries to grab everything an enduser would need (except for libsecp256k1...) extras_require['full'] = [pkg for sublist in