From 21c4b7e40028382b0cecd5509e8a305e82a9036a Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Wed, 12 Feb 2020 02:27:09 +0530 Subject: minstall: Fix check for when something was installed If we preserve the existing file, we did not install anything. In that case, the output now looks like: ``` ninja: Entering directory `.' ninja: no work to do. Nothing to install. Preserved 1732 unchanged files, see meson-logs\install-log.txt for the full list ``` This also avoids an `isfile` lookup, which shaves off a few seconds in gst-build install. --- mesonbuild/minstall.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'mesonbuild/minstall.py') diff --git a/mesonbuild/minstall.py b/mesonbuild/minstall.py index 4bcb327..98bf5c8 100644 --- a/mesonbuild/minstall.py +++ b/mesonbuild/minstall.py @@ -373,36 +373,36 @@ class Installer: def install_data(self, d): for i in d.data: - self.did_install_something = True fullfilename = i[0] outfilename = get_destdir_path(d, i[1]) mode = i[2] outdir = os.path.dirname(outfilename) d.dirmaker.makedirs(outdir, exist_ok=True) - self.do_copyfile(fullfilename, outfilename) + if self.do_copyfile(fullfilename, outfilename): + self.did_install_something = True set_mode(outfilename, mode, d.install_umask) def install_man(self, d): for m in d.man: - self.did_install_something = True full_source_filename = m[0] outfilename = get_destdir_path(d, m[1]) outdir = os.path.dirname(outfilename) d.dirmaker.makedirs(outdir, exist_ok=True) install_mode = m[2] - self.do_copyfile(full_source_filename, outfilename) + if self.do_copyfile(full_source_filename, outfilename): + self.did_install_something = True set_mode(outfilename, install_mode, d.install_umask) def install_headers(self, d): for t in d.headers: - self.did_install_something = True fullfilename = t[0] fname = os.path.basename(fullfilename) outdir = get_destdir_path(d, t[1]) outfilename = os.path.join(outdir, fname) install_mode = t[2] d.dirmaker.makedirs(outdir, exist_ok=True) - self.do_copyfile(fullfilename, outfilename) + if self.do_copyfile(fullfilename, outfilename): + self.did_install_something = True set_mode(outfilename, install_mode, d.install_umask) def run_install_script(self, d): @@ -432,7 +432,6 @@ class Installer: def install_targets(self, d): for t in d.targets: - self.did_install_something = True if not os.path.exists(t.fname): # For example, import libraries of shared modules are optional if t.optional: @@ -440,6 +439,7 @@ class Installer: continue else: raise RuntimeError('File {!r} could not be found'.format(t.fname)) + file_copied = False # not set when a directory is copied fname = check_for_stampfile(t.fname) outdir = get_destdir_path(d, t.outdir) outname = os.path.join(outdir, os.path.basename(fname)) @@ -453,7 +453,7 @@ class Installer: if not os.path.exists(fname): raise RuntimeError('File {!r} could not be found'.format(fname)) elif os.path.isfile(fname): - self.do_copyfile(fname, outname) + file_copied = self.do_copyfile(fname, outname) set_mode(outname, install_mode, d.install_umask) if should_strip and d.strip_bin is not None: if fname.endswith('.jar'): @@ -472,7 +472,7 @@ class Installer: wasm_source = os.path.splitext(fname)[0] + '.wasm' if os.path.exists(wasm_source): wasm_output = os.path.splitext(outname)[0] + '.wasm' - self.do_copyfile(wasm_source, wasm_output) + file_copied = self.do_copyfile(wasm_source, wasm_output) elif os.path.isdir(fname): fname = os.path.join(d.build_dir, fname.rstrip('/')) outname = os.path.join(outdir, os.path.basename(fname)) @@ -494,7 +494,8 @@ class Installer: print("Symlink creation does not work on this platform. " "Skipping all symlinking.") printed_symlink_error = True - if os.path.isfile(outname): + if file_copied: + self.did_install_something = True try: depfixer.fix_rpath(outname, install_rpath, final_path, install_name_mappings, verbose=False) -- cgit v1.1