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