On Mon, 21 Nov 2022 19:09:43 +0200 Lassi Kortela <la...@lassi.io> wrote:
>> My take on that as a user: I care about dependencies and tend to avoid >> eggs with many dependencies. If I see `(auto-dependencies)' in an egg >> file, I don't know the dependencies of that egg. I would not like that. >> Also, that would break the [reverse] dependency ranks of salmonella >> reports. > > auto-dependencies should only cover things that are possible to > compute statically by looking at the source files. So you'd have a > simple, predictable tool that expands them to manual dependencies at > will. > > The main source of trouble is that this: > > (import foo bar baz) > > specifies stuff that is then duplicated in the .egg file. When the > imports change, the .egg has to be changed too. Else the build may > break. > > This is the same problem that C/C++ programmers face in keeping > makefiles synced with #include. Many of them concluded that thy can't > maintain correct makefiles by hand, and wrote tools like makedepend. I think I understand the problem, but I'm not sure I understand the solution (I'm probably missing something). :-) * Regarding the usability problem mentioned, I still don't see how a user could easily see all the dependencies of an egg if the egg file has only `(auto-dependencies)'. * Regarding the problem related to salmonella reports, I suppose salmonella would have to rely on some file emitted by chicken-install to be able to figure out dependencies. * Regarding the import problem, another thing to keep in mind is that we don't have a 1-1 mapping between egg and module names. Module names don't have to be the same as egg names and one egg might ship zero, one or multiple modules. If you have `(import foo)' it doesn't mean that the `foo' module is shipped by an egg called `foo'. * How can `auto-dependencies' deal with egg versions? All the best. Mario -- http://parenteses.org/mario