From c4018319e891eb9df4d6b5467f420d99c5f622aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Fri, 15 Nov 2013 13:55:34 -0300 Subject: Hotfix logfile condition --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index e528289..ba770ce 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -163,7 +163,7 @@ main(int argc, char** argv) "import encodings.idna\n" // we need to make sure this is imported "sys.argv.append('--standalone')\n" "sys.argv.append('--debug')\n" - "if any(map(lambda x: x.startswith('--logfile') or x.startswith('-l'), sys.argv))\n" + "if not any(map(lambda x: x.startswith('--logfile') or x.startswith('-l'), sys.argv)):\n" " sys.argv.append('--logfile=bitmask.log')\n", global, global); py::exec_file("apps/launcher.py", -- cgit v1.2.3 From 5aa163f1519e96bdc16892d4073a86bd19df3bd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Fri, 22 Nov 2013 14:04:14 -0300 Subject: Fix paths --- src/main.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index ba770ce..66abb12 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -118,7 +118,8 @@ main(int argc, char** argv) fs::path full_path(fs::current_path()); updateIfNeeded(); - auto pypath = full_path.string() + ":" + full_path.string() + "/lib/"; + auto pypath = full_path.string() + "/apps/:" + full_path.string() + "/lib/"; + std::cout << pypath << std::endl; #if not defined _WIN32 && not defined _WIN64 fs::path fromCore("./lib/libQtCore.so.4"); fs::path toCore("./lib/libQtCore.NOTUSED"); @@ -155,8 +156,8 @@ main(int argc, char** argv) py::exec( "import sys\n" - "sys.path = [_pwd + '/lib',\n" - " _pwd + '/apps',\n" + "sys.path = [_pwd + '/apps',\n" + " _pwd + '/lib',\n" " _pwd + '/apps/eip',\n" " _pwd]\n" "import os\n" -- cgit v1.2.3 From 98ecb0421d8f5cc2f1420ad39c514315fd048118 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Mon, 20 Jan 2014 13:52:30 -0300 Subject: Do not try/except sections in the config, explicitly check for their existence This avoids adding useless tracebacks to the real exceptions caught by Twisted. Possible tx bug here. --- changes/bug_dont_raise_nosectionerror | 2 ++ src/launcher.py | 21 +++++++++++---------- 2 files changed, 13 insertions(+), 10 deletions(-) create mode 100644 changes/bug_dont_raise_nosectionerror diff --git a/changes/bug_dont_raise_nosectionerror b/changes/bug_dont_raise_nosectionerror new file mode 100644 index 0000000..fbc2306 --- /dev/null +++ b/changes/bug_dont_raise_nosectionerror @@ -0,0 +1,2 @@ + o Avoid the try/except idiom when accessing configs to avoid messing + with the client traceback. Fixes #5007. \ No newline at end of file diff --git a/src/launcher.py b/src/launcher.py index b62bd23..2a43e54 100644 --- a/src/launcher.py +++ b/src/launcher.py @@ -4,21 +4,22 @@ import time import threading import ConfigParser -from leap.bitmask.app import main as leap_client +from leap.bitmask.app import main as bitmask_client from leap.common.events import server from thandy.ClientCLI import update as thandy_update bundles_per_platform = { - "Windows" : "/bundleinfo/LEAPClient-win/", - "Darwin" : "", - "Linux" : "/bundleinfo/LEAPClient/", + "Windows": "/bundleinfo/LEAPClient-win/", + "Darwin": "", + "Linux": "/bundleinfo/LEAPClient/", } GENERAL_SECTION = "General" UPDATES_KEY = "Updates" + class Thandy(threading.Thread): def run(self): while True: @@ -50,16 +51,16 @@ if __name__ == "__main__": config.read("launcher.conf") launch_thandy = False - try: + + has_config = config.has_section(GENERAL_SECTION) and \ + config.has_option(GENERAL_SECTION, UPDATES_KEY) + + if has_config: launch_thandy = config.getboolean(GENERAL_SECTION, UPDATES_KEY) - except ConfigParser.NoSectionError as ns: - pass - except ConfigParser.NoOptionError as no: - pass if launch_thandy: thandy_thread = Thandy() thandy_thread.daemon = True thandy_thread.start() - leap_client() + bitmask_client() -- cgit v1.2.3 From ffc7b0eeb5d77b0fcd45ce44f4ebf3256ca4e8fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Tue, 13 May 2014 16:32:28 -0300 Subject: Properly calculate the bundle directory --- src/main.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 66abb12..78aba3a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -94,14 +94,14 @@ mergeDirectories(const fs::path &source, } void -updateIfNeeded() +updateIfNeeded(fs::path &full_path) { - fs::path updatePath(fs::current_path() / fs::path(UPDATES_DIR)); + fs::path updatePath(full_path / fs::path(UPDATES_DIR)); if (fs::exists(updatePath)) { std::cout << "Found updates, merging directories before doing anything..." << std::endl; - mergeDirectories(updatePath, fs::current_path()); + mergeDirectories(updatePath, full_path); fs::remove_all(updatePath); } else @@ -115,9 +115,9 @@ int main(int argc, char** argv) { try { - fs::path full_path(fs::current_path()); + fs::path full_path(fs::system_complete(argv[0]).parent_path()); - updateIfNeeded(); + updateIfNeeded(full_path); auto pypath = full_path.string() + "/apps/:" + full_path.string() + "/lib/"; std::cout << pypath << std::endl; #if not defined _WIN32 && not defined _WIN64 -- cgit v1.2.3 From f02d060b1d19929e4050aace09f193133244f1b8 Mon Sep 17 00:00:00 2001 From: Ruben Pollan Date: Wed, 18 Jun 2014 18:02:50 +0200 Subject: Implement updater using TUF --- src/launcher.conf | 5 +++ src/launcher.py | 113 +++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 83 insertions(+), 35 deletions(-) create mode 100644 src/launcher.conf diff --git a/src/launcher.conf b/src/launcher.conf new file mode 100644 index 0000000..7cc0043 --- /dev/null +++ b/src/launcher.conf @@ -0,0 +1,5 @@ +[General] +updater_delay = 60 + +[Mirror.localhost] +url_prefix = http://localhost:8001 diff --git a/src/launcher.py b/src/launcher.py index 2a43e54..9eb5bc1 100644 --- a/src/launcher.py +++ b/src/launcher.py @@ -1,47 +1,99 @@ import os +import shutil import platform import time import threading import ConfigParser from leap.bitmask.app import main as bitmask_client -from leap.common.events import server - -from thandy.ClientCLI import update as thandy_update +from leap.common.events import server, signal +from leap.common.events import events_pb2 as proto +import tuf.client.updater bundles_per_platform = { - "Windows": "/bundleinfo/LEAPClient-win/", - "Darwin": "", - "Linux": "/bundleinfo/LEAPClient/", + "Windows": "windows", + "Darwin": "darwin", + "Linux": "linux", } GENERAL_SECTION = "General" -UPDATES_KEY = "Updates" +DELAY_KEY = "updater_delay" + + +class TUF(threading.Thread): + def __init__(self, config): + """ + Initialize the list of mirrors, paths and other TUF dependencies from the config file + """ + if config.has_section(GENERAL_SECTION) and \ + config.has_option(GENERAL_SECTION, DELAY_KEY): + self.delay = config.getboolean(GENERAL_SECTION, DELAY_KEY) + else: + self.delay = 60 + + self._load_mirrors(config) + if not self.mirrors: + print "ERROR: No updater mirrors found (missing or not well formed launcher.conf)" + self.bundle_path = os.getcwd() + self.source_path = self.bundle_path + self.dest_path = os.path.join(self.bundle_path, 'tmp') + self.update_path = os.path.join(self.bundle_path, 'updates') + + threading.Thread.__init__(self) -class Thandy(threading.Thread): def run(self): + """ + Check for updates periodically + """ + if not self.mirrors: + return + while True: try: - os.environ["THANDY_HOME"] = os.path.join(os.getcwd(), - "config", - "thandy") - os.environ["THP_DB_ROOT"] = os.path.join(os.getcwd(), - "packages") - os.environ["THP_INSTALL_ROOT"] = os.path.join(os.getcwd(), - "updates") - args = [ - "--repo=repo/", - "--install", - bundles_per_platform[platform.system()] - ] - thandy_update(args) + tuf.conf.repository_directory = os.path.join(self.bundle_path, 'repo') + + updater = tuf.client.updater.Updater('leap-updater', self.mirrors) + updater.refresh() + + targets = updater.all_targets() + updated_targets = updater.updated_targets(targets, self.source_path) + for target in updated_targets: + updater.download_target(target, self.dest_path) + self._set_permissions(target) + if os.path.isdir(self.dest_path): + if os.path.isdir(self.update_path): + shutil.rmtree(self.update_path) + shutil.move(self.dest_path, self.update_path) + signal(proto.UPDATER_NEW_UPDATES, + content=", ".join(sorted([f['filepath'] for f in updated_targets]))) + return except Exception as e: print "ERROR:", e finally: - # TODO: Make this delay configurable - time.sleep(60) + time.sleep(self.delay) + + def _load_mirrors(self, config): + self.mirrors = {} + for section in config.sections(): + if section[:6] != 'Mirror': + continue + url_prefix = config.get(section, 'url_prefix') + metadata_path = bundles_per_platform[platform.system()] + '/metadata' + targets_path = bundles_per_platform[platform.system()] + '/targets' + self.mirrors[section[7:]] = {'url_prefix': url_prefix, + 'metadata_path': metadata_path, + 'targets_path': targets_path, + 'confined_target_dirs': ['']} + + def _set_permissions(self, target): + file_permisions = int(target["fileinfo"]["custom"]["file_permissions"], 8) + filepath = target['filepath'] + if filepath[0] == '/': + filepath = filepath[1:] + file_path = os.path.join(self.dest_path, filepath) + os.chmod(file_path, file_permisions) if __name__ == "__main__": @@ -50,17 +102,8 @@ if __name__ == "__main__": config = ConfigParser.ConfigParser() config.read("launcher.conf") - launch_thandy = False - - has_config = config.has_section(GENERAL_SECTION) and \ - config.has_option(GENERAL_SECTION, UPDATES_KEY) - - if has_config: - launch_thandy = config.getboolean(GENERAL_SECTION, UPDATES_KEY) - - if launch_thandy: - thandy_thread = Thandy() - thandy_thread.daemon = True - thandy_thread.start() + tuf_thread = TUF(config) + tuf_thread.daemon = True + tuf_thread.start() bitmask_client() -- cgit v1.2.3 From f46163c9be65cb4ab202c5c992c5cd16bed98475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Wed, 16 Jul 2014 17:01:46 -0300 Subject: Modify launcher.py to support refactor --- src/launcher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/launcher.py b/src/launcher.py index 9eb5bc1..e833fc5 100644 --- a/src/launcher.py +++ b/src/launcher.py @@ -5,7 +5,7 @@ import time import threading import ConfigParser -from leap.bitmask.app import main as bitmask_client +from leap.bitmask.app import start_app as bitmask_client from leap.common.events import server, signal from leap.common.events import events_pb2 as proto -- cgit v1.2.3 From 4d08978c2d45099cd47496a883b954f2ad0aa7bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Tue, 5 Aug 2014 13:59:31 -0300 Subject: Properly retrieve launcher delay --- src/launcher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/launcher.py b/src/launcher.py index e833fc5..a47d697 100644 --- a/src/launcher.py +++ b/src/launcher.py @@ -28,7 +28,7 @@ class TUF(threading.Thread): """ if config.has_section(GENERAL_SECTION) and \ config.has_option(GENERAL_SECTION, DELAY_KEY): - self.delay = config.getboolean(GENERAL_SECTION, DELAY_KEY) + self.delay = config.getint(GENERAL_SECTION, DELAY_KEY) else: self.delay = 60 -- cgit v1.2.3 From a1f8bd242a88c10b229794fb7f11b19c42ad2dd7 Mon Sep 17 00:00:00 2001 From: Ruben Pollan Date: Wed, 10 Sep 2014 12:00:17 -0500 Subject: Fix pep8 errors --- src/launcher.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/launcher.py b/src/launcher.py index a47d697..614101b 100644 --- a/src/launcher.py +++ b/src/launcher.py @@ -24,7 +24,8 @@ DELAY_KEY = "updater_delay" class TUF(threading.Thread): def __init__(self, config): """ - Initialize the list of mirrors, paths and other TUF dependencies from the config file + Initialize the list of mirrors, paths and other TUF dependencies from + the config file """ if config.has_section(GENERAL_SECTION) and \ config.has_option(GENERAL_SECTION, DELAY_KEY): @@ -34,7 +35,8 @@ class TUF(threading.Thread): self._load_mirrors(config) if not self.mirrors: - print "ERROR: No updater mirrors found (missing or not well formed launcher.conf)" + print("ERROR: No updater mirrors found (missing or not well " + "formed launcher.conf)") self.bundle_path = os.getcwd() self.source_path = self.bundle_path @@ -52,13 +54,16 @@ class TUF(threading.Thread): while True: try: - tuf.conf.repository_directory = os.path.join(self.bundle_path, 'repo') + tuf.conf.repository_directory = os.path.join(self.bundle_path, + 'repo') - updater = tuf.client.updater.Updater('leap-updater', self.mirrors) + updater = tuf.client.updater.Updater('leap-updater', + self.mirrors) updater.refresh() targets = updater.all_targets() - updated_targets = updater.updated_targets(targets, self.source_path) + updated_targets = updater.updated_targets(targets, + self.source_path) for target in updated_targets: updater.download_target(target, self.dest_path) self._set_permissions(target) @@ -66,8 +71,9 @@ class TUF(threading.Thread): if os.path.isdir(self.update_path): shutil.rmtree(self.update_path) shutil.move(self.dest_path, self.update_path) + filepath = sorted([f['filepath'] for f in updated_targets]) signal(proto.UPDATER_NEW_UPDATES, - content=", ".join(sorted([f['filepath'] for f in updated_targets]))) + content=", ".join(filepath)) return except Exception as e: print "ERROR:", e @@ -88,12 +94,13 @@ class TUF(threading.Thread): 'confined_target_dirs': ['']} def _set_permissions(self, target): - file_permisions = int(target["fileinfo"]["custom"]["file_permissions"], 8) + file_permissions_str = target["fileinfo"]["custom"]["file_permissions"] + file_permissions = int(file_permissions_str, 8) filepath = target['filepath'] if filepath[0] == '/': filepath = filepath[1:] file_path = os.path.join(self.dest_path, filepath) - os.chmod(file_path, file_permisions) + os.chmod(file_path, file_permissions) if __name__ == "__main__": -- cgit v1.2.3 From 6f82fe5991d616bad0e0caf9340544ed7cdc2099 Mon Sep 17 00:00:00 2001 From: Ruben Pollan Date: Wed, 10 Sep 2014 12:53:33 -0500 Subject: Add support for multiple archs in one platform --- changes/feature_6044_diferenciate_linux32_64 | 2 ++ src/launcher.py | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 changes/feature_6044_diferenciate_linux32_64 diff --git a/changes/feature_6044_diferenciate_linux32_64 b/changes/feature_6044_diferenciate_linux32_64 new file mode 100644 index 0000000..6aa8d12 --- /dev/null +++ b/changes/feature_6044_diferenciate_linux32_64 @@ -0,0 +1,2 @@ +- Add support for multiple archs in the same platform. Closes #6044 +- Stop updater if platform is not defined. Closes #6052 diff --git a/src/launcher.py b/src/launcher.py index 614101b..fbd0368 100644 --- a/src/launcher.py +++ b/src/launcher.py @@ -12,9 +12,8 @@ from leap.common.events import events_pb2 as proto import tuf.client.updater bundles_per_platform = { - "Windows": "windows", - "Darwin": "darwin", - "Linux": "linux", + "Linux-i386": "linux-i368", + "Linux-x86_64": "linux-x86_64", } GENERAL_SECTION = "General" @@ -75,6 +74,9 @@ class TUF(threading.Thread): signal(proto.UPDATER_NEW_UPDATES, content=", ".join(filepath)) return + except NotImplemented as e: + print "NotImplemented: ", e + return except Exception as e: print "ERROR:", e finally: @@ -86,8 +88,8 @@ class TUF(threading.Thread): if section[:6] != 'Mirror': continue url_prefix = config.get(section, 'url_prefix') - metadata_path = bundles_per_platform[platform.system()] + '/metadata' - targets_path = bundles_per_platform[platform.system()] + '/targets' + metadata_path = self._repo_path() + '/metadata' + targets_path = self._repo_path() + '/targets' self.mirrors[section[7:]] = {'url_prefix': url_prefix, 'metadata_path': metadata_path, 'targets_path': targets_path, @@ -102,6 +104,12 @@ class TUF(threading.Thread): file_path = os.path.join(self.dest_path, filepath) os.chmod(file_path, file_permissions) + def _repo_path(self): + system = platform.system() + "-" + platform.machine() + if system not in bundles_per_platform: + raise NotImplemented("Platform %s not supported" % (system,)) + return bundles_per_platform[system] + if __name__ == "__main__": server.ensure_server(port=8090) -- cgit v1.2.3 From 45a6fc7881365f998a4e0be4109e386489b96c98 Mon Sep 17 00:00:00 2001 From: Ruben Pollan Date: Fri, 12 Sep 2014 13:15:33 -0500 Subject: Add i686 as arch --- src/launcher.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/launcher.py b/src/launcher.py index fbd0368..5560fe3 100644 --- a/src/launcher.py +++ b/src/launcher.py @@ -13,6 +13,7 @@ import tuf.client.updater bundles_per_platform = { "Linux-i386": "linux-i368", + "Linux-i686": "linux-i368", "Linux-x86_64": "linux-x86_64", } @@ -107,7 +108,7 @@ class TUF(threading.Thread): def _repo_path(self): system = platform.system() + "-" + platform.machine() if system not in bundles_per_platform: - raise NotImplemented("Platform %s not supported" % (system,)) + raise NotImplementedError("Platform %s not supported" % (system,)) return bundles_per_platform[system] -- cgit v1.2.3 From 3b45e320964edee7cd9b114935ead200ff8e9c3a Mon Sep 17 00:00:00 2001 From: Ruben Pollan Date: Fri, 19 Sep 2014 11:51:43 -0500 Subject: Prevent incompatibility issues with c++11 Set BOOST_NO_CXX11_SCOPED_ENUMS fixes it --- src/main.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 78aba3a..d2f744a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -5,8 +5,10 @@ #include #include +#define BOOST_NO_CXX11_SCOPED_ENUMS #include #include +#undef BOOST_NO_CXX11_SCOPED_ENUMS #include #include -- cgit v1.2.3 From 4615bd0e23288c2d5943c95babcad80305ad6f4b Mon Sep 17 00:00:00 2001 From: Ruben Pollan Date: Sun, 21 Sep 2014 14:19:03 -0500 Subject: Make symlinks instead of moving libraries around The updater has problems with moving files, as it things that the dissapear file is missing and needs to be updated. Instead we keep libQt* libs as lib/libQt*.non-ubuntu and make symlinks to them in case of needed by the platform. --- src/main.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index d2f744a..eb709e9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #define BOOST_NO_CXX11_SCOPED_ENUMS @@ -123,23 +124,25 @@ main(int argc, char** argv) auto pypath = full_path.string() + "/apps/:" + full_path.string() + "/lib/"; std::cout << pypath << std::endl; #if not defined _WIN32 && not defined _WIN64 - fs::path fromCore("./lib/libQtCore.so.4"); - fs::path toCore("./lib/libQtCore.NOTUSED"); - fs::path fromGui("./lib/libQtGui.so.4"); - fs::path toGui("./lib/libQtGui.NOTUSED"); + chdir("lib"); + fs::path fromCore("libQtCore.non-ubuntu"); + fs::path toCore("libQtCore.so.4"); + fs::path fromGui("libQtGui.non-ubuntu"); + fs::path toGui("libQtGui.so.4"); try { auto desk = std::string(getenv("DESKTOP_SESSION")); if(boost::starts_with(desk, "ubuntu")) { - fs::rename(fromCore, toCore); - fs::rename(fromGui, toGui); + fs::remove(toCore); + fs::remove(toGui); } else { - fs::rename(toCore, fromCore); - fs::rename(toGui, fromGui); + fs::create_symlink(fromCore, toCore); + fs::create_symlink(fromGui, toGui); } } catch(...) { } + chdir(".."); setenv("PYTHONPATH", pypath.c_str(), 1); #endif -- cgit v1.2.3 From 4914d07fd577227f0d84e908cff489e104d7ec55 Mon Sep 17 00:00:00 2001 From: Ruben Pollan Date: Mon, 22 Sep 2014 10:05:56 -0500 Subject: Add some logging on updates --- src/launcher.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/launcher.py b/src/launcher.py index 5560fe3..bbd4f42 100644 --- a/src/launcher.py +++ b/src/launcher.py @@ -64,6 +64,8 @@ class TUF(threading.Thread): targets = updater.all_targets() updated_targets = updater.updated_targets(targets, self.source_path) + if updated_targets: + print "There is updates needed. Start downloading updates." for target in updated_targets: updater.download_target(target, self.dest_path) self._set_permissions(target) @@ -74,6 +76,7 @@ class TUF(threading.Thread): filepath = sorted([f['filepath'] for f in updated_targets]) signal(proto.UPDATER_NEW_UPDATES, content=", ".join(filepath)) + print "Updates ready: ", filepath return except NotImplemented as e: print "NotImplemented: ", e -- cgit v1.2.3 From a3f95c3ca516af4146f1bdf1c95fa1e2d133033f Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Tue, 23 Sep 2014 19:12:54 -0300 Subject: Revert "Prevent incompatibility issues with c++11" This reverts commit 3b45e320964edee7cd9b114935ead200ff8e9c3a. Remove define/undef since they cause an error in the launcher's compilation with the current bundler script that uses boost 1.56.0 --- src/main.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index eb709e9..e7169c2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,10 +6,8 @@ #include #include -#define BOOST_NO_CXX11_SCOPED_ENUMS #include #include -#undef BOOST_NO_CXX11_SCOPED_ENUMS #include #include -- cgit v1.2.3 From e448f40dfbb913742fa2640c8af16fe000d2b401 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Fri, 26 Sep 2014 10:32:28 -0300 Subject: Fold in changes --- CHANGELOG | 16 +++++++++++++--- changes/VERSION_COMPAT | 0 changes/bug_dont_raise_nosectionerror | 2 -- changes/feature_6044_diferenciate_linux32_64 | 2 -- 4 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 changes/VERSION_COMPAT delete mode 100644 changes/bug_dont_raise_nosectionerror delete mode 100644 changes/feature_6044_diferenciate_linux32_64 diff --git a/CHANGELOG b/CHANGELOG index 65abb84..5c1a4b1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,12 +1,22 @@ -0.3.1 Nov 1: +0.3.2 Sept 26, 2014: + o Add support for TUF. + o Avoid the try/except idiom when accessing configs to avoid messing + with the client traceback. Fixes #5007. + o Add support for multiple archs in the same platform. Closes #6044. + o Stop updater if platform is not defined. Closes #6052. + o Gather libQt* from the ones with extension .non-ubuntu if not in + an Ubuntu platform. This fixes an issue where TUF downloads over + and over those dynamic libs in Ubuntus. + +0.3.1 Nov 1, 2013: o Support user provided logfile option and default to bitmask.log otherwise. Fixes #4153. -0.3.0 Aug 23: +0.3.0 Aug 23, 2013: o Use bitmask.log instead of leap_client.log. Closes #3424. o Update launcher icon, jumping guy -> rainbow mask. o Use system's Qt libs if Ubuntu is detected as the host OS. o Update launcher.py to use the new namespace leap.bitmask. -0.2.0 Jul 12: +0.2.0 Jul 12, 2013: o First release of the leap client launcher diff --git a/changes/VERSION_COMPAT b/changes/VERSION_COMPAT new file mode 100644 index 0000000..e69de29 diff --git a/changes/bug_dont_raise_nosectionerror b/changes/bug_dont_raise_nosectionerror deleted file mode 100644 index fbc2306..0000000 --- a/changes/bug_dont_raise_nosectionerror +++ /dev/null @@ -1,2 +0,0 @@ - o Avoid the try/except idiom when accessing configs to avoid messing - with the client traceback. Fixes #5007. \ No newline at end of file diff --git a/changes/feature_6044_diferenciate_linux32_64 b/changes/feature_6044_diferenciate_linux32_64 deleted file mode 100644 index 6aa8d12..0000000 --- a/changes/feature_6044_diferenciate_linux32_64 +++ /dev/null @@ -1,2 +0,0 @@ -- Add support for multiple archs in the same platform. Closes #6044 -- Stop updater if platform is not defined. Closes #6052 -- cgit v1.2.3