Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Hooks: Conda: Use Conda's metadata to identify binary dependencies.
Anaconda breaks packages up, moving DLLs out of the package into an environment-wide shared `bin` folder. Our collect_dynamic_libs() doesn't collect them because it searches inside a package's installation. Because all DLLs from all packages go in a single shared folder (and because they're generally named something non-descript like `libgimt45b1ab87b2`), we currently have to hand- label long lists of constantly shifting dependencies (determined imperically with terrible success-rates). See issue \#5076#issuecomment-683436017 for the full magnitude of this problem. Fortunatley, Conda keeps a record of which files belong to which package in a `conda-meta` folder. Parsing the contents gives the list of DLLs we need. Currently, this is exposed as a hook utility and not used by default. Partly because the metadata is referenced by distribution name rather than package name e.g. pillow rather than PIL. If we were to make this automatic then we'd need to provide a mapping from one to the other. This also drags in a lot of junk and building and testing files. But these should be addressed by the conda distribution authors as they bloat the unfrozen packages too. Certainly, we don't want to be guessing file filters ourselves. In my experience, Conda users don't seem too concerned about filesize so I don't think we should worry about it either.
- Loading branch information