support/scripts/cve.py: use fast ijson backend if available on old ijson versions
authorPeter Korsgaard <peter@korsgaard.com>
Fri, 9 Apr 2021 11:01:12 +0000 (13:01 +0200)
committerYann E. MORIN <yann.morin.1998@free.fr>
Sat, 17 Apr 2021 07:14:40 +0000 (09:14 +0200)
commitf31227e628a560887b93fea838f766d76388f256
treee30c27a77d631fe1f13a4f15207a23959d7b11a5
parent5d4dc98c58bb80c121a3d6c7ff3f89a00f192213
support/scripts/cve.py: use fast ijson backend if available on old ijson versions

ijson < 2.5 (as available in Debian 10) use the slow python backend by
default instead of the most efficient one available like modern ijson
versions, significantly slowing down cve checking. E.G.:

time ./support/scripts/pkg-stats --nvd-path ~/.nvd -p avahi --html foobar.html

Goes from
174,44s user 2,11s system 99% cpu 2:58,04 total

To
93,53s user 2,00s system 98% cpu 1:36,65 total

E.G. almost 2x as fast.

As a workaround, detect when the python backend is used and try to use a
more efficient one instead.  Use the yajl2_cffi backend as recommended by
upstream, as it is most likely to work, and print a warning (and continue)
if we fail to load it.

The detection is slightly complicated by the fact that ijson.backends used
to be a reference to a backend module, but is nowadays a string (without the
ijson.backends prefix).

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
support/scripts/cve.py