diff --git a/build/build.py b/build/build.py index d538c7f..c66d64a 100644 --- a/build/build.py +++ b/build/build.py @@ -92,7 +92,7 @@ def build( for file in files: if last_build_info: last_build_info_for_this_file =\ - list(filter(lambda i: i['source file'] == file.name, last_build_info['tex_sources'])) + list(filter(lambda i: i['source file'] == str(file.relative_to(src_dir)), last_build_info['tex_sources'])) else: last_build_info_for_this_file = [] sources_to_build.append( diff --git a/build/utils/__init__.py b/build/utils/__init__.py index a29fb42..52a55f1 100644 --- a/build/utils/__init__.py +++ b/build/utils/__init__.py @@ -1,9 +1,11 @@ from .build_information import BuildInfo from .pytex_file import TexFileToFormat from .pytex_msg import pytex_msg +from .checksum import md5 __all__ = [ 'BuildInfo', 'TexFileToFormat', - 'pytex_msg' + 'pytex_msg', + 'md5' ] diff --git a/build/utils/checksum.py b/build/utils/checksum.py new file mode 100644 index 0000000..91bf258 --- /dev/null +++ b/build/utils/checksum.py @@ -0,0 +1,12 @@ +import hashlib +from pathlib import Path + +# https://stackoverflow.com/a/3431838/16371376 + + +def md5(file: Path): + hash_md5 = hashlib.md5() + with open(file, "rb") as f: + for block in iter(lambda: f.read(4096), b""): + hash_md5.update(block) + return hash_md5.hexdigest() diff --git a/build/utils/pytex_file.py b/build/utils/pytex_file.py index 07d3261..a82d132 100644 --- a/build/utils/pytex_file.py +++ b/build/utils/pytex_file.py @@ -5,6 +5,7 @@ from PyTeX.build.git_hook import is_recent, get_latest_commit from PyTeX import PackageFormatter, ClassFormatter, DictionaryFormatter from PyTeX.errors import * from .pytex_msg import pytex_msg +from .checksum import md5 from .build_information import BuildInfo @@ -133,12 +134,13 @@ class TexFileToFormat: for written_file in written_files: info = { 'name': str(self.src_path.parent.relative_to(self.src_root)) + "/" + written_file, - 'source file': self.src_path.name, + 'source file': str(self.src_path.relative_to(self.src_root)), 'build time': self.current_build_info.build_time, 'source version': self.current_build_info.packages_version, 'source commit hash': self.current_build_info.packages_hash, 'pytex version': self.current_build_info.pytex_version, 'pytex commit hash': self.current_build_info.pytex_hash, + 'md5sum': md5(self.build_root / self.src_path.parent.relative_to(self.src_root) / written_file), 'dirty': self.dirty } build_infos.append(info)