Greetings all, based on a conversation with sch I had last week, I thought I'd put together some thoughts and plans for improving pkgsend/publication for the next release. What's below is very preliminary, but is a high level view of what I think the necessary steps are to get where we want to be. Please let me know what areas I've missed in addressing or if you think a direction I've outlined isn't useful.

Step 1) validate package on client side during close
    a) check all files for "known" implicit dependencies (see below)
b) check whether the dependencies from the files/groups/users are satisfied by the transitive closure of the declared dependencies c) abort the transaction if dependencies aren't satisfied. Try to provide the user reasonable info about what files caused the problem and what packages would fix the issue.

Step 2) optional local validation on server
    a) add option to depot like "--local-consistency"
b) after a package has been closed, its dependencies are checked to see if the needed packages are present on the server. If they're not, package is placed into incomplete state. When further packages are published, incomplete packages are rechecked to see if their dependencies have been completed. c) This option is primarily for servers storing an entire distro (dev, release, for example) d) (optional) server would also check implicit dependencies like the client does above and will place a package with an undeclared implicit dependency into an incomplete state. Probably should only do this if there's a way to inform the publisher as to what's happened.

Step 3) optional validation with other repos
a) like step 2, except that it is allowed to take other repos into account when validating a package. An example would be extras (or pending, or contrib) to allow those to check the existence of their dependencies at publication time against known distro repos. b) pkgsend would be augmented to allow a user to tell the depot what other repos to validate against c) depots would have a flag which determines whether someone publishing a package to them is allowed to add additional repos to validate against d) depots could be optionally configured to use certain repos to validate against

Step ?) Allow client and server to validate against an incorporation instead of either what's installed on the client or what's present on the server. (Labeled as ? since it could come anytime after step 1 for the client at least)

Step ??) Allow dependencies to be expressed on files, groups, users, and links, instead of on packages and have either the client or the depo do the conversion at publication time. (Labeled as ?? since I'd like to do this client side as part of step 1 but I want to keep the wads of reasonable size and I think there may be some complixity with this idea and creating new mutually dependent packages which express their dependencies in this manner.) This is roughly what I think of when we've talked about publishing against an incorporation in the past.

"known" implicit dependencies:
The first step would be to catch what I'll call #! dependencies. The idea is to use the #! at the top of py and other similar files to catch a dependency on python (for example) or ksh, etc.

The goal is to make the framework pluggable so that it's simple to add other dependency catchers to the program. Obvious (if not easy) ones I can think of would be library dependencies from elf files, compression dependencies, maybe java dependencies if that's possible, directory dependencies (?), and probably lots more that I'm not thinking of at the moment. The goal won't be to have all those ready for the first putback, but to have a framework in place that makes adding them reasonably simple.



Thanks for taking a lookm
Brock
_______________________________________________
pkg-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/pkg-discuss

Reply via email to