On Thu, Mar 3, 2011 at 12:56 PM, David E. Wheeler <da...@kineticode.com> wrote: > More simply, I think there are two kinds of dependencies: > > * Other extensions > * Core features > > Notwithstanding that PLs might be extensions, now or in the future, the > necessity to require other stuff from core, like libxml support or SSL, > together with your example, leads me to think that we ought to think about > having two ways of specifying dependencies: requires and core_requires. The > latter might look something like: > > core_requires = plpgsql libxml
Not a bad thought, but you might also need to require at least a certain version of libxml. RPMs have a whole grammar for dependencies of this sort, and it is both complicated and very useful. You can say things like: Requires: package Requires: package >= minversion Requires: package <= maxversion Requires: package = exactversion The usefulness of the first two should be obvious, but the third and fourth are needed as well. For example, the kernel header version must exactly match the kernel version. I don't know 100% for certain that we're going to need those cases here as well, but I wouldn't bet against it. An RPM can also provide a certain capability: Provides: WonderfulGoodStuff And some other RPM can then depend on that capability. I think it's important that we don't get too confident that we've solved this problem in its full generality. I very much doubt that that's the case. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers