From 46e8bf74874809846c366ca6bfc542076e17770d Mon Sep 17 00:00:00 2001 From: Holger Schurig Date: Tue, 22 Jul 2014 09:56:47 +0200 Subject: Documentation: only write changed *.rst files Documentation/gen_commands.py use to re-write all auto-generated *.rst file, changed or not. That in turn didn't work well with the internal cache of the Sphinx documentation generator. By comparing the SHA1 hash of the newly generated *.rst with the current sha1 file, the time to execute "make docs" can be reduced from 6.2s to 2.4s on my humble laptop. Signed-off-by: Sascha Hauer --- Documentation/gen_commands.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'Documentation/gen_commands.py') diff --git a/Documentation/gen_commands.py b/Documentation/gen_commands.py index d3db350bf7..eadea9e189 100755 --- a/Documentation/gen_commands.py +++ b/Documentation/gen_commands.py @@ -4,6 +4,7 @@ import errno import os import re import sys +import hashlib from collections import defaultdict from pprint import pprint @@ -169,5 +170,18 @@ for name, cmd in CMDS.items(): else: raise target = os.path.join(subdir, name+'.rst') + + # Only write the new rst if it differs from the old one. Wroto + hash_old = hashlib.sha1() + try: + f = open(target, 'rb') + hash_old.update(f.read()) + except: + pass + hash_new = hashlib.sha1() + hash_new.update(rst) + if hash_old.hexdigest() == hash_new.hexdigest(): + continue + file(target, 'w').write(rst) -- cgit v1.2.3