|
|
|
#!/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.8.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': ['pyqt5'],
|
|
|
|
'crypto': ['cryptography>=2.6'],
|
|
|
|
'tests': ['pycryptodomex>=3.7', 'cryptography>=2.6', 'pyaes>=0.1a1'],
|
|
|
|
}
|
|
|
|
# '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="Electrum",
|
|
|
|
version=version.ELECTRUM_VERSION,
|
|
|
|
python_requires='>={}'.format(MIN_PYTHON_VERSION),
|
|
|
|
install_requires=requirements,
|
|
|
|
extras_require=extras_require,
|
|
|
|
packages=(['electrum',]
|
|
|
|
+ [('electrum.'+pkg) for pkg in
|
follow-up prev
The Windows build was failing due to the trailing slash in the path:
```
💬 INFO: Pip installing Electrum. This might take a long time if the project folder is large.
Processing c:\electrum
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'error'
error: subprocess-exited-with-error
python setup.py egg_info did not run successfully.
exit code: 1
[10 lines of output]
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "<pip-setuptools-caller>", line 34, in <module>
File "C:\electrum\setup.py", line 75, in <module>
find_packages('electrum/', exclude=["tests", "gui.kivy", "gui.kivy.*"])]),
File "C:\python3\lib\site-packages\setuptools\discovery.py", line 103, in find
convert_path(str(where)),
File "C:\python3\lib\site-packages\setuptools\_distutils\util.py", line 130, in convert_path
raise ValueError("path '%s' cannot end with '/'" % pathname)
ValueError: path 'electrum/' cannot end with '/'
```
This is weird because I tested the setuptools.find_packages invocation on Linux, where it
has no issues with the trailing slash, but indeed it looks like on Windows it does.
Not sure why it behaves differently depending on the platform. Anyway, removing.
3 years ago
|
|
|
find_packages('electrum', exclude=["tests", "gui.kivy", "gui.kivy.*"])]),
|
|
|
|
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 Bitcoin Wallet",
|
|
|
|
author="Thomas Voegtlin",
|
|
|
|
author_email="thomasv@electrum.org",
|
|
|
|
license="MIT Licence",
|
|
|
|
url="https://electrum.org",
|
|
|
|
long_description="""Lightweight Bitcoin Wallet""",
|
|
|
|
)
|