Below is a reply from Danek to an informational bug on defect.opensolaris,
moved to pkg-discuss, see https://defect.opensolaris.org/bz/show_bug.cgi?id=19008 :
-----------------------------
This should be discussed on pkg-discuss, but the gist is that it's happening
because require dependencies specify only a minimum, and the solver is free to choose a newer version if there are no constraints preventing it. Incorporate dependencies don't bring new bits onto the system, but set both a minimum and a
maximum version for the named fmri.

You can do what we've been doing in the OS, and have an incorporation that has incorporate-type dependencies on each of your packages at the desired versions:

    ...
    depend type=incorporate fmri=solarisstudio12.2/[email protected]
    depend type=incorporate fmri=solarisstudio12.2/[email protected]
    ...

and each of your packages should have an unversioned require dependency on the
incorporation, to ensure its installation:

    depend type=require fmri=solarisstudio12.2/studio-incorporation

(just to pull a name out of a hat). This means that in order to upgrade to the
-0.3 (say) versions of the components, you'll need to create a new
studio-incorporation that incorporates at this version, and users will need to
update it by name.
------------------------------------------------------------------------------

The problem is that we don't see how an incorporate dependency on a -0.0 rev prevents the solver from grabbing the latest version if it is available in the repository. Especially as the individual package has a require depends only on the incorporation
package name, so that *any* rev of the incorporation satisfies this.

An incorporate dependency is an optional dependency that otherwise works just like
a require dependency as far as the fmri branch revs go.

Example:

FCS incorporation: solarisstudio12.2/[email protected],5.11-0.0 contains:

depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate
depend fmri=solarisstudio12.2/[email protected],5.11-0.0 type=incorporate

Update incorporation: solarisstudio12.2/[email protected],5.11-0.1 contains
all of the above packages at branch revs > 0.0

Each of the constituent packages, both FCS and updates, has of course:

depend type=require fmri=solarisstudio12.2/solaris-studio-12.2

All of these packages + the FCS consolidation package + the Update consolidation package + all of the packages with branch rev > 0.0 are in the same repo under the same publisher:

1) Install solarisstudio12.2/solaris-studio-12.2 FCS consolidation package to a clean image, but not the Update (which would just uninstall FCS and install itself anyway);

2) Select the [email protected],5.11-0.0 package rev for installation;

Now, as the c++ package has its own require dependencies ( at corresponding build rev 0.0 of course) what is to stop the solver from just grabbing the available build rev > 0.0
for those dependency packages?

Installing the Update incorporation will only prevent the installation of [email protected],5.11-0.0 in the first place. But the user can still install incorrectly by simply not installing the Update incorporation. I'm not seeing the "maximum" version in operation here.

-Brad

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

Reply via email to