def link_outputs_to_outdir(run_dir, out_dir, outputs): """Links any named outputs to out_dir so they can be uploaded. Raises an error if the file already exists in that directory. """ if not outputs: return isolateserver.create_directories(out_dir, outputs) for o in outputs: try: infile = os.path.join(run_dir, o) outfile = os.path.join(out_dir, o) if fs.islink(infile): # TODO(aludwin): handle directories fs.copy2(infile, outfile) else: file_path.link_file(outfile, infile, file_path.HARDLINK_WITH_FALLBACK) except OSError as e: logging.info("Couldn't collect output file %s: %s", o, e)
def readable_copy(outfile, infile): """Makes a copy of the file that is readable by everyone.""" fs.copy2(infile, outfile) fs.chmod( outfile, fs.stat(outfile).st_mode | stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH)