forked from LBRYCommunity/lbry-sdk
346 lines
12 KiB
Python
346 lines
12 KiB
Python
#!/usr/bin/env python
|
|
|
|
import sys
|
|
import os
|
|
import site
|
|
from lbrynet import __version__
|
|
|
|
LINUX = 1
|
|
DARWIN = 2
|
|
WINDOWS = 3
|
|
|
|
if sys.platform.startswith("linux"):
|
|
platform = LINUX
|
|
elif sys.platform.startswith("darwin"):
|
|
platform = DARWIN
|
|
elif sys.platform.startswith("win"):
|
|
platform = WINDOWS
|
|
else:
|
|
raise Exception("Unknown os: %s" % sys.platform)
|
|
|
|
base_dir = os.path.abspath(os.path.dirname(__file__))
|
|
package_name = "lbrynet"
|
|
dist_name = "LBRY"
|
|
description = "A decentralized media library and marketplace"
|
|
author = "LBRY, Inc"
|
|
url = "lbry.io"
|
|
maintainer = "Jack Robison"
|
|
maintainer_email = "jack@lbry.io"
|
|
keywords = "LBRY"
|
|
|
|
requires = [
|
|
'pycrypto',
|
|
'twisted',
|
|
'miniupnpc',
|
|
'yapsy',
|
|
'seccure',
|
|
'python-bitcoinrpc==0.1',
|
|
'txJSON-RPC',
|
|
'requests>=2.4.2',
|
|
'unqlite==0.2.0',
|
|
'lbryum',
|
|
'jsonrpc',
|
|
'simplejson',
|
|
'jsonschema',
|
|
'appdirs',
|
|
'six==1.9.0',
|
|
'base58',
|
|
'googlefinance',
|
|
'requests_futures',
|
|
'PyYAML'
|
|
]
|
|
|
|
console_scripts = [
|
|
# 'lbrynet-stdin-uploader = lbrynet.lbrynet_console.LBRYStdinUploader:launch_stdin_uploader',
|
|
# 'lbrynet-stdout-downloader = lbrynet.lbrynet_console.LBRYStdoutDownloader:launch_stdout_downloader',
|
|
# 'lbrynet-create-network = lbrynet.create_network:main',
|
|
# 'lbrynet-launch-node = lbrynet.dht.node:main',
|
|
# 'lbrynet-launch-rpc-node = lbrynet.rpc_node:main',
|
|
# 'lbrynet-rpc-node-cli = lbrynet.node_rpc_cli:main',
|
|
# 'lbrynet-lookup-hosts-for-hash = lbrynet.dht_scripts:get_hosts_for_hash_in_dht',
|
|
# 'lbrynet-announce_hash_to_dht = lbrynet.dht_scripts:announce_hash_to_dht',
|
|
'lbrynet-daemon = lbrynet.lbrynet_daemon.DaemonControl:start',
|
|
'stop-lbrynet-daemon = lbrynet.lbrynet_daemon.DaemonControl:stop',
|
|
'lbrynet-cli = lbrynet.lbrynet_daemon.DaemonCLI:main'
|
|
]
|
|
|
|
if platform == LINUX:
|
|
import ez_setup
|
|
ez_setup.use_setuptools()
|
|
from setuptools import setup, find_packages
|
|
|
|
requires.append('service-identity')
|
|
|
|
setup(name=package_name,
|
|
description=description,
|
|
version=__version__,
|
|
maintainer=maintainer,
|
|
maintainer_email=maintainer_email,
|
|
url=url,
|
|
author=author,
|
|
keywords=keywords,
|
|
packages=find_packages(base_dir),
|
|
install_requires=requires,
|
|
entry_points={'console_scripts': console_scripts},
|
|
data_files=[
|
|
('lbrynet/lbrynet_console/plugins',
|
|
[
|
|
os.path.join(base_dir, 'lbrynet', 'lbrynet_console', 'plugins',
|
|
'blindrepeater.yapsy-plugin')
|
|
]
|
|
),
|
|
],
|
|
dependency_links=['https://github.com/lbryio/lbryum/tarball/master/#egg=lbryum'],
|
|
)
|
|
|
|
elif platform == DARWIN:
|
|
import ez_setup
|
|
|
|
ez_setup.use_setuptools()
|
|
from setuptools import setup, find_packages
|
|
|
|
setup(name=package_name,
|
|
description=description,
|
|
version=__version__,
|
|
maintainer=maintainer,
|
|
maintainer_email=maintainer_email,
|
|
url=url,
|
|
author=author,
|
|
keywords=keywords,
|
|
packages=find_packages(base_dir),
|
|
install_requires=requires,
|
|
entry_points={'console_scripts': console_scripts},
|
|
data_files=[
|
|
('lbrynet/lbrynet_console/plugins',
|
|
[
|
|
os.path.join(base_dir, 'lbrynet', 'lbrynet_console', 'plugins',
|
|
'blindrepeater.yapsy-plugin')
|
|
]
|
|
),
|
|
],
|
|
dependency_links=['https://github.com/lbryio/lbryum/tarball/master/#egg=lbryum'],
|
|
)
|
|
|
|
elif platform == WINDOWS:
|
|
import opcode
|
|
import pkg_resources
|
|
from cx_Freeze import setup, Executable
|
|
import requests.certs
|
|
|
|
app_dir = os.path.join('packaging', 'windows', 'lbry-win32-app')
|
|
daemon_dir = os.path.join('lbrynet', 'lbrynet_daemon')
|
|
win_icon = os.path.join(app_dir, 'icons', 'lbry256.ico')
|
|
wordlist_path = pkg_resources.resource_filename('lbryum', 'wordlist')
|
|
|
|
# Allow virtualenv to find distutils of base python installation
|
|
distutils_path = os.path.join(os.path.dirname(opcode.__file__), 'distutils')
|
|
|
|
schemas = os.path.join(site.getsitepackages()[1], "jsonschema", "schemas")
|
|
onlyfiles = [f for f in os.listdir(schemas) if os.path.isfile(os.path.join(schemas, f))]
|
|
zipincludes = [(os.path.join(schemas, f), os.path.join("jsonschema", "schemas", f)) for f in onlyfiles]
|
|
|
|
def find_data_file(filename):
|
|
if getattr(sys, 'frozen', False):
|
|
# The application is frozen
|
|
data_dir = os.path.dirname(sys.executable)
|
|
else:
|
|
# The application is not frozen
|
|
# Change this bit to match where you store your data files:
|
|
data_dir = os.path.dirname(__file__)
|
|
return os.path.join(data_dir, filename)
|
|
|
|
shortcut_table = [
|
|
('LBRYShortcut', # Shortcut
|
|
'DesktopFolder', # Directory
|
|
'LBRY', # Name
|
|
'TARGETDIR', # Component
|
|
'[TARGETDIR]\{0}.exe'.format(dist_name), # Target
|
|
None, # Arguments
|
|
description, # Description
|
|
None, # Hotkey
|
|
None, # Icon
|
|
None, # IconIndex
|
|
None, # ShowCmd
|
|
'TARGETDIR', # WkDir
|
|
),
|
|
# ('DaemonShortcut', # Shortcut
|
|
# 'DesktopFolder', # Directory
|
|
# 'lbrynet-daemon', # Name
|
|
# 'TARGETDIR', # Component
|
|
# '[TARGETDIR]\lbrynet-daemon.exe', # Target
|
|
# '--log-to-console', # Arguments
|
|
# description, # Description
|
|
# None, # Hotkey
|
|
# None, # Icon
|
|
# None, # IconIndex
|
|
# None, # ShowCmd
|
|
# 'TARGETDIR', # WkDir
|
|
# ),
|
|
# ('DaemonCLIShortcut', # Shortcut
|
|
# 'DesktopFolder', # Directory
|
|
# 'lbrynet-cli', # Name
|
|
# 'TARGETDIR', # Component
|
|
# '[TARGETDIR]\lbrynet-cli.exe', # Target
|
|
# None, # Arguments
|
|
# description, # Description
|
|
# None, # Hotkey
|
|
# None, # Icon
|
|
# None, # IconIndex
|
|
# None, # ShowCmd
|
|
# 'TARGETDIR', # WkDir
|
|
# ),
|
|
('ProgramMenuLBRYShortcut', # Shortcut
|
|
'ProgramMenuFolder', # Directory
|
|
# r'[ProgramMenuFolder]\lbrynet', # Directory
|
|
'LBRY', # Name
|
|
'TARGETDIR', # Component
|
|
'[TARGETDIR]\{0}.exe'.format(dist_name), # Target
|
|
None, # Arguments
|
|
description, # Description
|
|
None, # Hotkey
|
|
None, # Icon
|
|
None, # IconIndex
|
|
None, # ShowCmd
|
|
'TARGETDIR', # WkDir
|
|
),
|
|
('ProgramMenuDaemonShortcut', # Shortcut
|
|
'ProgramMenuFolder', # Directory
|
|
# r'[ProgramMenuFolder]\lbrynet', # Directory
|
|
'lbrynet-daemon', # Name
|
|
'TARGETDIR', # Component
|
|
'[TARGETDIR]\lbrynet-daemon.exe', # Target
|
|
'--log-to-console', # Arguments
|
|
description, # Description
|
|
None, # Hotkey
|
|
None, # Icon
|
|
None, # IconIndex
|
|
None, # ShowCmd
|
|
'TARGETDIR', # WkDir
|
|
),
|
|
('ProgramMenuDaemonCLIShortcut', # Shortcut
|
|
'ProgramMenuFolder', # Directory
|
|
# r'[ProgramMenuFolder]\lbrynet', # Directory
|
|
'lbrynet-cli', # Name
|
|
'TARGETDIR', # Component
|
|
'[TARGETDIR]\lbrynet-cli.exe', # Target
|
|
None, # Arguments
|
|
description, # Description
|
|
None, # Hotkey
|
|
None, # Icon
|
|
None, # IconIndex
|
|
None, # ShowCmd
|
|
'TARGETDIR', # WkDir
|
|
),
|
|
]
|
|
|
|
msi_data = {"Shortcut": shortcut_table}
|
|
|
|
bdist_msi_options = {
|
|
'upgrade_code': '{18c0e933-ad08-44e8-a413-1d0ed624c100}',
|
|
'add_to_path': True,
|
|
# Default install path is 'C:\Program Files\' for 32-bit or 'C:\Program Files (x86)\' for 64-bit
|
|
# 'initial_target_dir': r'[LocalAppDataFolder]\{0}'.format(name),
|
|
'data': msi_data
|
|
}
|
|
|
|
build_exe_options = {
|
|
'include_msvcr': True,
|
|
'includes': [],
|
|
'packages': ['cython',
|
|
'twisted',
|
|
'yapsy',
|
|
'appdirs',
|
|
'argparse',
|
|
'base58',
|
|
'colorama',
|
|
'cx_Freeze',
|
|
'dns',
|
|
'ecdsa',
|
|
'gmpy',
|
|
'googlefinance',
|
|
'jsonrpc',
|
|
'jsonrpclib',
|
|
'lbryum',
|
|
'loggly',
|
|
'miniupnpc',
|
|
'pbkdf2',
|
|
'google.protobuf',
|
|
'Crypto',
|
|
'bitcoinrpc',
|
|
'win32api',
|
|
'qrcode',
|
|
'requests',
|
|
'requests_futures',
|
|
'seccure',
|
|
'simplejson',
|
|
'jsonschema',
|
|
'six',
|
|
'aes',
|
|
'txjsonrpc',
|
|
'unqlite',
|
|
'wsgiref',
|
|
'zope.interface',
|
|
'os',
|
|
'pkg_resources',
|
|
'yaml'
|
|
],
|
|
'excludes': ['distutils', 'collections.sys', 'collections._weakref', 'collections.abc',
|
|
'Tkinter', 'tk', 'tcl', 'PyQt4', 'nose', 'mock'
|
|
'zope.interface._zope_interface_coptimizations', 'leveldb'],
|
|
'include_files': [(distutils_path, 'distutils'), (requests.certs.where(), 'cacert.pem'),
|
|
(os.path.join(app_dir, 'icons', 'lbry16.ico'), os.path.join('icons', 'lbry16.ico')),
|
|
(os.path.join(app_dir, 'icons', 'lbry256.ico'), os.path.join('icons', 'lbry256.ico')),
|
|
(os.path.join(wordlist_path, 'chinese_simplified.txt'),
|
|
os.path.join('wordlist', 'chinese_simplified.txt')),
|
|
(os.path.join(wordlist_path, 'english.txt'), os.path.join('wordlist', 'english.txt')),
|
|
(os.path.join(wordlist_path, 'japanese.txt'), os.path.join('wordlist', 'japanese.txt')),
|
|
(os.path.join(wordlist_path, 'portuguese.txt'), os.path.join('wordlist', 'portuguese.txt')),
|
|
(os.path.join(wordlist_path, 'spanish.txt'), os.path.join('wordlist', 'spanish.txt'))
|
|
],
|
|
'namespace_packages': ['zope', 'google'],
|
|
"zip_includes": zipincludes}
|
|
|
|
tray_app = Executable(
|
|
script=os.path.join(app_dir, 'LBRYWin32App.py'),
|
|
base='Win32GUI',
|
|
icon=win_icon,
|
|
compress=True,
|
|
# shortcutName=dist_name,
|
|
# shortcutDir='DesktopFolder',
|
|
targetName='{0}.exe'.format(dist_name)
|
|
)
|
|
|
|
daemon_exe = Executable(
|
|
script=os.path.join(daemon_dir, 'DaemonControl.py'),
|
|
icon=win_icon,
|
|
# shortcutName="lbrynet-daemon",
|
|
# shortcutDir='DesktopFolder',
|
|
targetName='lbrynet-daemon.exe'
|
|
)
|
|
|
|
cli_exe = Executable(
|
|
script=os.path.join(daemon_dir, 'DaemonCLI.py'),
|
|
icon=win_icon,
|
|
# shortcutName="lbrynet-cli",
|
|
# shortcutDir='DesktopFolder',
|
|
targetName='lbrynet-cli.exe'
|
|
)
|
|
|
|
setup(
|
|
name=package_name,
|
|
description=description,
|
|
version=__version__,
|
|
maintainer=maintainer,
|
|
maintainer_email=maintainer_email,
|
|
url=url,
|
|
author=author,
|
|
keywords=keywords,
|
|
data_files=[],
|
|
options={'build_exe': build_exe_options,
|
|
'bdist_msi': bdist_msi_options},
|
|
executables=[
|
|
tray_app,
|
|
daemon_exe,
|
|
cli_exe
|
|
],
|
|
)
|