···7575Strategies — Feasible:
76767777* [Statically analyse build recipes](#statically-analyse-build-recipes)
7878+* [Infer dependencies from symbols extracted from binaries](#infer-dependencies-from-symbols-extracted-from-binaries)
78797980Strategies — Infeasible:
8081···134135likely repository or repositories to be associated with that name.
135136136137✨ **Implementation:** I've started an implementation of this approach in the [meson](./meson) directory.
138138+139139+### Infer dependencies from symbols extracted from binaries
140140+141141+Code that has binary dependencies calls into these dependencies using specific symbols. For example, numpy might
142142+look at the compiled dynamic library `libscipy_openblas64_-8fb3d286.so` for the symbol
143143+`scipy_openblas_set_num_threads64_`.
144144+145145+How can we identify that numpy depends on `openblas64`? Searching for the `.so` dynamic library file is not reliable,
146146+not only because its filename is not predictable, but also because the calling code does not need to call into a
147147+dynamically linked `openblas64.so` file — the `openblas64` code could even be statically compiled into the same binary
148148+as the calling code. But the symbols that a library is made up of, such as `scipy_openblas_set_num_threads64_`, _would_
149149+probably collectively correctly identify the library.
150150+151151+This strategy is very universally applicable. It would, however, require building some kind of index mapping symbols to
152152+the libraries they belong to.
153153+154154+✨ **Implementation:** For a lot more detail on this strategy, see [ecosyste-ms/packages#1261][eco-1261]
137155138156## Strategies — Infeasible
139157···216234[cmake]: https://cmake.org/cmake/help/latest/manual/cmake.1.html
217235[docker-file]: https://github.com/sissbruecker/linkding/blob/master/docker/default.Dockerfile
218236[docker]: https://www.docker.com/
237237+[eco-1261]: https://github.com/ecosyste-ms/packages/issues/1261
219238[endowment]: https://endowment.dev
220239[eslint]: https://eslint.org/
221240[ffi]: https://en.wikipedia.org/wiki/Foreign_function_interface