From 516a9fa1354bfe5ee0b3d22c426f2a3d414665de Mon Sep 17 00:00:00 2001 From: inso <insomniak.fr@gmaiL.com> Date: Tue, 20 Feb 2018 13:09:43 +0100 Subject: [PATCH] Change sakia packaging to be able to use wheels --- .gitignore | 2 + gen_resources.py | 7 +- gen_translations.py | 2 +- res/icons/{icons.qrc => sakia.icons.qrc} | 0 setup.py | 90 +++++++++++++++++++ src/sakia/app.py | 2 +- .../dialogs/connection_cfg/connection_cfg.ui | 10 +-- src/sakia/gui/dialogs/contact/contact.ui | 6 +- .../plugins_manager/plugins_manager.ui | 2 +- src/sakia/gui/main_window/mainwindow.ui | 2 +- src/sakia/gui/main_window/toolbar/toolbar.ui | 12 +-- .../gui/navigation/graphs/wot/wot_tab.ui | 2 +- .../gui/navigation/homescreen/homescreen.ui | 2 +- src/sakia/gui/navigation/identity/identity.ui | 8 +- src/sakia/gui/navigation/network/network.ui | 4 +- .../gui/navigation/txhistory/txhistory.ui | 4 +- src/sakia/gui/preferences.ui | 8 +- src/sakia/gui/sub/search_user/__init__.py | 0 src/sakia/gui/sub/search_user/search_user.ui | 4 +- .../sub/user_information/user_information.ui | 8 +- src/sakia/gui/widgets/toast.ui | 4 +- src/sakia/main.py | 6 +- 22 files changed, 142 insertions(+), 43 deletions(-) rename res/icons/{icons.qrc => sakia.icons.qrc} (100%) create mode 100644 setup.py create mode 100644 src/sakia/gui/sub/search_user/__init__.py diff --git a/.gitignore b/.gitignore index 7ff4882a..af2fde44 100644 --- a/.gitignore +++ b/.gitignore @@ -41,6 +41,8 @@ nosetests.xml src/sakia/gen_resources/* src/icons_rc.py src/i18n_rc.py +src/sakia/icons_rc.py +src/sakia/i18n_rc.py res/i18n/qm res/i18n/lang-* out diff --git a/gen_resources.py b/gen_resources.py index 699fdd81..128eb908 100644 --- a/gen_resources.py +++ b/gen_resources.py @@ -5,7 +5,7 @@ import sys, os, multiprocessing, subprocess root_path = os.path.abspath(os.path.join(os.path.dirname(__file__))) resources = os.path.abspath(os.path.join(os.path.dirname(__file__), 'res')) -gen_resources = os.path.abspath(os.path.join(os.path.dirname(__file__), 'src')) +gen_resources = os.path.abspath(os.path.join(os.path.dirname(__file__), 'src/sakia')) def convert_ui(args, **kwargs): subprocess.call(args, **kwargs) @@ -22,7 +22,10 @@ def build_resources(): exe = 'pyuic5' elif f.endswith('.qrc'): source = os.path.join(root, f) - dest = os.path.join(gen_resources, os.path.splitext(os.path.basename(source))[0]+'_rc.py') + filename = os.path.splitext(os.path.basename(source))[0] + # we remove "sakia." from the rc filename + # its only named like this so that imports are corrects in uic files + dest = os.path.join(gen_resources, filename.replace('sakia.', '')+'_rc.py') exe = 'pyrcc5' else: continue diff --git a/gen_translations.py b/gen_translations.py index 35c1d6b0..71af5da1 100644 --- a/gen_translations.py +++ b/gen_translations.py @@ -1,6 +1,6 @@ import sys, os, multiprocessing, subprocess, time, shutil -gen_resources = os.path.abspath(os.path.join(os.path.dirname(__file__), 'src')) +gen_resources = os.path.abspath(os.path.join(os.path.dirname(__file__), 'src/sakia')) ts = os.path.abspath(os.path.join(os.path.dirname(__file__), 'res', 'i18n', 'ts')) qm = os.path.abspath(os.path.join(os.path.dirname(__file__), 'res', 'i18n', 'qm')) if not os.path.exists(qm): diff --git a/res/icons/icons.qrc b/res/icons/sakia.icons.qrc similarity index 100% rename from res/icons/icons.qrc rename to res/icons/sakia.icons.qrc diff --git a/setup.py b/setup.py new file mode 100644 index 00000000..1e67e748 --- /dev/null +++ b/setup.py @@ -0,0 +1,90 @@ +from setuptools import setup, find_packages +import os +import re +import sys +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), 'src'))) +import sakia + + +def which(program): + """ + Detect whether or not a program is installed. + Thanks to http://stackoverflow.com/a/377028/70191 + """ + def is_exe(fpath): + return os.path.exists(fpath) and os.access(fpath, os.X_OK) + + fpath, _ = os.path.split(program) + if fpath: + if is_exe(program): + return program + else: + for path in os.environ['PATH'].split(os.pathsep): + exe_file = os.path.join(path, program) + if is_exe(exe_file): + return exe_file + + return None + +EDITABLE_REQUIREMENT = re.compile(r'^-e (?P<link>(?P<vcs>git|svn|hg|bzr).+#egg=(?P<package>.+)-(?P<version>\d(?:\.\d)*))$') + +install_requires = [] +dependency_links = [] +data_files = [('sakia', ['src/sakia/root_servers.yml', 'src/sakia/g1_licence.html'])] + +for requirement in (l.strip() for l in open('requirements.txt')): + match = EDITABLE_REQUIREMENT.match(requirement) + if match: + assert which(match.group('vcs')) is not None, \ + "VCS '%(vcs)s' must be installed in order to install %(link)s" % match.groupdict() + install_requires.append("%(package)s==%(version)s" % match.groupdict()) + dependency_links.append(match.group('link')) + else: + install_requires.append(requirement) + +sql_files = [] +for file in os.listdir(os.path.join("src", "sakia", "data", "repositories")): + if file.endswith(".sql"): + sql_file = os.path.basename(file) + sql_files.append('src/sakia/data/repositories/{:}'.format(sql_file)) +data_files.append(('sakia/data/repositories/', sql_files)) + + +setup( + name='sakia', + + version=sakia.__version__, + author="inso", + + author_email="insomniak.fr@gmail.com", + + description="A [duniter](https://github.com/duniter/duniter) Python client", + + long_description=open('README.md').read(), + + # Active la prise en compte du fichier MANIFEST.in + include_package_data=True, + url='https://github.com/duniter/sakia', + + classifiers=[ + "Programming Language :: Python", + "Development Status :: 4 - Beta", + "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", + "Natural Language :: French", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3.5", + "Topic :: Communications", + ], + install_requires=install_requires, + dependency_links=dependency_links, + packages=find_packages('src'), + package_dir={'sakia': 'src/sakia', + 'i18n_rc': 'src/i18n_rc', + 'icons_rc': 'src/icons_rc'}, + entry_points={ + 'console_scripts': [ + 'sakia = sakia.main:main' + ] + }, + data_files=data_files +) \ No newline at end of file diff --git a/src/sakia/app.py b/src/sakia/app.py index e198750c..ecfe2e41 100644 --- a/src/sakia/app.py +++ b/src/sakia/app.py @@ -2,7 +2,7 @@ import attr import datetime import logging import socket -import i18n_rc +import sakia.i18n_rc import async_timeout import aiohttp from PyQt5.QtCore import QObject, pyqtSignal, QTranslator, QCoreApplication, QLocale, Qt diff --git a/src/sakia/gui/dialogs/connection_cfg/connection_cfg.ui b/src/sakia/gui/dialogs/connection_cfg/connection_cfg.ui index c8cb9fef..3ca00058 100644 --- a/src/sakia/gui/dialogs/connection_cfg/connection_cfg.ui +++ b/src/sakia/gui/dialogs/connection_cfg/connection_cfg.ui @@ -35,7 +35,7 @@ <string>Register a new identity</string> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/new_membership</normaloff>:/icons/new_membership</iconset> </property> <property name="iconSize"> @@ -52,7 +52,7 @@ <string>Connect with an existing identity</string> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/connect_icon</normaloff>:/icons/connect_icon</iconset> </property> <property name="iconSize"> @@ -69,7 +69,7 @@ <string>Connect a wallet</string> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/wallet_icon</normaloff>:/icons/wallet_icon</iconset> </property> <property name="iconSize"> @@ -86,7 +86,7 @@ <string>Connect using a public key</string> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/duniter_info_icon</normaloff>:/icons/duniter_info_icon</iconset> </property> <property name="iconSize"> @@ -484,7 +484,7 @@ p, li { white-space: pre-wrap; } </layout> </widget> <resources> - <include location="../../../../../res/icons/icons.qrc"/> + <include location="../../../../../res/icons/sakia.icons.qrc"/> </resources> <connections/> <slots> diff --git a/src/sakia/gui/dialogs/contact/contact.ui b/src/sakia/gui/dialogs/contact/contact.ui index 5a8a86a4..9c3223fb 100644 --- a/src/sakia/gui/dialogs/contact/contact.ui +++ b/src/sakia/gui/dialogs/contact/contact.ui @@ -54,7 +54,7 @@ <string>Delete selected contact</string> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/not_member</normaloff>:/icons/not_member</iconset> </property> </widget> @@ -172,7 +172,7 @@ <string>Save</string> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/add_account_icon</normaloff>:/icons/add_account_icon</iconset> </property> <property name="iconSize"> @@ -207,7 +207,7 @@ </layout> </widget> <resources> - <include location="../../../../../res/icons/icons.qrc"/> + <include location="../../../../../res/icons/sakia.icons.qrc"/> </resources> <connections/> <slots> diff --git a/src/sakia/gui/dialogs/plugins_manager/plugins_manager.ui b/src/sakia/gui/dialogs/plugins_manager/plugins_manager.ui index 653208d1..0c733a7e 100644 --- a/src/sakia/gui/dialogs/plugins_manager/plugins_manager.ui +++ b/src/sakia/gui/dialogs/plugins_manager/plugins_manager.ui @@ -89,7 +89,7 @@ </layout> </widget> <resources> - <include location="../../../../../res/icons/icons.qrc"/> + <include location="../../../../../res/icons/sakia.icons.qrc"/> </resources> <connections/> <slots> diff --git a/src/sakia/gui/main_window/mainwindow.ui b/src/sakia/gui/main_window/mainwindow.ui index 83349620..69523321 100644 --- a/src/sakia/gui/main_window/mainwindow.ui +++ b/src/sakia/gui/main_window/mainwindow.ui @@ -140,7 +140,7 @@ </action> </widget> <resources> - <include location="../../../../res/icons/icons.qrc"/> + <include location="../../../../res/icons/sakia.icons.qrc"/> </resources> <connections/> <slots> diff --git a/src/sakia/gui/main_window/toolbar/toolbar.ui b/src/sakia/gui/main_window/toolbar/toolbar.ui index 330986d4..f86152ea 100644 --- a/src/sakia/gui/main_window/toolbar/toolbar.ui +++ b/src/sakia/gui/main_window/toolbar/toolbar.ui @@ -38,7 +38,7 @@ <string>Network</string> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/wot_icon</normaloff>:/icons/wot_icon</iconset> </property> <property name="iconSize"> @@ -55,7 +55,7 @@ <string>Search an identity</string> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/explorer_icon</normaloff>:/icons/explorer_icon</iconset> </property> <property name="iconSize"> @@ -72,7 +72,7 @@ <string>Explore</string> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/add_community</normaloff>:/icons/add_community</iconset> </property> <property name="iconSize"> @@ -102,7 +102,7 @@ <string>Contacts</string> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/connect_icon</normaloff>:/icons/connect_icon</iconset> </property> <property name="iconSize"> @@ -119,7 +119,7 @@ <string/> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/menu_icon</normaloff>:/icons/menu_icon</iconset> </property> <property name="iconSize"> @@ -142,7 +142,7 @@ </layout> </widget> <resources> - <include location="../../../../../res/icons/icons.qrc"/> + <include location="../../../../../res/icons/sakia.icons.qrc"/> </resources> <connections/> </ui> diff --git a/src/sakia/gui/navigation/graphs/wot/wot_tab.ui b/src/sakia/gui/navigation/graphs/wot/wot_tab.ui index 7bddf7cb..ad97c674 100644 --- a/src/sakia/gui/navigation/graphs/wot/wot_tab.ui +++ b/src/sakia/gui/navigation/graphs/wot/wot_tab.ui @@ -31,7 +31,7 @@ </customwidget> </customwidgets> <resources> - <include location="../../../../../../res/icons/icons.qrc"/> + <include location="../../../../../../res/icons/sakia.icons.qrc"/> </resources> <connections/> <slots> diff --git a/src/sakia/gui/navigation/homescreen/homescreen.ui b/src/sakia/gui/navigation/homescreen/homescreen.ui index 97f5d8bf..40999756 100644 --- a/src/sakia/gui/navigation/homescreen/homescreen.ui +++ b/src/sakia/gui/navigation/homescreen/homescreen.ui @@ -22,7 +22,7 @@ <layout class="QVBoxLayout" name="verticalLayout"/> </widget> <resources> - <include location="../../../../res/icons/icons.qrc"/> + <include location="../../../../res/icons/sakia.icons.qrc"/> </resources> <connections/> </ui> diff --git a/src/sakia/gui/navigation/identity/identity.ui b/src/sakia/gui/navigation/identity/identity.ui index 1c3fd32c..f9b2ea7a 100644 --- a/src/sakia/gui/navigation/identity/identity.ui +++ b/src/sakia/gui/navigation/identity/identity.ui @@ -76,7 +76,7 @@ QGroupBox::title { <string>Certify an identity</string> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/certification_icon</normaloff>:/icons/certification_icon</iconset> </property> </widget> @@ -117,7 +117,7 @@ QGroupBox::title { <string/> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/refresh_icon</normaloff>:/icons/refresh_icon</iconset> </property> </widget> @@ -155,7 +155,7 @@ QGroupBox::title { <string>Renew membership</string> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/renew_membership</normaloff>:/icons/renew_membership</iconset> </property> <property name="iconSize"> @@ -187,7 +187,7 @@ QGroupBox::title { </layout> </widget> <resources> - <include location="../../../../../res/icons/icons.qrc"/> + <include location="../../../../../res/icons/sakia.icons.qrc"/> </resources> <connections/> </ui> diff --git a/src/sakia/gui/navigation/network/network.ui b/src/sakia/gui/navigation/network/network.ui index e1d1d961..9426af7f 100644 --- a/src/sakia/gui/navigation/network/network.ui +++ b/src/sakia/gui/navigation/network/network.ui @@ -40,7 +40,7 @@ <string/> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/refresh_icon</normaloff>:/icons/refresh_icon</iconset> </property> <property name="iconSize"> @@ -86,7 +86,7 @@ </layout> </widget> <resources> - <include location="../../../../../res/icons/icons.qrc"/> + <include location="../../../../../res/icons/sakia.icons.qrc"/> </resources> <connections> <connection> diff --git a/src/sakia/gui/navigation/txhistory/txhistory.ui b/src/sakia/gui/navigation/txhistory/txhistory.ui index a903b359..85bf1bb5 100644 --- a/src/sakia/gui/navigation/txhistory/txhistory.ui +++ b/src/sakia/gui/navigation/txhistory/txhistory.ui @@ -90,7 +90,7 @@ <string>Send money</string> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/payment_icon</normaloff>:/icons/payment_icon</iconset> </property> <property name="iconSize"> @@ -207,7 +207,7 @@ </customwidget> </customwidgets> <resources> - <include location="../../../../../res/icons/icons.qrc"/> + <include location="../../../../../res/icons/sakia.icons.qrc"/> </resources> <connections/> </ui> diff --git a/src/sakia/gui/preferences.ui b/src/sakia/gui/preferences.ui index eba1b05f..03c4e3f6 100644 --- a/src/sakia/gui/preferences.ui +++ b/src/sakia/gui/preferences.ui @@ -30,7 +30,7 @@ <string>General</string> </property> <property name="icon"> - <iconset resource="../../../res/icons/icons.qrc"> + <iconset> <normaloff>:/icons/settings_app_icon</normaloff>:/icons/settings_app_icon</iconset> </property> <property name="iconSize"> @@ -50,7 +50,7 @@ <string>Display</string> </property> <property name="icon"> - <iconset resource="../../../res/icons/icons.qrc"> + <iconset> <normaloff>:/icons/settings_display_icon</normaloff>:/icons/settings_display_icon</iconset> </property> <property name="iconSize"> @@ -70,7 +70,7 @@ <string>Network</string> </property> <property name="icon"> - <iconset resource="../../../res/icons/icons.qrc"> + <iconset> <normaloff>:/icons/settings_network_icon</normaloff>:/icons/settings_network_icon</iconset> </property> <property name="iconSize"> @@ -414,7 +414,7 @@ </layout> </widget> <resources> - <include location="../../../res/icons/icons.qrc"/> + <include location="../../../res/icons/sakia.icons.qrc"/> </resources> <connections> <connection> diff --git a/src/sakia/gui/sub/search_user/__init__.py b/src/sakia/gui/sub/search_user/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/sakia/gui/sub/search_user/search_user.ui b/src/sakia/gui/sub/search_user/search_user.ui index c93e6fc1..ac532df3 100644 --- a/src/sakia/gui/sub/search_user/search_user.ui +++ b/src/sakia/gui/sub/search_user/search_user.ui @@ -36,7 +36,7 @@ <string/> </property> <property name="icon"> - <iconset resource="../../../../../res/icons/icons.qrc"> + <iconset resource="../../../../../res/icons/sakia.icons.qrc"> <normaloff>:/icons/home_icon</normaloff>:/icons/home_icon</iconset> </property> </widget> @@ -44,7 +44,7 @@ </layout> </widget> <resources> - <include location="../../../../../res/icons/icons.qrc"/> + <include location="../../../../../res/icons/sakia.icons.qrc"/> </resources> <connections/> </ui> diff --git a/src/sakia/gui/sub/user_information/user_information.ui b/src/sakia/gui/sub/user_information/user_information.ui index 8dd0958d..e0331c25 100644 --- a/src/sakia/gui/sub/user_information/user_information.ui +++ b/src/sakia/gui/sub/user_information/user_information.ui @@ -84,7 +84,7 @@ QGroupBox::title { <string/> </property> <property name="pixmap"> - <pixmap resource="../../../../../res/icons/icons.qrc">:/icons/member_icon</pixmap> + <pixmap resource="../../../../../res/icons/sakia.icons.qrc">:/icons/member_icon</pixmap> </property> <property name="scaledContents"> <bool>true</bool> @@ -114,9 +114,9 @@ QGroupBox::title { </layout> </widget> <resources> - <include location="../../../../../res/icons/icons.qrc"/> - <include location="../../../../../res/icons/icons.qrc"/> - <include location="../../../../../res/icons/icons.qrc"/> + <include location="../../../../../res/icons/sakia.icons.qrc"/> + <include location="../../../../../res/icons/sakia.icons.qrc"/> + <include location="../../../../../res/icons/sakia.icons.qrc"/> </resources> <connections/> </ui> diff --git a/src/sakia/gui/widgets/toast.ui b/src/sakia/gui/widgets/toast.ui index 61c442e0..c42c994a 100644 --- a/src/sakia/gui/widgets/toast.ui +++ b/src/sakia/gui/widgets/toast.ui @@ -14,7 +14,7 @@ <string>MainWindow</string> </property> <property name="windowIcon"> - <iconset resource="../icons/icons.qrc"> + <iconset resource="../icons/sakia.icons.qrc"> <normaloff>:/icons/cutecoin_logo</normaloff>:/icons/cutecoin_logo</iconset> </property> <widget class="QWidget" name="centralwidget"> @@ -40,7 +40,7 @@ <widget class="QStatusBar" name="statusbar"/> </widget> <resources> - <include location="../icons/icons.qrc"/> + <include location="../icons/sakia.icons.qrc"/> </resources> <connections/> </ui> diff --git a/src/sakia/main.py b/src/sakia/main.py index c94962f0..bc7020d1 100755 --- a/src/sakia/main.py +++ b/src/sakia/main.py @@ -77,7 +77,8 @@ def exception_message(log_lines, exc_info): mb.exec() -if __name__ == '__main__': + +def main(): #Â activate ctrl-c interrupt signal.signal(signal.SIGINT, signal.SIG_DFL) sakia = QApplication(sys.argv) @@ -138,3 +139,6 @@ if __name__ == '__main__': cleanup_lock(lock) sys.exit() + +if __name__ == '__main__': + main() -- GitLab