Craig Mohrman wrote:

> http://jurassic.us.oracle.com/net/mogo/builds3/cmohrman/userland_php-ips-review/webrev/

This note is just about the dependency graph.

This is your current dependency graph:

    apache-php5
          |
          | R,F
          v          O,V
    apache-php52   +----- apache-php53 --+
          |       /             |        |
          | V  /-+              |        |
          v   v      O,V        v        |
        php-52 <------------- php-53     | O,V
       |      |         O,V    |  |      |
       |      | O,V  +---------+  |      |
       v      v      v            |      |
 php-common  apache-php5 <---------------+
      ^                           |
      +---------------------------+


O = optional, V = variable (fmri attribute of the dependency uses a macro
to obtain the "current" version of the target), F = fixed (fmri attribute
of the dependency uses a fixed, unchanging version), R = rename.  A
dependency is a require dependency unless it's marked optional, and an
unlabeled arrow represents a unversioned dependency.  Note that apache-php5
is in the graph twice, to simplify it a bit.

This graph made my brain hurt.  Each dependency should solve a specific
problem, and many of these don't seem to be necessary.

This is my suggestion:

      apache-php5
      |         ^
      | R       | O,F
      v         |
      apache-php52               apache-php53
           |                          |
           | V                        | V
           v                          v
         php-52                    php-53
        ^      |  V             V     |
        |      +------+      +--------+
        | O,F         v      v
        +----------- php-common


apache-php5 is renamed to apache-php52, and so there's a require dependency
on a fixed version, which is the first version at which the new name is
available.  This could also simply be unversioned.

In order for the populated versions of both apache-php5 and apache-php52 to
not be installed simultaneously, the receiver of the content (apache-php52)
needs to have an optional dependency on the originator (apache-php5), at a
version fixed at the first version where apache-php5 was contentless.

apache-php52 clearly needs a require dependency on php-52.  This could be
at a fixed or variable version, or simply unversioned.

php-52 needs to have a require dependency on php-common, since the latter
has content the former needs.  This could be fixed or variable or
unversioned.

Because php-common is taking files from php-52, the former needs an
optional dependency on the latter, fixed at the first version where the
latter gives up the files.  (This is very much like the transfer of files
in the rename from apache-php5 and apache-php52.)

The PHP 5.3 side of the house is much simpler because it doesn't share any
filenames with any other packages, so installing either php-53 or
apache-php53 doesn't need to bring apache-php5 or php-52 up to any specific
version.

Does that work for the various scenarios you've been playing with?

Danek
_______________________________________________
pkg-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/pkg-discuss

Reply via email to