From b08e148089a4dbc1f75e69e13f111bbb668c6bc6 Mon Sep 17 00:00:00 2001 From: Inso <insomniak.fr@gmail.com> Date: Sun, 20 Dec 2015 10:24:19 +0100 Subject: [PATCH] Squashed commit of the following: commit 7f0b8dc652b9a9bc998c119ae3710e7c2a962230 Author: Inso <insomniak.fr@gmail.com> Date: Sun Dec 20 00:08:14 2015 +0100 Cp python to build dir commit d1f4decfcc8b8de3e82c9ced6b1658e608f37a44 Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 22:18:51 2015 +0100 Test deploy commit 6330616dd3e942e220def01957db25677524478a Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 22:04:40 2015 +0100 Remove jsonschema commit 93f898c96d52994ac7955561e640da756843a8a7 Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 21:56:46 2015 +0100 Include jsonschema in main commit dc1dd3fb59dfb395022a484741987278a9823918 Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 21:46:22 2015 +0100 Include libsodium commit a252de97a28905c095605a731a2f30a809bb6ece Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 20:40:15 2015 +0100 With notify2 commit 113e02bdb6c56378732ec85f8f7c4fe6a54c401e Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 17:27:58 2015 +0100 No need of qt-menu-nib commit 3e40dc4f5a979a9cb04dd98b7d98582edd14bd51 Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 17:21:40 2015 +0100 Try with python 3.4.3 commit 53d0cdaf8f4f66ac0abf035150238e3badca4a7d Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 17:12:29 2015 +0100 Fix cx_Freeze commit 0949c99d7e40e36343a854c1c5d06a98f80c1965 Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 17:06:04 2015 +0100 Set qt-menu.nib and fix tests commit 2812a721e423d17cac42367c6da567fd7bcf7cea Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 16:51:58 2015 +0100 Try with cx_Freeze sources commit 4ca6ff53efcd111ee2a63a6c04a9ed489f329b7f Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 15:45:53 2015 +0100 Remove one line conditionals commit e37f0b672f532c770923ec09ad6ebc71a52506a8 Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 15:28:21 2015 +0100 Enhance test script commit eb8f3b2770d154f504f0213705daa780ed84ee6f Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 14:34:20 2015 +0100 Fix multi os commit 91541c96ceb7026f05a87c181cd92bd141ef0411 Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 11:28:51 2015 +0100 Build PyQt5 on trusty commit a08049549a32528078f14b3be5bef854249dd261 Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 11:20:58 2015 +0100 -y switch commit c79294ba715e7e090cbf78db281d4aaa879f8d7a Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 11:06:55 2015 +0100 Remove libxcbsync0 commit 597ba7fc54ed59cf1d64613dc31625620a184e0e Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 11:03:27 2015 +0100 Fix .travis.yml commit 767bd54f8da70b5bbd651cbc0d4577822b16182d Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 11:01:38 2015 +0100 Update apt commit 1ab5d993b7c395b7d19247683c7a55b6eff634e5 Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 10:56:01 2015 +0100 Build on dist travis commit 698ffa9050266ebd992972420cdea7f13b561909 Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 10:29:57 2015 +0100 Deploy multi os commit b147d16e7bde87a5e231e5073f707c8fd271838f Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 10:13:49 2015 +0100 Deploy only dmg file commit 5a1153d3b395e864a257585f2b9633b939730f28 Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 09:01:08 2015 +0100 Add missing file commit 4115e1e10d25c64bb2dd51cfbdc48e02b52038b9 Author: Inso <insomniak.fr@gmail.com> Date: Sat Dec 19 00:14:50 2015 +0100 Fix build scripts commit 5f9e8b359010d07cef56ff03c81e3700665ad04a Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 23:47:22 2015 +0100 Add missing file commit eed7ed4d069bcf453d35393a586a458c9f9164e4 Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 23:46:06 2015 +0100 Build everything commit d2cf9e66a3c51f04d7146db2ef3fe4957085232e Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 23:20:06 2015 +0100 Enable after success to enable cache commit ea52c7f87d24aa18f1ec936af27f59d5a97a2078 Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 22:56:25 2015 +0100 Build pyenv commit 6185a6615a2a5ec6005c56064ea29a576ba084b2 Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 22:34:17 2015 +0100 Build pyenv commit dc59202d2f545e3f1c45c44d40b8b526c74d1474 Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 20:13:16 2015 +0100 Remove alias commit 2db19fef511a1189afb34460aca771428b3cd625 Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 20:06:17 2015 +0100 Finally ? commit 2b0dc8fbeed02072f60e8cb9cdb0e1befc90719e Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 19:32:12 2015 +0100 Fix script syntax commit 022cd0dbb9d1ff1a840c87ecb51a9b81dc390d6a Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 19:30:16 2015 +0100 Cache dependencies commit 5d8f0919ceba865fbb416d57b2a503b01384ef33 Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 19:21:07 2015 +0100 Fix pyenv version commit 679fbf15661ee0f3ee294716ab90b96d3f138326 Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 19:16:58 2015 +0100 Accept licence commit 9caef707c86b96e93dc0dbb29b5139ea5a7e9204 Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 19:10:52 2015 +0100 Builds commit 90d1de9a67adc381007658727e6cb68ecff39f8b Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 19:08:22 2015 +0100 Do not precise python version commit 876f11c1256f098f93293cc82a1bb74d0905b56a Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 19:00:39 2015 +0100 Build on osx commit 83dc14463183562a36c50059763a938d18c997a3 Author: Inso <insomniak.fr@gmail.com> Date: Fri Dec 18 18:57:37 2015 +0100 Try to build on travis for osx --- .travis.yml | 96 +++++++++------------------------ ci/travis/after_success.sh | 10 ++++ ci/travis/before_deploy.sh | 9 ++++ ci/travis/before_install.sh | 69 ++++++++++++++++++++++++ ci/travis/build.sh | 28 ++++++++++ ci/travis/test.sh | 18 +++++++ setup.py | 24 +++++---- src/sakia/gui/import_account.py | 1 + src/sakia/main.py | 3 ++ 9 files changed, 178 insertions(+), 80 deletions(-) create mode 100755 ci/travis/after_success.sh create mode 100755 ci/travis/before_deploy.sh create mode 100755 ci/travis/before_install.sh create mode 100755 ci/travis/build.sh create mode 100755 ci/travis/test.sh diff --git a/.travis.yml b/.travis.yml index b4202e6d..6b3a3265 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,75 +1,31 @@ -sudo: false -language: python -python: - # We don't actually use the Travis Python, but this keeps it organized. - - "3.4" -addons: - apt: - packages: - - libxcb1 - - libxcb1-dev - - libx11-xcb1 - - libx11-xcb-dev - - libxcb-keysyms1 - - libxcb-keysyms1-dev - - libxcb-image0 - - libxcb-image0-dev - - libxcb-shm0 - - libxcb-shm0-dev - - libxcb-icccm4 - - libxcb-icccm4-dev - - libxcb-sync0 - - libxcb-sync0-dev - - libxcb-xfixes0-dev - - libxrender-dev - - libxcb-shape0-dev - - libxcb-randr0-dev - - libxcb-render-util0 - - libxcb-render-util0-dev - - libxcb-glx0-dev - - libgl1-mesa-dri - - libegl1-mesa - - libpcre3-dev +os: linux +matrix: + include: + - os: osx + - dist: trusty + sudo: required + exclude: + - os: linux -before_install: - # Update - - pwd - # Install and configure conda - - wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh - - bash miniconda.sh -b -p $HOME/miniconda - - export PATH="$HOME/miniconda/bin:$PATH" - - hash -r - - conda config --set always_yes yes --set changeps1 no - - conda config --add channels inso/channel/sakia - - conda config --add channels pyzo - - conda update -q conda - # Useful for debugging any issues with conda - - conda info -a +env: +- PYENV_PYTHON_VERSION=3.4.3 +before_install: +- ci/travis/before_install.sh install: - - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION cx_freeze pyqt5 libpng=1.5.13 libsodium=1.0.3 - - source activate test-environment - - ldd $HOME/miniconda/envs/test-environment/lib/qt5/plugins/platforms/*.so - - pip install coveralls - - pip install -r requirements.txt - - python gen_resources.py - - python gen_translations.py - - python setup.py build - -before_script: - # screen must be 24bpp otherwise pyqt5 crashes - # see: https://github.com/pytest-dev/pytest-qt/issues/35 - - export XVFBARGS="-screen 0 1280x1024x24" - - export DISPLAY=:99.0 - - sh -e /etc/init.d/xvfb start - - sleep 3 - +- ci/travis/build.sh script: - - export QT_QPA_PLATFORM_PLUGIN_PATH=$HOME/miniconda/envs/test-environment/lib/qt5/plugins/platforms; - - export QT_PLUGIN_PATH=$HOME/miniconda/envs/test-environment/lib/qt5/plugins - - export QT_XKB_CONFIG_ROOT=/usr/share/X11/xkb - - coverage run --source=sakia.core,sakia.gui,sakia.models run_tests.py - +- ci/travis/test.sh after_success: - - coverage -rm - - coveralls +- ci/travis/after_success.sh +before_deploy: +- ci/travis/before_deploy.sh + +deploy: + provider: releases + api_key: + secure: MUdvTDBeCxO9d/EpzIhr+QYra/KxgYkXX6177SjqWCWDqw9xB3fwSUj8I9ht9DGtwVdadtveumtvLw3pbtVIR0GtIPC9pyvtNz4j6T4Ei3TSE6+StXdMK4NnInvPeTRlobGL+9sZt9MwheJwZ8YGewhBcR0F5UzVfxWeSSrxmyk= + file: sakia-${TRAVIS_OS_NAME}.zip + skip_cleanup: true + on: + tags: true diff --git a/ci/travis/after_success.sh b/ci/travis/after_success.sh new file mode 100755 index 00000000..0211ad35 --- /dev/null +++ b/ci/travis/after_success.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +eval "$(pyenv init -)" +eval "$(pyenv virtualenv-init -)" + +cd $HOME/build/ucoin-io/sakia +pyenv activate sakia-env + +coverage -rm +coveralls \ No newline at end of file diff --git a/ci/travis/before_deploy.sh b/ci/travis/before_deploy.sh new file mode 100755 index 00000000..f80fb656 --- /dev/null +++ b/ci/travis/before_deploy.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +if [ $TRAVIS_OS_NAME == "osx" ] +then + zip -r sakia-${TRAVIS_OS_NAME}.zip build/*.dmg +elif [ $TRAVIS_OS_NAME == "linux" ] +then + zip -r sakia-${TRAVIS_OS_NAME}.zip build/exe* +fi diff --git a/ci/travis/before_install.sh b/ci/travis/before_install.sh new file mode 100755 index 00000000..679c5c35 --- /dev/null +++ b/ci/travis/before_install.sh @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +if [ $TRAVIS_OS_NAME == "osx" ] +then + brew update + brew install libsodium + ## Ensure your brew QT version is up to date. (brew install qt -> qt 4.8) + brew install qt5 + brew link --force qt5 + brew install pyenv-virtualenv +elif [ $TRAVIS_OS_NAME == "linux" ] +then + sudo apt-get update + sudo apt-get install -qq -y libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 \ + libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev \ + libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0 \ + libxcb-render-util0-dev libxcb-glx0-dev libgl1-mesa-dri libegl1-mesa libpcre3-dev \ + curl qt5-qmake qtbase5-dev qttools5-dev-tools libqt5svg5-dev libdbus-1-dev libdbus-glib-1-dev autoconf automake libtool + wget http://archive.ubuntu.com/ubuntu/pool/universe/libs/libsodium/libsodium13_1.0.1-1_amd64.deb + sudo dpkg -i libsodium13_1.0.1-1_amd64.deb + curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash +fi + +eval "$(pyenv init -)" +eval "$(pyenv virtualenv-init -)" + +pyenv activate sakia-env +if [ $? -ne 0 ] +then + echo "Sakia env cache cleared, rebuilding it..." + if [ $TRAVIS_OS_NAME == "osx" ] + then + env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install $PYENV_PYTHON_VERSION + elif [ $TRAVIS_OS_NAME == "linux" ] + then + PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install $PYENV_PYTHON_VERSION + fi + + pyenv shell $PYENV_PYTHON_VERSION + pyenv virtualenv sakia-env + + cd $HOME + + wget http://sourceforge.net/projects/pyqt/files/sip/sip-4.17/sip-4.17.tar.gz + tar xzf sip-4.17.tar.gz + cd sip-4.17/ + pyenv activate sakia-env + python configure.py + make && make install + pyenv rehash + + cd $HOME + + wget http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.5.1/PyQt-gpl-5.5.1.tar.gz + tar xzf PyQt-gpl-5.5.1.tar.gz + cd PyQt-gpl-5.5.1/ + pyenv activate sakia-env + if [ $TRAVIS_OS_NAME == "osx" ] + then + python configure.py --confirm-license + elif [ $TRAVIS_OS_NAME == "linux" ] + then + python configure.py --qmake "/usr/lib/x86_64-linux-gnu/qt5/bin/qmake" --confirm-license + fi + + make -j 2 && make install + pyenv rehash + +fi \ No newline at end of file diff --git a/ci/travis/build.sh b/ci/travis/build.sh new file mode 100755 index 00000000..b6a5457f --- /dev/null +++ b/ci/travis/build.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +eval "$(pyenv init -)" +eval "$(pyenv virtualenv-init -)" + +cd $HOME/build/ucoin-io/sakia +pyenv activate sakia-env +pip install coveralls +pip install cx_Freeze +pip install -r requirements.txt +if [ $TRAVIS_OS_NAME == "linux" ] +then + pip install -U git+https://github.com/posborne/dbus-python.git + pip install notify2 +fi + +python gen_resources.py +python gen_translations.py + +if [ $TRAVIS_OS_NAME == "osx" ] +then + python setup.py bdist_dmg +elif [ $TRAVIS_OS_NAME == "linux" ] +then + python setup.py build + cp ~/.pyenv/versions/$PYENV_PYTHON_VERSION/lib/libpython3.*m.so.1.0 build/exe.linux-x86_64-3.4/ +fi + diff --git a/ci/travis/test.sh b/ci/travis/test.sh new file mode 100755 index 00000000..0c74cc97 --- /dev/null +++ b/ci/travis/test.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +eval "$(pyenv init -)" +eval "$(pyenv virtualenv-init -)" + +cd $HOME/build/ucoin-io/sakia +pyenv activate sakia-env + +if [ $TRAVIS_OS_NAME == "linux" ] +then + export XVFBARGS="-screen 0 1280x1024x24" + export DISPLAY=:99.0 + sh -e /etc/init.d/xvfb start + sleep 3 +fi + +coverage run --source=sakia.core,sakia.gui,sakia.models run_tests.py + diff --git a/setup.py b/setup.py index fb1a7ce1..fce9ef0e 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ includes = ["sip", "re", "json", "logging", "ucoinpy", "pylibscrypt", "aiohttp", "asyncio", "quamash", "jsonschema"] exclude = ['.git'] -packages = ["libnacl", "encodings", "jsonschema"] +packages = ["libnacl", "encodings"] includefiles = [] zipincludes = [] @@ -53,21 +53,24 @@ if sys.platform == "win32": includefiles.append((os.path.join(path, "Scripts", "plugins", "iconengines", f), os.path.join("iconengines", f) )) includefiles.append(libEGL_path) includefiles.append(libsodium_path) -elif sys.platform == "darwin": - pass else: - libsodium_path = "" - print(QtCore.QCoreApplication.libraryPaths()) schemas = os.path.join(site.getsitepackages()[0], "jsonschema", "schemas") onlyfiles = [ f for f in listdir(schemas) if isfile(join(schemas,f)) ] for f in onlyfiles: zipincludes.append((os.path.join(schemas, f), os.path.join("jsonschema", "schemas", f))) - # Check if we are in Conda env - if 'CONDA_ENV_PATH' in os.environ: - libsodium_path = os.path.join(os.environ['CONDA_ENV_PATH'], "lib", - "libsodium.so.13") - includefiles.append((libsodium_path, "libsodium.so.13")) +if sys.platform == "darwin": + info = subprocess.check_output(["brew", "info", "libsodium"]) + info = info.decode().splitlines(keepends=False) + if len(info) > 1: + library_path = info[3].split(" ")[0] + libsodium_path = os.path.join(library_path, "lib", + "libsodium.dylib") + includefiles.append(libsodium_path) + print(libsodium_path) + else: + print("Erreur : libsodium not found. Please install it with brew install libsodium.") + print("Includes : ") @@ -80,6 +83,7 @@ print("Zip files : ") print(zipincludes) print("Packages : ") print(packages) +print("Sys.path : ") print(sys.path) options = {"path": sys.path, diff --git a/src/sakia/gui/import_account.py b/src/sakia/gui/import_account.py index 0a453fc0..a7ee0dbb 100644 --- a/src/sakia/gui/import_account.py +++ b/src/sakia/gui/import_account.py @@ -24,6 +24,7 @@ class ImportAccountDialog(QDialog, Ui_ImportAccountDialog): self.setupUi(self) self.app = app self.main_window = parent + self.selected_file = "" self.button_box.button(QDialogButtonBox.Ok).setEnabled(False) def accept(self): diff --git a/src/sakia/main.py b/src/sakia/main.py index 9ae7dd60..65844f36 100755 --- a/src/sakia/main.py +++ b/src/sakia/main.py @@ -10,6 +10,9 @@ import logging import os import traceback +# To debug missing spec +import jsonschema + # To force cx_freeze import import PyQt5.QtSvg -- GitLab