diff --git a/IPython/html/fabfile.py b/IPython/html/fabfile.py
index c186f6331..ef6a6cb2f 100644
--- a/IPython/html/fabfile.py
+++ b/IPython/html/fabfile.py
@@ -3,11 +3,15 @@
from fabric.api import local,lcd
from fabric.utils import abort
import os
+from distutils.version import LooseVersion as V
+from subprocess import check_output
pjoin = os.path.join
static_dir = 'static'
components_dir = os.path.join(static_dir, 'components')
+min_less_version = '1.4.0'
+max_less_version = '1.5.0' # exclusive
def css(minify=True, verbose=False):
"""generate the css from less files"""
@@ -27,6 +31,16 @@ def _compile_less(source, target, minify=True, verbose=False):
verbose = _to_bool(verbose)
min_flag = '-x' if minify is True else ''
ver_flag = '--verbose' if verbose is True else ''
+
+ # pin less to 1.4
+ out = check_output(['lessc', '--version'])
+ out = out.decode('utf8', 'replace')
+ less_version = out.split()[1]
+ if V(less_version) < V(min_less_version):
+ raise ValueError("lessc too old: %s < %s" % (less_version, min_less_version))
+ if V(less_version) > V(max_less_version):
+ raise ValueError("lessc too new: %s > %s" % (less_version, max_less_version))
+
with lcd(static_dir):
local('lessc {min_flag} {ver_flag} {source} {target}'.format(**locals()))