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