[libcxx-commits] [PATCH] D58024: [libcxx] Preserve order, avoid duplicates when merging static archives
Petr Hosek via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Sun Feb 10 21:33:59 PST 2019
phosek created this revision.
phosek added reviewers: ldionne, EricWF.
Herald added subscribers: libcxx-commits, christof.
Herald added a reviewer: serge-sans-paille.
glob can return files in arbitrary order which breaks deterministic
builds. Rather, use `ar t` to list the files in each archive and
preserve the original order. Using `ar q` results in duplicate entries
in the archive, instead use `ar r` to avoid duplicates.
Repository:
rCXX libc++
https://reviews.llvm.org/D58024
Files:
libcxx/utils/merge_archives.py
Index: libcxx/utils/merge_archives.py
===================================================================
--- libcxx/utils/merge_archives.py
+++ libcxx/utils/merge_archives.py
@@ -78,6 +78,7 @@
sys.stderr.write('%s\n' % report)
if exitCode != 0:
exit_with_cleanups(exitCode)
+ return out
def main():
parser = ArgumentParser(
@@ -119,15 +120,15 @@
global temp_directory_root
temp_directory_root = tempfile.mkdtemp('.libcxx.merge.archives')
+ files = []
for arc in archives:
- execute_command_verbose([ar_exe, 'x', arc], cwd=temp_directory_root,
- verbose=args.verbose)
-
- files = glob.glob(os.path.join(temp_directory_root, '*.o*'))
- if not files:
- print_and_exit('Failed to glob for %s' % temp_directory_root)
- cmd = [ar_exe, 'qcs', args.output] + files
- execute_command_verbose(cmd, cwd=temp_directory_root, verbose=args.verbose)
+ execute_command_verbose([ar_exe, 'x', arc],
+ cwd=temp_directory_root, verbose=args.verbose)
+ out = execute_command_verbose([ar_exe, 't', arc])
+ files.extend(out.splitlines())
+
+ execute_command_verbose([ar_exe, 'rcsD', args.output] + files,
+ cwd=temp_directory_root, verbose=args.verbose)
if __name__ == '__main__':
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D58024.186184.patch
Type: text/x-patch
Size: 1365 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20190211/15a02d55/attachment.bin>
More information about the libcxx-commits
mailing list