Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
building: MERGE: fix symlink bookkeeping
Implement separate bookkeeping for SYMLINK entries in the MERGE processing. With symlinks, we must track `(dest_path, src_path)` pairs instead of just `src_path`, because the `src_path` encodes the relative link destination, and might appear multiple times in different context. For example, on macOS, each Qt .framework bundle has a symlink `Current -> A`. So if the bookkeeping is done only based on `src_path`, only one .framework bundle in first `Analysis` (where these bundles occur) retains its symlink in the `binaries`/`datas` TOC, while the rest are moved into `dependencies` TOC. This means that such executable unncessarily gains onefile copy/extraction semantics if `dependencies` are properly set to `EXE` (if it was originally a onedir executable); on the other hand, if `dependencies` are not passed on to `EXE` (mis-use of `MERGE`), the symlinks would end up missing in the otherwise unchanged executable.
- Loading branch information