Fix version comparisons in plugin loader, warn about incompatible plugins

This commit is contained in:
Linus Heckemann 2016-08-07 11:53:49 +01:00
parent eef97d989f
commit 967432c096

View file

@ -32,6 +32,7 @@ import fnmatch
import zipfile import zipfile
from shutil import rmtree from shutil import rmtree
import configparser import configparser
import pkg_resources
from common import gajim from common import gajim
from common import nec from common import nec
@ -450,29 +451,29 @@ class PluginManager(metaclass=Singleton):
conf.read_file(conf_file) conf.read_file(conf_file)
conf_file.close() conf_file.close()
try: min_v = conf.get('info', 'min_gajim_version', fallback=None)
min_v = conf.get('info', 'min_gajim_version') max_v = conf.get('info', 'max_gajim_version', fallback=None)
except Exception:
min_v = None
try:
max_v = conf.get('info', 'max_gajim_version')
except Exception:
max_v = None
gajim_v = gajim.config.get('version') gajim_v = pkg_resources.parse_version(gajim.config.get('version'))
gajim_v = gajim_v.split('-', 1)[0]
gajim_v = gajim_v.split('.')
if min_v: if min_v and gajim_v < pkg_resources.parse_version(min_v):
min_v = min_v.split('.') log.warning(('Plugin {plugin} not loaded, newer version of'
if gajim_v < min_v: 'gajim required: {gajim_v} < {min_v}').format(
plugin=elem_name,
gajim_v=gajim_v,
min_v=min_v
))
continue continue
if max_v: if max_v and gajim_v > pkg_resources.parse_version(max_v):
max_v = max_v.split('.') log.warning(('Plugin {plugin} not loaded, plugin incompatible '
if gajim_v > max_v: 'with current version of gajim: '
'{gajim_v} > {max_v}').format(
plugin=elem_name,
gajim_v=gajim_v,
max_v=max_v
))
continue continue
module = None module = None
if module_name in sys.modules: if module_name in sys.modules: