From a55a42444d0578125425c3fe64d5f8172c508f44 Mon Sep 17 00:00:00 2001 From: aneejit1 <100675750+aneejit1@users.noreply.github.com> Date: Thu, 24 Mar 2022 20:16:41 +0000 Subject: [PATCH] Meson build writes to the source directory (issue #3507 ) (#3508) Don't write to source directory if files did not change Remove writes to the source directory which cause a meson build failure if the source directory is read-only. https://github.com/harfbuzz/harfbuzz/pull/3508 --- src/gen-harfbuzzcc.py | 8 ++++++-- src/gen-hb-version.py | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/gen-harfbuzzcc.py b/src/gen-harfbuzzcc.py index b25bcc7ab..6801281a6 100755 --- a/src/gen-harfbuzzcc.py +++ b/src/gen-harfbuzzcc.py @@ -14,5 +14,9 @@ sources = sys.argv[3:] with open (OUTPUT, "wb") as f: f.write ("".join ('#include "{}"\n'.format (os.path.basename (x)) for x in sources if x.endswith (".cc")).encode ()) -# copy it also to src/ -shutil.copyfile (OUTPUT, os.path.join (CURRENT_SOURCE_DIR, os.path.basename (OUTPUT))) +# copy it also to the source tree, but only if it has changed +baseline_filename = os.path.join (CURRENT_SOURCE_DIR, os.path.basename (OUTPUT)) +with open(baseline_filename, "rb") as baseline: + with open(OUTPUT, "rb") as generated: + if baseline.read() != generated.read(): + shutil.copyfile (OUTPUT, baseline_filename) diff --git a/src/gen-hb-version.py b/src/gen-hb-version.py index 4fac0a0e5..06018edfc 100755 --- a/src/gen-hb-version.py +++ b/src/gen-hb-version.py @@ -32,5 +32,9 @@ with open (INPUT, "r", encoding='utf-8') as template: .replace ("@HB_VERSION@", version) .encode ()) -# copy it also to src/ -shutil.copyfile (OUTPUT, os.path.join (CURRENT_SOURCE_DIR, os.path.basename (OUTPUT))) +# copy it also to the source tree, but only if it has changed +baseline_filename = os.path.join (CURRENT_SOURCE_DIR, os.path.basename (OUTPUT)) +with open(baseline_filename, "rb") as baseline: + with open(OUTPUT, "rb") as generated: + if baseline.read() != generated.read(): + shutil.copyfile (OUTPUT, baseline_filename)