You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.1 KiB
104 lines
3.1 KiB
#!/usr/bin/env python3 |
|
|
|
# python setup.py sdist --format=zip,gztar |
|
|
|
import os |
|
import sys |
|
import platform |
|
import imp |
|
import argparse |
|
import subprocess |
|
|
|
from setuptools import setup, find_packages |
|
from setuptools.command.install import install |
|
|
|
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() |
|
|
|
version = imp.load_source('version', 'electrum/version.py') |
|
|
|
if sys.version_info[:3] < (3, 6, 0): |
|
sys.exit("Error: Electrum requires Python version >= 3.6.0...") |
|
|
|
data_files = [] |
|
|
|
if platform.system() in ['Linux', 'FreeBSD', 'DragonFly']: |
|
parser = argparse.ArgumentParser() |
|
parser.add_argument('--root=', dest='root_path', metavar='dir', default='/') |
|
opts, _ = parser.parse_known_args(sys.argv[1:]) |
|
usr_share = os.path.join(sys.prefix, "share") |
|
icons_dirname = 'pixmaps' |
|
if not os.access(opts.root_path + usr_share, os.W_OK) and \ |
|
not os.access(opts.root_path, os.W_OK): |
|
icons_dirname = 'icons' |
|
if 'XDG_DATA_HOME' in os.environ.keys(): |
|
usr_share = os.environ['XDG_DATA_HOME'] |
|
else: |
|
usr_share = os.path.expanduser('~/.local/share') |
|
data_files += [ |
|
(os.path.join(usr_share, 'applications/'), ['electrum.desktop']), |
|
(os.path.join(usr_share, icons_dirname), ['icons/electrum.png']) |
|
] |
|
|
|
extras_require = { |
|
'hardware': requirements_hw, |
|
'fast': ['pycryptodomex'], |
|
'gui': ['pyqt5'], |
|
} |
|
extras_require['full'] = [pkg for sublist in list(extras_require.values()) for pkg in sublist] |
|
|
|
|
|
class CustomInstallCommand(install): |
|
def run(self): |
|
install.run(self) |
|
# potentially build Qt icons file |
|
try: |
|
import PyQt5 |
|
except ImportError: |
|
pass |
|
else: |
|
try: |
|
path = os.path.join(self.install_lib, "electrum/gui/qt/icons_rc.py") |
|
if not os.path.exists(path): |
|
subprocess.call(["pyrcc5", "icons.qrc", "-o", path]) |
|
except Exception as e: |
|
print('Warning: building icons file failed with {}'.format(e)) |
|
|
|
|
|
setup( |
|
name="Electrum", |
|
version=version.ELECTRUM_VERSION, |
|
python_requires='>=3.6', |
|
install_requires=requirements, |
|
extras_require=extras_require, |
|
packages=[ |
|
'electrum', |
|
'electrum.gui', |
|
'electrum.gui.qt', |
|
'electrum.plugins', |
|
] + [('electrum.plugins.'+pkg) for pkg in find_packages('electrum/plugins')], |
|
package_dir={ |
|
'electrum': 'electrum' |
|
}, |
|
package_data={ |
|
'': ['*.txt', '*.json', '*.ttf', '*.otf'], |
|
'electrum': [ |
|
'wordlist/*.txt', |
|
'locale/*/LC_MESSAGES/electrum.mo', |
|
], |
|
}, |
|
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""", |
|
cmdclass={ |
|
'install': CustomInstallCommand, |
|
}, |
|
)
|
|
|