- 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
87 lines
3.0 KiB
Python
Executable File
87 lines
3.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# python setup.py sdist --format=zip,gztar
|
|
|
|
import os
|
|
import sys
|
|
import platform
|
|
import importlib.util
|
|
import argparse
|
|
import subprocess
|
|
|
|
from setuptools import setup, find_packages
|
|
from setuptools.command.install import install
|
|
|
|
MIN_PYTHON_VERSION = "3.10.0"
|
|
_min_python_version_tuple = tuple(map(int, (MIN_PYTHON_VERSION.split("."))))
|
|
|
|
|
|
if sys.version_info[:3] < _min_python_version_tuple:
|
|
sys.exit("Error: Electrum requires Python version >= %s..." % MIN_PYTHON_VERSION)
|
|
|
|
with open('contrib/requirements/requirements.txt') as f:
|
|
requirements = f.read().splitlines()
|
|
|
|
with open('contrib/requirements/requirements-hw.txt') as f:
|
|
requirements_hw = f.read().splitlines()
|
|
|
|
# load version.py; needlessly complicated alternative to "imp.load_source":
|
|
version_spec = importlib.util.spec_from_file_location('version', 'electrum/version.py')
|
|
version_module = version = importlib.util.module_from_spec(version_spec)
|
|
version_spec.loader.exec_module(version_module)
|
|
|
|
data_files = []
|
|
|
|
if platform.system() in ['Linux', 'FreeBSD', 'DragonFly']:
|
|
# note: we can't use absolute paths here. see #7787
|
|
data_files += [
|
|
(os.path.join('share', 'applications'), ['electrum.desktop']),
|
|
(os.path.join('share', 'pixmaps'), ['electrum/gui/icons/electrum.png']),
|
|
(os.path.join('share', 'icons/hicolor/128x128/apps'), ['electrum/gui/icons/electrum.png']),
|
|
]
|
|
|
|
extras_require = {
|
|
'hardware': requirements_hw,
|
|
'gui': ['pyqt6'],
|
|
'crypto': ['cryptography>=2.6'],
|
|
'tests': ['pycryptodomex>=3.7', 'cryptography>=2.6', 'pyaes>=0.1a1'],
|
|
'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
|
|
(extras_require['hardware'], extras_require['gui'], extras_require['crypto'])
|
|
for pkg in sublist]
|
|
# legacy. keep 'fast' extra working
|
|
extras_require['fast'] = extras_require['crypto']
|
|
|
|
|
|
setup(
|
|
name="Pallectrum",
|
|
version=version.ELECTRUM_VERSION,
|
|
python_requires='>={}'.format(MIN_PYTHON_VERSION),
|
|
install_requires=requirements,
|
|
extras_require=extras_require,
|
|
packages=(['electrum',]
|
|
+ [('electrum.'+pkg) for pkg in
|
|
find_packages('electrum', exclude=["tests"])]),
|
|
package_dir={
|
|
'electrum': 'electrum'
|
|
},
|
|
# Note: MANIFEST.in lists what gets included in the tar.gz, and the
|
|
# package_data kwarg lists what gets put in site-packages when pip installing the tar.gz.
|
|
# By specifying include_package_data=True, MANIFEST.in becomes responsible for both.
|
|
include_package_data=True,
|
|
scripts=['electrum/electrum'],
|
|
data_files=data_files,
|
|
description="Lightweight Palladium Wallet",
|
|
author="Pallectrum Project",
|
|
author_email="",
|
|
license="MIT Licence",
|
|
url="https://github.com/palladium-coin/pallectrum",
|
|
long_description="""Lightweight Palladium Wallet""",
|
|
)
|