author | Shawn Walker-Salas <shawn.walker@oracle.com> |
Fri, 26 Feb 2016 22:51:53 -0800 | |
changeset 3317 | 81fca2c09539 |
parent 3294 | 6bc144461e5e |
child 3328 | 9bfe1d86b9ce |
permissions | -rw-r--r-- |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1 |
#!/usr/bin/python |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2 |
# |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
3 |
# CDDL HEADER START |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
4 |
# |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
5 |
# The contents of this file are subject to the terms of the |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
6 |
# Common Development and Distribution License (the "License"). |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
7 |
# You may not use this file except in compliance with the License. |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
8 |
# |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
9 |
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
10 |
# or http://www.opensolaris.org/os/licensing. |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
11 |
# See the License for the specific language governing permissions |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
12 |
# and limitations under the License. |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
13 |
# |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
14 |
# When distributing Covered Code, include this CDDL HEADER in each |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
15 |
# file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
16 |
# If applicable, add the following below this CDDL HEADER, with the |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
17 |
# fields enclosed by brackets "[]" replaced with your own identifying |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
18 |
# information: Portions Copyright [yyyy] [name of copyright owner] |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
19 |
# |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
20 |
# CDDL HEADER END |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
21 |
# |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
22 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
23 |
# |
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
24 |
# Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved. |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
25 |
# |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
26 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
27 |
"""Provides the interfaces and exceptions needed to determine which packages |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
28 |
should be installed, updated, or removed to perform a requested operation.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
29 |
|
3078
cef31428bd48
18588974 solver can fail with faulty rejections for incorporates
Shawn Walker <shawn.walker@oracle.com>
parents:
3030
diff
changeset
|
30 |
import operator |
3234
3a90dc0b66c9
21188662 use six library for python 3 migration
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3213
diff
changeset
|
31 |
import six |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
32 |
import time |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
33 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
34 |
import pkg.actions |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
35 |
import pkg.catalog as catalog |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
36 |
import pkg.client.api_errors as api_errors |
2905
16b34634c06c
15817160 SUNBT7199714 Enhance IPS to monitor firmware dependencies
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2901
diff
changeset
|
37 |
|
2183
21ae45e8dfcf
17581 There should be a way of removing a package as part of upgrade
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2164
diff
changeset
|
38 |
import pkg.client.image |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
39 |
import pkg.fmri |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
40 |
import pkg.misc as misc |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
41 |
import pkg.solver |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
42 |
import pkg.version as version |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
43 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
44 |
from collections import defaultdict |
3194
185fd0ebde38
20892465 convert Python 2 code more like Python 3
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3185
diff
changeset
|
45 |
# Redefining built-in; pylint: disable=W0622 |
185fd0ebde38
20892465 convert Python 2 code more like Python 3
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3185
diff
changeset
|
46 |
from functools import reduce |
2639
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
47 |
from itertools import chain |
2207
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
48 |
from pkg.client.debugvalues import DebugValues |
2905
16b34634c06c
15817160 SUNBT7199714 Enhance IPS to monitor firmware dependencies
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2901
diff
changeset
|
49 |
from pkg.client.firmware import Firmware |
3160
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
50 |
from pkg.client.pkgdefs import PKG_OP_UNINSTALL, PKG_OP_UPDATE |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
51 |
from pkg.misc import EmptyI, EmptyDict, N_ |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
52 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
53 |
SOLVER_INIT = "Initialized" |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
54 |
SOLVER_OXY = "Not possible" |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
55 |
SOLVER_FAIL = "Failed" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
56 |
SOLVER_SUCCESS = "Succeeded" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
57 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
58 |
# |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
59 |
# Constants representing reasons why packages were trimmed from possible set. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
60 |
# The reasons listed below do *not* always map 1:1 to the error text produced; |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
61 |
# instead, they indicate the 'type' of trim applied. Values below must be |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
62 |
# unique, but can be changed at any time. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
63 |
# |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
64 |
_TRIM_DEP_MISSING = 0 # no matching pkg version found for dep |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
65 |
_TRIM_DEP_OBSOLETE = 1 # all versions allowed by dep are obsolete |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
66 |
_TRIM_DEP_TRIMMED = 2 # all versions allowed by dep already trimmed |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
67 |
_TRIM_FIRMWARE = 3 # firmware version requirement |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
68 |
_TRIM_FREEZE = 4 # pkg not allowed by freeze |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
69 |
_TRIM_INSTALLED_EXCLUDE = 5 # pkg excludes installed pkg |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
70 |
_TRIM_INSTALLED_INC = 6 # not allowed by installed pkg incorporation |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
71 |
_TRIM_INSTALLED_NEWER = 7 # newer version installed already |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
72 |
_TRIM_INSTALLED_ORIGIN = 8 # installed version in image too old |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
73 |
_TRIM_INSTALLED_ROOT_ORIGIN = 9 # installed version in root image too old |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
74 |
_TRIM_PARENT_MISSING = 10 # parent image must have this pkg too |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
75 |
_TRIM_PARENT_NEWER = 11 # parent image has newer version |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
76 |
_TRIM_PARENT_OLDER = 12 # parent image has older version |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
77 |
_TRIM_PARENT_PUB = 13 # parent image has different publisher |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
78 |
_TRIM_PROPOSED_INC = 14 # not allowed by requested pkg incorporation |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
79 |
_TRIM_PROPOSED_PUB = 15 # didn't match requested publisher |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
80 |
_TRIM_PROPOSED_VER = 16 # didn't match requested version |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
81 |
_TRIM_PUB_RANK = 17 # pkg from higher or lower ranked publisher |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
82 |
_TRIM_PUB_STICKY = 18 # pkg publisher != installed pkg publisher |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
83 |
_TRIM_REJECT = 19 # --reject |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
84 |
_TRIM_UNSUPPORTED = 20 # invalid or unsupported actions |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
85 |
_TRIM_VARIANT = 21 # unsupported variant (e.g. i386 on sparc) |
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
86 |
_TRIM_EXPLICIT_INSTALL = 22 # pkg.depend.explicit-install is true. |
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
87 |
_TRIM_SYNCED_INC = 23 # incorporation must be in sync with parent |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
88 |
_TRIM_MAX = 24 # number of trim constants |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
89 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
90 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
91 |
class DependencyException(Exception): |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
92 |
"""local exception used to pass failure to match |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
93 |
dependencies in packages out of nested evaluation""" |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
94 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
95 |
def __init__(self, reason_id, reason, fmris=EmptyI): |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
96 |
Exception.__init__(self) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
97 |
self.__fmris = fmris |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
98 |
self.__reason_id = reason_id |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
99 |
self.__reason = reason |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
100 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
101 |
@property |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
102 |
def fmris(self): |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
103 |
"""The FMRIs related to the exception.""" |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
104 |
return self.__fmris |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
105 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
106 |
@property |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
107 |
def reason_id(self): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
108 |
"""A constant indicating why the related FMRIs were rejected.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
109 |
return self.__reason_id |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
110 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
111 |
@property |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
112 |
def reason(self): |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
113 |
"""A string describing why the related FMRIs were rejected.""" |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
114 |
return self.__reason |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
115 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
116 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
117 |
class PkgSolver(object): |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
118 |
"""Provides a SAT-based solution solver to determine which packages |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
119 |
should be installed, updated, or removed to perform a requested |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
120 |
operation.""" |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
121 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
122 |
def __init__(self, cat, installed_dict, pub_ranks, variants, avoids, |
2450
154db1c01aec
18212 nuke extra_deps hack in pkg_solver.py asap
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2410
diff
changeset
|
123 |
parent_pkgs, progtrack): |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
124 |
"""Create a PkgSolver instance; catalog should contain all |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
125 |
known pkgs, installed fmris should be a dict of fmris indexed |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
126 |
by name that define pkgs current installed in the image. |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
127 |
Pub_ranks dict contains (rank, stickiness, enabled) for each |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
128 |
publisher. variants are the current image variants; avoids is |
2450
154db1c01aec
18212 nuke extra_deps hack in pkg_solver.py asap
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2410
diff
changeset
|
129 |
the set of pkg stems being avoided in the image.""" |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
130 |
|
2410
60b600d406df
18489 skip generating parent deps if we're running a build with parent deps
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2401
diff
changeset
|
131 |
# check if we're allowed to use the solver |
60b600d406df
18489 skip generating parent deps if we're running a build with parent deps
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2401
diff
changeset
|
132 |
if DebugValues["no_solver"]: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
133 |
raise RuntimeError("no_solver set, but solver invoked") |
2410
60b600d406df
18489 skip generating parent deps if we're running a build with parent deps
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2401
diff
changeset
|
134 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
135 |
self.__catalog = cat |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
136 |
self.__known_incs = set() # stems with incorporate deps |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
137 |
self.__publisher = {} # indexed by stem |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
138 |
self.__possible_dict = defaultdict(list) # indexed by stem |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
139 |
self.__pub_ranks = pub_ranks # rank indexed by pub |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
140 |
self.__depend_ts = False # flag used to indicate whether |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
141 |
# any dependencies with |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
142 |
# timestamps were seen; used in |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
143 |
# error output generation |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
144 |
self.__trim_dict = defaultdict(set) # fmris trimmed from |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
145 |
# consideration |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
146 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
147 |
self.__installed_dict = installed_dict.copy() # indexed by stem |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
148 |
self.__installed_pkgs = frozenset(self.__installed_dict) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
149 |
self.__installed_fmris = frozenset( |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
150 |
self.__installed_dict.values()) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
151 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
152 |
self.__pub_trim = {} # pkg names already |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
153 |
# trimmed by pub. |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
154 |
self.__removal_fmris = set() # installed fmris we're |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
155 |
# going to remove |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
156 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
157 |
self.__req_pkg_names = set() # package names that must be |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
158 |
# present in solution by spec. |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
159 |
for f in self.__installed_fmris: # record only sticky pubs |
2639
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
160 |
pub = f.publisher |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
161 |
if self.__pub_ranks[pub][1]: |
2639
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
162 |
self.__publisher[f.pkg_name] = pub |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
163 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
164 |
self.__id2fmri = {} # map ids -> fmris |
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
165 |
self.__fmri2id = {} # and reverse |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
166 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
167 |
self.__solver = pkg.solver.msat_solver() |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
168 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
169 |
self.__progtrack = progtrack # progress tracker |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
170 |
self.__progitem = None # progress tracker plan item |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
171 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
172 |
self.__addclause_failure = False |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
173 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
174 |
self.__variant_dict = {} # fmris -> variant cache |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
175 |
self.__variants = variants # variants supported by image |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
176 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
177 |
self.__cache = {} |
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
178 |
self.__actcache = {} |
1970
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
179 |
self.__trimdone = False # indicate we're finished |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
180 |
# trimming |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
181 |
self.__fmri_state = {} # cache of obsolete, renamed |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
182 |
# bits so we can print something |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
183 |
# reasonable |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
184 |
self.__state = SOLVER_INIT |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
185 |
self.__iterations = 0 |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
186 |
self.__clauses = 0 |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
187 |
self.__variables = 0 |
3029
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
188 |
self.__subphasename = None |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
189 |
self.__timings = [] |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
190 |
self.__start_time = 0 |
1688
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
191 |
self.__inc_list = [] |
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
192 |
self.__dependents = None |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
193 |
self.__root_fmris = None # set of fmris installed in root |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
194 |
# image; used for origin |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
195 |
# dependencies |
2228
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
196 |
self.__avoid_set = avoids.copy()# set of stems we're avoiding |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
197 |
self.__obs_set = None # set of obsolete stems |
2228
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
198 |
self.__reject_set = set() # set of stems we're rejecting |
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
199 |
self.__linked_pkgs = set() # pkgs that have parent deps |
2228
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
200 |
|
2608
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
201 |
# Internal cache of created fmri objects. Used so that the same |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
202 |
# PkgFmri doesn't need to be created more than once. This isn't |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
203 |
# a weakref dictionary because in two of the four places where |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
204 |
# PkgFmri's are created, the name is extracted and the PkgFmri |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
205 |
# object is immediately discarded. |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
206 |
self.__fmridict = {} |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
207 |
|
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
208 |
# Packages with explicit install action set to true. |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
209 |
self.__expl_install_dict = {} |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
210 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
211 |
assert isinstance(parent_pkgs, (type(None), frozenset)) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
212 |
self.__parent_pkgs = parent_pkgs |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
213 |
self.__parent_dict = dict() |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
214 |
if self.__parent_pkgs != None: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
215 |
self.__parent_dict = dict([ |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
216 |
(f.pkg_name, f) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
217 |
for f in self.__parent_pkgs |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
218 |
]) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
219 |
|
3029
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
220 |
# cache of firmware dependencies |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
221 |
self.__firmware = Firmware() |
2905
16b34634c06c
15817160 SUNBT7199714 Enhance IPS to monitor firmware dependencies
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2901
diff
changeset
|
222 |
|
3160
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
223 |
self.__triggered_ops = { |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
224 |
PKG_OP_UNINSTALL : { |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
225 |
PKG_OP_UPDATE : set(), |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
226 |
PKG_OP_UNINSTALL : set(), |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
227 |
}, |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
228 |
} |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
229 |
|
3248
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
230 |
self.__allowed_downgrades = set() # allowed downrev FMRIs |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
231 |
self.__dg_incorp_cache = {} # cache for downgradable |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
232 |
# incorp deps |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
233 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
234 |
def __str__(self): |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
235 |
s = "Solver: [" |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
236 |
if self.__state in [SOLVER_FAIL, SOLVER_SUCCESS]: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
237 |
s += (" Variables: {0:d} Clauses: {1:d} Iterations: " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
238 |
"{2:d}").format(self.__variables, self.__clauses, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
239 |
self.__iterations) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
240 |
s += " State: {0}]".format(self.__state) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
241 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
242 |
s += "\nTimings: [" |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
243 |
s += ", ".join([ |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
244 |
"{0}: {1: 6.3f}".format(*a) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
245 |
for a in self.__timings |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
246 |
]) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
247 |
s += "]" |
1688
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
248 |
|
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
249 |
if self.__inc_list: |
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
250 |
incs = "\n\t".join([str(a) for a in self.__inc_list]) |
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
251 |
else: |
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
252 |
incs = "None" |
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
253 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
254 |
s += "\nMaintained incorporations: {0}\n".format(incs) |
1688
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
255 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
256 |
return s |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
257 |
|
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
258 |
def __cleanup(self, rval): |
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
259 |
"""Discards all solver information except for that needed to |
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
260 |
show failure information or to stringify the solver object. |
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
261 |
This allows early garbage collection to take place, and should |
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
262 |
be performed after a solution is successfully returned.""" |
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
263 |
|
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
264 |
self.__catalog = None |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
265 |
self.__installed_dict = {} |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
266 |
self.__installed_pkgs = frozenset() |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
267 |
self.__installed_fmris = frozenset() |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
268 |
self.__publisher = {} |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
269 |
self.__possible_dict = {} |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
270 |
self.__pub_ranks = None |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
271 |
self.__pub_trim = {} |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
272 |
self.__removal_fmris = set() |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
273 |
self.__id2fmri = None |
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
274 |
self.__fmri2id = None |
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
275 |
self.__solver = None |
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
276 |
self.__progtrack = None |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
277 |
self.__addclause_failure = False |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
278 |
self.__variant_dict = None |
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
279 |
self.__variants = None |
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
280 |
self.__cache = None |
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
281 |
self.__actcache = None |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
282 |
self.__trimdone = None |
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
283 |
self.__fmri_state = None |
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
284 |
self.__start_time = None |
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
285 |
self.__dependents = None |
2608
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
286 |
self.__fmridict = {} |
3029
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
287 |
self.__firmware = None |
3248
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
288 |
self.__allowed_downgrades = None |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
289 |
self.__dg_incorp_cache = None |
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
290 |
self.__linked_pkgs = set() |
2207
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
291 |
|
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
292 |
if DebugValues["plan"]: |
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
293 |
# Remaining data must be kept. |
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
294 |
return rval |
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
295 |
|
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
296 |
self.__trim_dict = None |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
297 |
return rval |
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
298 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
299 |
def __progress(self): |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
300 |
"""Bump progress tracker to indicate processing is active.""" |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
301 |
assert self.__progitem |
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
302 |
self.__progtrack.plan_add_progress(self.__progitem) |
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
303 |
|
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
304 |
def __start_subphase(self, subphase=None, reset=False): |
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
305 |
"""Add timing records and tickle progress tracker. Ends |
3029
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
306 |
previous subphase if ongoing.""" |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
307 |
if reset: |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
308 |
self.__timings = [] |
3029
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
309 |
if self.__subphasename is not None: |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
310 |
self.__end_subphase() |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
311 |
self.__start_time = time.time() |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
312 |
self.__subphasename = "phase {0:d}".format(subphase) |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
313 |
self.__progress() |
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
314 |
|
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
315 |
def __end_subphase(self): |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
316 |
"""Mark the end of a solver subphase, recording time taken.""" |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
317 |
now = time.time() |
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
318 |
self.__timings.append((self.__subphasename, |
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
319 |
now - self.__start_time)) |
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
320 |
self.__start_time = None |
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
321 |
self.__subphasename = None |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
322 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
323 |
def __trim_frozen(self, existing_freezes): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
324 |
"""Trim any packages we cannot update due to freezes.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
325 |
for f, r, _t in existing_freezes: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
326 |
if r: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
327 |
reason = (N_("This version is excluded by a " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
328 |
"freeze on {0} at version {1}. The " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
329 |
"reason for the freeze is: {2}"), |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
330 |
(f.pkg_name, f.version.get_version( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
331 |
include_build=False), r)) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
332 |
else: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
333 |
reason = (N_("This version is excluded by a " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
334 |
"freeze on {0} at version {1}."), |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
335 |
(f.pkg_name, f.version.get_version( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
336 |
include_build=False))) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
337 |
self.__trim(self.__comb_auto_fmris(f, dotrim=False)[1], |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
338 |
_TRIM_FREEZE, reason) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
339 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
340 |
def __raise_solution_error(self, no_version=EmptyI, no_solution=EmptyI): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
341 |
"""Raise a plan exception due to solution errors.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
342 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
343 |
solver_errors = None |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
344 |
if DebugValues["plan"]: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
345 |
solver_errors = self.get_trim_errors() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
346 |
raise api_errors.PlanCreationException(no_solution=no_solution, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
347 |
no_version=no_version, solver_errors=solver_errors) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
348 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
349 |
def __trim_proposed(self, proposed_dict): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
350 |
"""Remove any versions from proposed_dict that are in trim_dict |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
351 |
and raise an exception if no matching version of a proposed |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
352 |
package can be installed at this point.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
353 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
354 |
if proposed_dict is None: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
355 |
# Nothing to do. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
356 |
return |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
357 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
358 |
# Used to de-dup errors. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
359 |
already_seen = set() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
360 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
361 |
ret = [] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
362 |
for name in proposed_dict: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
363 |
tv = self.__dotrim(proposed_dict[name]) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
364 |
if tv: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
365 |
proposed_dict[name] = tv |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
366 |
continue |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
367 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
368 |
ret.extend([_("No matching version of {0} can be " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
369 |
"installed:").format(name)]) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
370 |
ret.extend(self.__fmri_list_errors(proposed_dict[name], |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
371 |
already_seen=already_seen)) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
372 |
# continue processing and accumulate all errors |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
373 |
if ret: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
374 |
self.__raise_solution_error(no_version=ret) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
375 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
376 |
def __set_removed_and_required_packages(self, rejected, proposed=None): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
377 |
"""Sets the list of package to be removed from the image, the |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
378 |
list of packages to reject, the list of packages to avoid |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
379 |
during the operation, and the list of packages that must not be |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
380 |
removed from the image. |
3104
5d93bdf1a849
15704264 variant mismatch message is cryptic
Aditya Tuteja <aditya.tuteja@oracle.com>
parents:
3094
diff
changeset
|
381 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
382 |
'rejected' is a set of package stems to reject. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
383 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
384 |
'proposed' is an optional set of FMRI objects representing |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
385 |
packages to install or update. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
386 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
387 |
Upon return: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
388 |
* self.__removal_fmris will contain the list of FMRIs to be |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
389 |
removed from the image due to user request or due to past |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
390 |
bugs that caused wrong variant to be installed by mistake. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
391 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
392 |
* self.__reject_set will contain the list of packages to avoid |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
393 |
or that were rejected by user request as appropriate.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
394 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
395 |
if proposed is None: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
396 |
proposed = set() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
397 |
else: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
398 |
# remove packages to be installed from avoid_set |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
399 |
self.__avoid_set -= proposed |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
400 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
401 |
self.__removal_fmris |= set([ |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
402 |
self.__installed_dict[name] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
403 |
for name in rejected |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
404 |
if name in self.__installed_dict |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
405 |
] + [ |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
406 |
f |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
407 |
for f in self.__installed_fmris |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
408 |
if not self.__trim_nonmatching_variants(f) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
409 |
]) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
410 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
411 |
self.__reject_set = rejected |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
412 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
413 |
# trim fmris that user explicitly disallowed |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
414 |
for name in rejected: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
415 |
self.__trim(self.__get_catalog_fmris(name), |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
416 |
_TRIM_REJECT, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
417 |
N_("This version rejected by user request")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
418 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
419 |
self.__req_pkg_names = (self.__installed_pkgs | |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
420 |
proposed) - rejected |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
421 |
self.__req_pkg_names -= set( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
422 |
f.pkg_name |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
423 |
for f in self.__removal_fmris |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
424 |
) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
425 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
426 |
def __update_possible_closure(self, possible, excludes, |
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
427 |
full_trim=False, filter_explicit=True): |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
428 |
"""Update the provided possible set of fmris with the transitive |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
429 |
closure of dependencies that can be satisfied, trimming those |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
430 |
packages that cannot be installed. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
431 |
|
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
432 |
'possible' is a set of FMRI objects representing all possible |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
433 |
versions of packages to consider for the operation. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
434 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
435 |
'full_trim' is an optional boolean indicating whether a full |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
436 |
trim of the dependency graph should be performed. This is NOT |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
437 |
required for the solver to find a solution. Trimming is only |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
438 |
needed to reduce the size of clauses and to provide error |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
439 |
messages. This requires multiple passes to determine if the |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
440 |
transitive closure of dependencies can be satisfied. This is |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
441 |
not required for correctness (and it greatly increases runtime). |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
442 |
However, it does greatly improve error messaging for some error |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
443 |
cases. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
444 |
|
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
445 |
'filter_explicit' is an optional boolean indicating whether |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
446 |
packages with pkg.depend.explicit-install set to true will be |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
447 |
filtered out. |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
448 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
449 |
An example of a case where full_trim will be useful (dueling |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
450 |
incorporations): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
451 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
452 |
Installed: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
453 |
entire |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
454 |
incorporates java-7-incorporation |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
455 |
Proposed: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
456 |
osnet-incorporation |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
457 |
incorporates system/resource-mgmt/dynamic-resource-pools |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
458 |
system/resource-mgmt/dynamic-resource-pools |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
459 |
requires new version of java not allowed by installed |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
460 |
java-7-incorporation""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
461 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
462 |
first = True |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
463 |
while True: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
464 |
tsize = len(self.__trim_dict) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
465 |
res = self.__generate_dependency_closure( |
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
466 |
possible, excludes=excludes, full_trim=full_trim, |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
467 |
filter_explicit=filter_explicit) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
468 |
if first: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
469 |
# The first pass will return the transitive |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
470 |
# closure of all dependencies; subsequent passes |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
471 |
# are only done for trimming, so need to update |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
472 |
# the possible set only on first pass. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
473 |
possible.update(res) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
474 |
first = False |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
475 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
476 |
nsize = len(self.__trim_dict) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
477 |
if not full_trim or nsize == tsize: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
478 |
# Nothing more to trim. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
479 |
break |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
480 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
481 |
# Remove trimmed items from possible_set. |
3234
3a90dc0b66c9
21188662 use six library for python 3 migration
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3213
diff
changeset
|
482 |
possible.difference_update(six.iterkeys(self.__trim_dict)) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
483 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
484 |
def __enforce_unique_packages(self, excludes): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
485 |
"""Constrain the solver solution so that only one version of |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
486 |
each package can be installed and generate dependency clauses |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
487 |
for possible packages.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
488 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
489 |
# Generate clauses for only one version of each package, and |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
490 |
# for dependencies for each package. Do so for all possible |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
491 |
# fmris. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
492 |
for name in self.__possible_dict: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
493 |
self.__progress() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
494 |
# Ensure only one version of a package is installed |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
495 |
self.__addclauses(self.__gen_highlander_clauses( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
496 |
self.__possible_dict[name])) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
497 |
# generate dependency clauses for each pkg |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
498 |
for fmri in self.__possible_dict[name]: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
499 |
for da in self.__get_dependency_actions(fmri, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
500 |
excludes=excludes): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
501 |
self.__addclauses( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
502 |
self.__gen_dependency_clauses(fmri, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
503 |
da)) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
504 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
505 |
def __generate_operation_clauses(self, proposed=None, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
506 |
proposed_dict=None): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
507 |
"""Generate initial solver clauses for the proposed packages (if |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
508 |
any) and installed packages. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
509 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
510 |
'proposed' is a set of FMRI objects representing packages to |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
511 |
install or update. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
512 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
513 |
'proposed_dict' contains user specified FMRI objects indexed by |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
514 |
pkg_name that should be installed or updated within an image.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
515 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
516 |
assert ((proposed is None and proposed_dict is None) or |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
517 |
(proposed is not None and proposed_dict is not None)) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
518 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
519 |
if proposed is None: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
520 |
proposed = set() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
521 |
if proposed_dict is None: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
522 |
proposed_dict = EmptyDict |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
523 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
524 |
# Generate clauses for proposed and installed pkgs note that we |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
525 |
# create clauses that require one of the proposed pkgs to work; |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
526 |
# this allows the possible_set to always contain the existing |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
527 |
# pkgs. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
528 |
for name in proposed_dict: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
529 |
self.__progress() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
530 |
self.__addclauses( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
531 |
self.__gen_one_of_these_clauses( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
532 |
set(proposed_dict[name]) & |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
533 |
set(self.__possible_dict[name]))) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
534 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
535 |
for name in (self.__installed_pkgs - proposed - |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
536 |
self.__reject_set - self.__avoid_set): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
537 |
self.__progress() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
538 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
539 |
if (self.__installed_dict[name] in |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
540 |
self.__removal_fmris): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
541 |
# we're uninstalling this package |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
542 |
continue |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
543 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
544 |
if name in self.__possible_dict: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
545 |
self.__addclauses( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
546 |
self.__gen_one_of_these_clauses( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
547 |
self.__possible_dict[name])) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
548 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
549 |
def __begin_solve(self): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
550 |
"""Prepares solver for solution creation returning a |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
551 |
ProgressTracker object to be used for the operation.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
552 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
553 |
# Once solution has been returned or failure has occurred, a new |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
554 |
# solver must be used. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
555 |
assert self.__state == SOLVER_INIT |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
556 |
self.__state = SOLVER_OXY |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
557 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
558 |
pt = self.__progtrack |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
559 |
# Check to see if we were invoked by solve_uninstall, in |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
560 |
# which case we don't want to restart what we've already |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
561 |
# started. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
562 |
if self.__progitem is None: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
563 |
self.__progitem = pt.PLAN_SOLVE_SETUP |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
564 |
pt.plan_start(pt.PLAN_SOLVE_SETUP) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
565 |
self.__start_subphase(1, reset=True) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
566 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
567 |
return pt |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
568 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
569 |
def __end_solve(self, solution, excludes): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
570 |
"""Returns the solution result to the caller after completing |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
571 |
all necessary solution cleanup.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
572 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
573 |
pt = self.__progtrack |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
574 |
self.__end_subphase() # end the last subphase. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
575 |
pt.plan_done(pt.PLAN_SOLVE_SOLVER) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
576 |
return self.__cleanup((self.__elide_possible_renames(solution, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
577 |
excludes), (self.__avoid_set, self.__obs_set))) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
578 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
579 |
def __assert_installed_allowed(self, proposed=None): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
580 |
"""Raises a PlanCreationException if the proposed operation |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
581 |
would require the removal of installed packages that are not |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
582 |
marked for removal by the proposed operation.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
583 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
584 |
if proposed is None: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
585 |
proposed = set() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
586 |
|
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
587 |
uninstall_fmris = [] |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
588 |
for name in (self.__installed_pkgs - proposed - |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
589 |
self.__reject_set - self.__avoid_set): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
590 |
self.__progress() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
591 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
592 |
if (self.__installed_dict[name] in |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
593 |
self.__removal_fmris): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
594 |
# we're uninstalling this package |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
595 |
continue |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
596 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
597 |
if name in self.__possible_dict: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
598 |
continue |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
599 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
600 |
# no version of this package is allowed |
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
601 |
uninstall_fmris.append(self.__installed_dict[name]) |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
602 |
|
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
603 |
# Used to de-dup errors. |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
604 |
already_seen = set() |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
605 |
ret = [] |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
606 |
msg = N_("Package {0} must be uninstalled before the " |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
607 |
"requested operation can be " |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
608 |
"performed.") |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
609 |
|
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
610 |
# First check for solver failures caused by missing parent |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
611 |
# dependencies. We do this because missing parent dependency |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
612 |
# failures cause other cascading failures, so it's better to |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
613 |
# just emit these failures first, have the user fix them, and |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
614 |
# have them re-run the operation, so then we can provide more |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
615 |
# concise error output about other problems. |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
616 |
for fmri in uninstall_fmris: |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
617 |
# Unused variable; pylint: disable=W0612 |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
618 |
for reason_id, reason_t, fmris in \ |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
619 |
self.__trim_dict[fmri]: |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
620 |
if reason_id == _TRIM_PARENT_MISSING: |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
621 |
break |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
622 |
else: |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
623 |
continue |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
624 |
res = self.__fmri_list_errors([fmri], |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
625 |
already_seen=already_seen) |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
626 |
assert res |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
627 |
ret.extend([msg.format(fmri.pkg_name)]) |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
628 |
ret.extend(res) |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
629 |
|
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
630 |
if ret: |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
631 |
self.__raise_solution_error(no_version=ret) |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
632 |
|
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
633 |
for fmri in uninstall_fmris: |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
634 |
res = self.__fmri_list_errors([fmri], |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
635 |
already_seen=already_seen) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
636 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
637 |
# If no errors returned, that implies that all of the |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
638 |
# reasons the FMRI was rejected aren't interesting. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
639 |
if res: |
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
640 |
ret.extend([msg.format(fmri.pkg_name)]) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
641 |
ret.extend(res) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
642 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
643 |
if ret: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
644 |
self.__raise_solution_error(no_version=ret) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
645 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
646 |
def __assert_trim_errors(self, possible_set, excludes, proposed=None, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
647 |
proposed_dict=None): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
648 |
"""Raises a PlanCreationException if any further trims would |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
649 |
prevent the installation or update of proposed or |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
650 |
installed/required packages. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
651 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
652 |
'proposed' is an optional set of FMRI objects representing |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
653 |
packages to install or update. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
654 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
655 |
'proposed_dict' contains user specified FMRIs indexed by |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
656 |
pkg_name that should be installed within an image. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
657 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
658 |
'possible_set' is the set of FMRIs potentially allowed for use |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
659 |
in the proposed operation.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
660 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
661 |
# make sure all package trims appear |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
662 |
self.__trimdone = False |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
663 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
664 |
# First, perform a full trim of the package version space; this |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
665 |
# is normally skipped for performance reasons as it's not |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
666 |
# required for correctness. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
667 |
self.__update_possible_closure(possible_set, excludes, |
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
668 |
full_trim=True, filter_explicit=False) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
669 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
670 |
# Now try re-asserting that proposed (if any) and installed |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
671 |
# packages are allowed after the trimming; these calls will |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
672 |
# raise an exception if all the proposed or any of the |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
673 |
# installed/required packages are trimmed. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
674 |
self.__trim_proposed(proposed_dict) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
675 |
self.__assign_possible(possible_set) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
676 |
self.__assert_installed_allowed(proposed=proposed) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
677 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
678 |
def __raise_install_error(self, exp, inc_list, proposed_dict, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
679 |
possible_set, excludes): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
680 |
"""Private logic for solve_install() to process a |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
681 |
PlanCreationException and re-raise as appropriate. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
682 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
683 |
'exp' is the related exception object raised by the solver when |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
684 |
no solution was found. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
685 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
686 |
'inc_list' is a list of package FMRIs representing installed |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
687 |
incorporations that are being maintained. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
688 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
689 |
'proposed_dict' contains user specified FMRIs indexed by |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
690 |
pkg_name that should be installed within an image. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
691 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
692 |
'possible_set' is the set of FMRIs potentially allowed for use |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
693 |
in the proposed operation. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
694 |
""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
695 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
696 |
# Before making a guess, apply extra trimming to see if we can |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
697 |
# reject the operation based on changing packages. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
698 |
self.__assert_trim_errors(possible_set, excludes, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
699 |
proposed_dict=proposed_dict) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
700 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
701 |
# Despite all of the trimming done, we still don't know why the |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
702 |
# solver couldn't find a solution, so make a best effort guess |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
703 |
# at the reason why. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
704 |
info = [] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
705 |
incs = [] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
706 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
707 |
incs.append("") |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
708 |
if inc_list: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
709 |
incs.append("maintained incorporations:") |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
710 |
skey = operator.attrgetter('pkg_name') |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
711 |
for il in sorted(inc_list, key=skey): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
712 |
incs.append(" {0}".format(il.get_short_fmri())) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
713 |
else: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
714 |
incs.append("maintained incorporations: None") |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
715 |
incs.append("") |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
716 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
717 |
ms = self.__generate_dependency_errors([ |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
718 |
b for a in proposed_dict.values() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
719 |
for b in a |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
720 |
], excludes=excludes) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
721 |
if ms: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
722 |
info.append("") |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
723 |
info.append(_("Plan Creation: dependency error(s) in " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
724 |
"proposed packages:")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
725 |
info.append("") |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
726 |
for s in ms: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
727 |
info.append(" {0}".format(s)) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
728 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
729 |
ms = self.__check_installed() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
730 |
if ms: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
731 |
info.append("") |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
732 |
info.append(_("Plan Creation: Errors in installed " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
733 |
"packages due to proposed changes:")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
734 |
info.append("") |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
735 |
for s in ms: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
736 |
info.append(" {0}".format(s)) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
737 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
738 |
if not info: # both error detection methods insufficent. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
739 |
info.append(_("Plan Creation: Package solver is " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
740 |
"unable to compute solution.")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
741 |
info.append(_("Dependency analysis is unable to " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
742 |
"determine exact cause.")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
743 |
info.append(_("Try specifying expected results to " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
744 |
"obtain more detailed error messages.")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
745 |
info.append(_("Include specific version of packages " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
746 |
"you wish installed.")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
747 |
exp.no_solution = incs + info |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
748 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
749 |
if DebugValues["plan"]: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
750 |
exp.solver_errors = self.get_trim_errors() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
751 |
raise exp |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
752 |
|
3160
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
753 |
def add_triggered_op(self, trigger_op, exec_op, fmris): |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
754 |
"""Add the set of FMRIs in 'fmris' to the internal dict of |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
755 |
pkg-actuators. 'trigger_op' is the operation which triggered |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
756 |
the pkg change, 'exec_op' is the operation which is supposed to |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
757 |
be executed.""" |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
758 |
|
3194
185fd0ebde38
20892465 convert Python 2 code more like Python 3
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3185
diff
changeset
|
759 |
assert trigger_op in self.__triggered_ops, "{0} is " \ |
185fd0ebde38
20892465 convert Python 2 code more like Python 3
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3185
diff
changeset
|
760 |
"not a valid trigger op for pkg actuators".format( |
185fd0ebde38
20892465 convert Python 2 code more like Python 3
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3185
diff
changeset
|
761 |
trigger_op) |
185fd0ebde38
20892465 convert Python 2 code more like Python 3
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3185
diff
changeset
|
762 |
assert exec_op in self.__triggered_ops[trigger_op], "{0} is " \ |
185fd0ebde38
20892465 convert Python 2 code more like Python 3
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3185
diff
changeset
|
763 |
"not a valid execution op for pkg actuators".format(exec_op) |
3160
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
764 |
assert isinstance(fmris, set) |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
765 |
|
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
766 |
self.__triggered_ops[trigger_op][exec_op] |= fmris |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
767 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
768 |
def solve_install(self, existing_freezes, proposed_dict, |
2795
991aca55cea9
7193711 change-facet doesn't restore content for explicitly false facets
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2785
diff
changeset
|
769 |
new_variants=None, excludes=EmptyI, |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
770 |
reject_set=frozenset(), trim_proposed_installed=True, |
3030
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
771 |
relax_all=False, ignore_inst_parent_deps=False, |
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
772 |
exact_install=False, installed_dict_tmp=EmptyDict, |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
773 |
insync=False): |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
774 |
"""Logic to install packages, change variants, and/or change |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
775 |
facets. |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
776 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
777 |
Returns FMRIs to be installed / upgraded in system and a new |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
778 |
set of packages to be avoided. |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
779 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
780 |
'existing_freezes' is a list of incorp. style FMRIs that |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
781 |
constrain package motion. |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
782 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
783 |
'proposed_dict' contains user specified FMRIs indexed by |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
784 |
pkg_name that should be installed within an image. |
2089
c8b9d6341530
2775 pkg should provide a way to downgrade (reinstall) packages
Shawn Walker <shawn.walker@oracle.com>
parents:
2084
diff
changeset
|
785 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
786 |
'new_variants' a dictionary containing variants which are |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
787 |
being updated. (It should not contain existing variants which |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
788 |
are not changing.) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
789 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
790 |
'reject_set' contains user specified package names that should |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
791 |
not be present within the final image. (These packages may or |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
792 |
may not be currently installed.) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
793 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
794 |
'trim_proposed_installed' is a boolean indicating whether the |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
795 |
solver should elide versions of proposed packages older than |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
796 |
those installed from the set of possible solutions. If False, |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
797 |
package downgrades are allowed, but only for installed |
2089
c8b9d6341530
2775 pkg should provide a way to downgrade (reinstall) packages
Shawn Walker <shawn.walker@oracle.com>
parents:
2084
diff
changeset
|
798 |
packages matching those in the proposed_dict. |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
799 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
800 |
'relax_all' indicates if the solver should relax all install |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
801 |
holds, or only install holds specified by proposed packages. |
2734
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
802 |
|
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
803 |
'ignore_inst_parent_deps' indicates if the solver should |
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
804 |
ignore parent dependencies for installed packages. This |
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
805 |
allows us to modify images with unsatisfied parent |
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
806 |
dependencies (ie, out of sync images). Any packaging |
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
807 |
operation which needs to guarantee that we have an in sync |
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
808 |
image (for example, sync-linked operations, or any recursive |
3030
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
809 |
packaging operations) should NOT enable this behavior. |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
810 |
|
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
811 |
'exact_install' is a flag to indicate whether we treat the |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
812 |
current image as an empty one. Any previously installed |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
813 |
packages that are not either specified in proposed_dict or |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
814 |
are a dependency (require, origin and parent dependencies) |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
815 |
of those packages will be removed. |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
816 |
|
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
817 |
'installed_dict_tmp' a dictionary containing the current |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
818 |
installed FMRIs indexed by pkg_name. Used when exact_install |
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
819 |
is on. |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
820 |
|
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
821 |
'insync' a flag indicating if the image is currently in sync.""" |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
822 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
823 |
pt = self.__begin_solve() |
3160
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
824 |
|
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
825 |
# reject_set is a frozenset(), need to make copy to modify |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
826 |
r_set = set(reject_set) |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
827 |
for f in self.__triggered_ops[PKG_OP_UNINSTALL][PKG_OP_UPDATE]: |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
828 |
if f.pkg_name in proposed_dict: |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
829 |
proposed_dict[f.pkg_name].append(f) |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
830 |
else: |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
831 |
proposed_dict[f.pkg_name] = [f] |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
832 |
for f in \ |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
833 |
self.__triggered_ops[PKG_OP_UNINSTALL][PKG_OP_UNINSTALL]: |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
834 |
r_set.add(f.pkg_name) |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
835 |
# re-freeze reject set |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
836 |
reject_set = frozenset(r_set) |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
837 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
838 |
proposed_pkgs = set(proposed_dict) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
839 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
840 |
if new_variants: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
841 |
self.__variants = new_variants |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
842 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
843 |
# |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
844 |
# Entire packages can be tagged with variants thereby |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
845 |
# making those packages uninstallable in certain |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
846 |
# images. So if we're changing variants such that |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
847 |
# some currently installed packages are becoming |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
848 |
# uninstallable add them to the removal package set. |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
849 |
# |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
850 |
for f in self.__installed_fmris: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
851 |
d = self.__get_variant_dict(f) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
852 |
for k in new_variants: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
853 |
if k in d and \ |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
854 |
new_variants[k] not in d[k]: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
855 |
self.__removal_fmris |= set([f]) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
856 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
857 |
# proposed_dict already contains publisher selection logic, |
2164
a84726bfb9fc
17489 pkg install/update ignores package versions from publishers other than installed if installed publisher allowed by pattern
Shawn Walker <shawn.walker@oracle.com>
parents:
2144
diff
changeset
|
858 |
# so prevent any further trimming of named packages based |
a84726bfb9fc
17489 pkg install/update ignores package versions from publishers other than installed if installed publisher allowed by pattern
Shawn Walker <shawn.walker@oracle.com>
parents:
2144
diff
changeset
|
859 |
# on publisher if they are installed. |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
860 |
for name in proposed_dict: |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
861 |
if name in self.__installed_dict: |
2164
a84726bfb9fc
17489 pkg install/update ignores package versions from publishers other than installed if installed publisher allowed by pattern
Shawn Walker <shawn.walker@oracle.com>
parents:
2144
diff
changeset
|
862 |
self.__mark_pub_trimmed(name) |
a84726bfb9fc
17489 pkg install/update ignores package versions from publishers other than installed if installed publisher allowed by pattern
Shawn Walker <shawn.walker@oracle.com>
parents:
2144
diff
changeset
|
863 |
else: |
a84726bfb9fc
17489 pkg install/update ignores package versions from publishers other than installed if installed publisher allowed by pattern
Shawn Walker <shawn.walker@oracle.com>
parents:
2144
diff
changeset
|
864 |
self.__publisher[name] = \ |
2639
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
865 |
proposed_dict[name][0].publisher |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
866 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
867 |
# Determine which packages are to be removed, rejected, and |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
868 |
# avoided and also determine which ones must not be removed |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
869 |
# during the operation. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
870 |
self.__set_removed_and_required_packages(rejected=reject_set, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
871 |
proposed=proposed_pkgs) |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
872 |
self.__progress() |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
873 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
874 |
# find list of incorps we don't let change as a side |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
875 |
# effect of other changes; exclude any specified on |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
876 |
# command line |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
877 |
# translate proposed_dict into a set |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
878 |
if relax_all: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
879 |
relax_pkgs = self.__installed_pkgs |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
880 |
else: |
2925
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
881 |
relax_pkgs = proposed_pkgs | \ |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
882 |
self.__relax_parent_self_constrained(excludes, |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
883 |
ignore_inst_parent_deps) |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
884 |
|
2089
c8b9d6341530
2775 pkg should provide a way to downgrade (reinstall) packages
Shawn Walker <shawn.walker@oracle.com>
parents:
2084
diff
changeset
|
885 |
inc_list, con_lists = self.__get_installed_unbound_inc_list( |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
886 |
relax_pkgs, excludes=excludes) |
1688
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
887 |
self.__inc_list = inc_list |
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
888 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
889 |
self.__start_subphase(2) |
3248
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
890 |
# generate set of possible fmris |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
891 |
# |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
892 |
# ensure existing pkgs stay installed; explicitly add in |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
893 |
# installed fmris in case publisher change has occurred and |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
894 |
# some pkgs aren't part of new publisher |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
895 |
possible_set = set() |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
896 |
self.__allowed_downgrades = set() |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
897 |
for f in self.__installed_fmris - self.__removal_fmris: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
898 |
possible_set |= self.__comb_newer_fmris(f)[0] | set([f]) |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
899 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
900 |
# Add the proposed fmris, populate self.__expl_install_dict and |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
901 |
# check for allowed downgrades. |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
902 |
self.__expl_install_dict = defaultdict(list) |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
903 |
for name, flist in proposed_dict.items(): |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
904 |
possible_set.update(flist) |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
905 |
for f in flist: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
906 |
self.__progress() |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
907 |
self.__allowed_downgrades |= \ |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
908 |
self.__allow_incorp_downgrades(f, |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
909 |
excludes=excludes) |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
910 |
if self.__is_explicit_install(f): |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
911 |
self.__expl_install_dict[name].append(f) |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
912 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
913 |
# For linked image sync we have to analyze all pkgs of the |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
914 |
# possible_set because no proposed pkgs will be given. However, |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
915 |
# that takes more time so only do this for syncs. The relax_all |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
916 |
# flag is an indicator of a sync operation. |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
917 |
if not proposed_dict.values() and relax_all: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
918 |
for f in possible_set: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
919 |
self.__progress() |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
920 |
self.__allowed_downgrades |= \ |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
921 |
self.__allow_incorp_downgrades(f, |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
922 |
excludes=excludes) |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
923 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
924 |
possible_set |= self.__allowed_downgrades |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
925 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
926 |
self.__start_subphase(3) |
2089
c8b9d6341530
2775 pkg should provide a way to downgrade (reinstall) packages
Shawn Walker <shawn.walker@oracle.com>
parents:
2084
diff
changeset
|
927 |
# If requested, trim any proposed fmris older than those of |
c8b9d6341530
2775 pkg should provide a way to downgrade (reinstall) packages
Shawn Walker <shawn.walker@oracle.com>
parents:
2084
diff
changeset
|
928 |
# corresponding installed packages. |
3030
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
929 |
# Because we have introduced exact-install where |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
930 |
# self.__installed_fmris will be empty, in order to prevent |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
931 |
# downgrading, we need to look up the full installed dictionary |
3185
2e55bdb918e4
20283125 pkg set-publisher traceback for --add-property-value after --set-property
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3171
diff
changeset
|
932 |
# stored in installed_dict_tmp. |
3030
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
933 |
if exact_install: |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
934 |
installed_fmris_tmp = frozenset( |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
935 |
installed_dict_tmp.values()) |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
936 |
candidate_fmris = installed_fmris_tmp - \ |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
937 |
self.__removal_fmris |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
938 |
else: |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
939 |
candidate_fmris = self.__installed_fmris - \ |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
940 |
self.__removal_fmris |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
941 |
|
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
942 |
for f in candidate_fmris: |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
943 |
self.__progress() |
2119
43d21fd2abda
17296 pkg update can unintentionally go backwards
Shawn Walker <shawn.walker@oracle.com>
parents:
2089
diff
changeset
|
944 |
if not trim_proposed_installed and \ |
43d21fd2abda
17296 pkg update can unintentionally go backwards
Shawn Walker <shawn.walker@oracle.com>
parents:
2089
diff
changeset
|
945 |
f.pkg_name in proposed_dict: |
43d21fd2abda
17296 pkg update can unintentionally go backwards
Shawn Walker <shawn.walker@oracle.com>
parents:
2089
diff
changeset
|
946 |
# Don't trim versions if newest version in |
43d21fd2abda
17296 pkg update can unintentionally go backwards
Shawn Walker <shawn.walker@oracle.com>
parents:
2089
diff
changeset
|
947 |
# proposed dict is older than installed |
43d21fd2abda
17296 pkg update can unintentionally go backwards
Shawn Walker <shawn.walker@oracle.com>
parents:
2089
diff
changeset
|
948 |
# version. |
43d21fd2abda
17296 pkg update can unintentionally go backwards
Shawn Walker <shawn.walker@oracle.com>
parents:
2089
diff
changeset
|
949 |
verlist = proposed_dict[f.pkg_name] |
43d21fd2abda
17296 pkg update can unintentionally go backwards
Shawn Walker <shawn.walker@oracle.com>
parents:
2089
diff
changeset
|
950 |
if verlist[-1].version < f.version: |
43d21fd2abda
17296 pkg update can unintentionally go backwards
Shawn Walker <shawn.walker@oracle.com>
parents:
2089
diff
changeset
|
951 |
# Assume downgrade is intentional. |
43d21fd2abda
17296 pkg update can unintentionally go backwards
Shawn Walker <shawn.walker@oracle.com>
parents:
2089
diff
changeset
|
952 |
continue |
3160
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
953 |
valid_trigger = False |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
954 |
for tf in self.__triggered_ops[ |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
955 |
PKG_OP_UNINSTALL][PKG_OP_UPDATE]: |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
956 |
if tf.pkg_name == f.pkg_name: |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
957 |
self.__trim_older(tf) |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
958 |
valid_trigger = True |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
959 |
if valid_trigger: |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
960 |
continue |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
961 |
|
2119
43d21fd2abda
17296 pkg update can unintentionally go backwards
Shawn Walker <shawn.walker@oracle.com>
parents:
2089
diff
changeset
|
962 |
self.__trim_older(f) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
963 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
964 |
# trim fmris we excluded via proposed_fmris |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
965 |
for name in proposed_dict: |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
966 |
self.__progress() |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
967 |
self.__trim(set(self.__get_catalog_fmris(name)) - |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
968 |
set(proposed_dict[name]), |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
969 |
_TRIM_PROPOSED_VER, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
970 |
N_("This version excluded by specified " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
971 |
"installation version")) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
972 |
# trim packages excluded by incorps in proposed. |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
973 |
self.__trim_recursive_incorps(proposed_dict[name], |
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
974 |
excludes, _TRIM_PROPOSED_INC) |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
975 |
|
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
976 |
# Trim packages with unsatisfied parent dependencies. Then |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
977 |
# if the current image is out of sync, for packages with |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
978 |
# satisfied parent depencences (which will include |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
979 |
# incorporations), call __trim_recursive_incorps() to trim out |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
980 |
# more packages that are disallowed due to the synced |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
981 |
# incorporations. |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
982 |
if self.__is_child(): |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
983 |
possible_linked = defaultdict(set) |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
984 |
for f in possible_set.copy(): |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
985 |
self.__progress() |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
986 |
if not self.__trim_nonmatching_parents(f, |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
987 |
excludes, ignore_inst_parent_deps): |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
988 |
possible_set.remove(f) |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
989 |
continue |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
990 |
if f in self.__linked_pkgs and not insync: |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
991 |
possible_linked[f.pkg_name].add(f) |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
992 |
for name in possible_linked: |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
993 |
# calling __trim_recursive_incorps can be |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
994 |
# expensive so don't call it unnecessarily. |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
995 |
if name in proposed_dict: |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
996 |
possible_linked[name] -= \ |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
997 |
set(proposed_dict[name]) |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
998 |
if not possible_linked[name]: |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
999 |
continue |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1000 |
self.__progress() |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1001 |
self.__trim_recursive_incorps( |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1002 |
list(possible_linked[name]), |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1003 |
excludes, _TRIM_SYNCED_INC) |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1004 |
del possible_linked |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1005 |
|
3248
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1006 |
self.__start_subphase(4) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1007 |
# now trim pkgs we cannot update due to maintained |
2089
c8b9d6341530
2775 pkg should provide a way to downgrade (reinstall) packages
Shawn Walker <shawn.walker@oracle.com>
parents:
2084
diff
changeset
|
1008 |
# incorporations |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1009 |
for i, flist in zip(inc_list, con_lists): |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1010 |
reason = (N_("This version is excluded by installed " |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1011 |
"incorporation {0}"), (i.get_short_fmri( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1012 |
anarchy=True, include_scheme=False),)) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1013 |
self.__trim(self.__comb_auto_fmris(i)[1], |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1014 |
_TRIM_INSTALLED_INC, reason) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1015 |
for f in flist: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1016 |
# dotrim=False here as we only want to trim |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1017 |
# packages that don't satisfy the incorporation. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1018 |
self.__trim(self.__comb_auto_fmris(f, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1019 |
dotrim=False)[1], _TRIM_INSTALLED_INC, |
2089
c8b9d6341530
2775 pkg should provide a way to downgrade (reinstall) packages
Shawn Walker <shawn.walker@oracle.com>
parents:
2084
diff
changeset
|
1020 |
reason) |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1021 |
|
3248
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1022 |
self.__start_subphase(5) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1023 |
# now trim any pkgs we cannot update due to freezes |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1024 |
self.__trim_frozen(existing_freezes) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1025 |
|
3248
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1026 |
self.__start_subphase(6) |
2089
c8b9d6341530
2775 pkg should provide a way to downgrade (reinstall) packages
Shawn Walker <shawn.walker@oracle.com>
parents:
2084
diff
changeset
|
1027 |
# elide any proposed versions that don't match variants (arch |
c8b9d6341530
2775 pkg should provide a way to downgrade (reinstall) packages
Shawn Walker <shawn.walker@oracle.com>
parents:
2084
diff
changeset
|
1028 |
# usually) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1029 |
for name in proposed_dict: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1030 |
for fmri in proposed_dict[name]: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1031 |
self.__trim_nonmatching_variants(fmri) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1032 |
|
3248
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1033 |
self.__start_subphase(7) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1034 |
# remove any versions from proposed_dict that are in trim_dict |
3128
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1035 |
try: |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1036 |
self.__trim_proposed(proposed_dict) |
3171
525f5bdb3f62
20434301 change exception handling syntax for python 3 migration
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3160
diff
changeset
|
1037 |
except api_errors.PlanCreationException as exp: |
3128
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1038 |
# One or more proposed packages have been rejected. |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1039 |
self.__raise_install_error(exp, inc_list, proposed_dict, |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1040 |
set(), excludes) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1041 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1042 |
self.__start_subphase(8) |
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1043 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1044 |
# Update the set of possible fmris with the transitive closure |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1045 |
# of all dependencies. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1046 |
self.__update_possible_closure(possible_set, excludes) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1047 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1048 |
self.__start_subphase(9) |
2666
7e8037e15e47
7133915 pkg update leaves out some needed packages
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2658
diff
changeset
|
1049 |
# trim any non-matching variants, origins or parents |
7e8037e15e47
7133915 pkg update leaves out some needed packages
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2658
diff
changeset
|
1050 |
for f in possible_set: |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1051 |
self.__progress() |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1052 |
if not self.__trim_nonmatching_parents(f, excludes, |
2734
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
1053 |
ignore_inst_parent_deps): |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1054 |
continue |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1055 |
if not self.__trim_nonmatching_variants(f): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1056 |
continue |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1057 |
self.__trim_nonmatching_origins(f, excludes, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1058 |
exact_install=exact_install, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1059 |
installed_dict_tmp=installed_dict_tmp) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1060 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1061 |
self.__start_subphase(10) |
2666
7e8037e15e47
7133915 pkg update leaves out some needed packages
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2658
diff
changeset
|
1062 |
# remove all trimmed fmris from consideration |
3234
3a90dc0b66c9
21188662 use six library for python 3 migration
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3213
diff
changeset
|
1063 |
possible_set.difference_update(six.iterkeys(self.__trim_dict)) |
2089
c8b9d6341530
2775 pkg should provide a way to downgrade (reinstall) packages
Shawn Walker <shawn.walker@oracle.com>
parents:
2084
diff
changeset
|
1064 |
# remove any versions from proposed_dict that are in trim_dict |
c8b9d6341530
2775 pkg should provide a way to downgrade (reinstall) packages
Shawn Walker <shawn.walker@oracle.com>
parents:
2084
diff
changeset
|
1065 |
# as trim dict has been updated w/ missing dependencies |
3128
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1066 |
try: |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1067 |
self.__trim_proposed(proposed_dict) |
3171
525f5bdb3f62
20434301 change exception handling syntax for python 3 migration
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3160
diff
changeset
|
1068 |
except api_errors.PlanCreationException as exp: |
3128
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1069 |
# One or more proposed packages have been rejected. |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1070 |
self.__raise_install_error(exp, inc_list, proposed_dict, |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1071 |
possible_set, excludes) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1072 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1073 |
self.__start_subphase(11) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1074 |
# |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1075 |
# Generate ids, possible_dict for clause generation. Prepare |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1076 |
# the solver for invocation. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1077 |
# |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1078 |
self.__assign_fmri_ids(possible_set) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1079 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1080 |
# Constrain the solution so that only one version of each |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1081 |
# package can be installed. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1082 |
self.__enforce_unique_packages(excludes) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1083 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1084 |
self.__start_subphase(12) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1085 |
# Add proposed and installed packages to solver. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1086 |
self.__generate_operation_clauses(proposed=proposed_pkgs, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1087 |
proposed_dict=proposed_dict) |
3128
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1088 |
try: |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1089 |
self.__assert_installed_allowed(proposed=proposed_pkgs) |
3171
525f5bdb3f62
20434301 change exception handling syntax for python 3 migration
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3160
diff
changeset
|
1090 |
except api_errors.PlanCreationException as exp: |
3128
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1091 |
# One or more installed packages can't be retained or |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1092 |
# upgraded. |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1093 |
self.__raise_install_error(exp, inc_list, proposed_dict, |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1094 |
possible_set, excludes) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1095 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1096 |
pt.plan_done(pt.PLAN_SOLVE_SETUP) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1097 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1098 |
self.__progitem = pt.PLAN_SOLVE_SOLVER |
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1099 |
pt.plan_start(pt.PLAN_SOLVE_SOLVER) |
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1100 |
self.__start_subphase(13) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1101 |
# save a solver instance so we can come back here |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1102 |
# this is where errors happen... |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1103 |
saved_solver = self.__save_solver() |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1104 |
try: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1105 |
saved_solution = self.__solve() |
3171
525f5bdb3f62
20434301 change exception handling syntax for python 3 migration
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3160
diff
changeset
|
1106 |
except api_errors.PlanCreationException as exp: |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1107 |
# no solution can be found. |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1108 |
self.__raise_install_error(exp, inc_list, proposed_dict, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1109 |
possible_set, excludes) |
1601
e0922fa5b56b
12817 Traceback installing a package which depends(?) on an installed package from a disabled publisher
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1505
diff
changeset
|
1110 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1111 |
self.__start_subphase(14) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1112 |
# we have a solution that works... attempt to |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1113 |
# reduce collateral damage to other packages |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1114 |
# while still keeping command line pkgs at their |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1115 |
# optimum level |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1116 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1117 |
self.__restore_solver(saved_solver) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1118 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1119 |
# fix the fmris that were specified on the cmd line |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1120 |
# at their optimum (newest) level along with the |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1121 |
# new dependencies, but try and avoid upgrading |
1813
75dd7cb4911e
15007 pkg install downloads new developer/sunstudio12u1
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1798
diff
changeset
|
1122 |
# already installed pkgs or adding un-needed new pkgs. |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1123 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1124 |
for fmri in saved_solution: |
1813
75dd7cb4911e
15007 pkg install downloads new developer/sunstudio12u1
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1798
diff
changeset
|
1125 |
if fmri.pkg_name in proposed_dict: |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1126 |
self.__addclauses( |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1127 |
self.__gen_one_of_these_clauses([fmri])) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1128 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1129 |
self.__start_subphase(15) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1130 |
# save context |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1131 |
saved_solver = self.__save_solver() |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1132 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1133 |
saved_solution = self.__solve(older=True) |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1134 |
|
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1135 |
self.__start_subphase(16) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1136 |
# Now we have the oldest possible original fmris |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1137 |
# but we may have some that are not original |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1138 |
# Since we want to move as far forward as possible |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1139 |
# when we have to move a package, fix the originals |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1140 |
# and drive forward again w/ the remainder |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1141 |
self.__restore_solver(saved_solver) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1142 |
|
3253
a4cdd6047bbd
21744189 fix build failure due to pylint update
yiteng <yiteng.zhang@oracle.com>
parents:
3248
diff
changeset
|
1143 |
for fmri in saved_solution & self.__installed_fmris: |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1144 |
self.__addclauses( |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1145 |
self.__gen_one_of_these_clauses([fmri])) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1146 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1147 |
solution = self.__solve() |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1148 |
self.__progress() |
2228
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1149 |
solution = self.__update_solution_set(solution, excludes) |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1150 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1151 |
return self.__end_solve(solution, excludes) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1152 |
|
2183
21ae45e8dfcf
17581 There should be a way of removing a package as part of upgrade
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2164
diff
changeset
|
1153 |
def solve_update_all(self, existing_freezes, excludes=EmptyI, |
2228
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1154 |
reject_set=frozenset()): |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1155 |
"""Logic to update all packages within an image to the latest |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1156 |
versions possible. |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1157 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1158 |
Returns FMRIs to be installed / upgraded in system and a new |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1159 |
set of packages to be avoided. |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1160 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1161 |
'existing_freezes' is a list of incorp. style FMRIs that |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1162 |
constrain pkg motion |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1163 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1164 |
'reject_set' contains user specified FMRIs that should not be |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1165 |
present within the final image. (These packages may or may |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1166 |
not be currently installed.) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1167 |
""" |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1168 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1169 |
pt = self.__begin_solve() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1170 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1171 |
# Determine which packages are to be removed, rejected, and |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1172 |
# avoided and also determine which ones must not be removed |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1173 |
# during the operation. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1174 |
self.__set_removed_and_required_packages(rejected=reject_set) |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1175 |
self.__progress() |
2183
21ae45e8dfcf
17581 There should be a way of removing a package as part of upgrade
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2164
diff
changeset
|
1176 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1177 |
self.__start_subphase(2) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1178 |
# generate set of possible fmris |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1179 |
possible_set = set() |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1180 |
for f in self.__installed_fmris - self.__removal_fmris: |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1181 |
self.__progress() |
1601
e0922fa5b56b
12817 Traceback installing a package which depends(?) on an installed package from a disabled publisher
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1505
diff
changeset
|
1182 |
matching = self.__comb_newer_fmris(f)[0] |
e0922fa5b56b
12817 Traceback installing a package which depends(?) on an installed package from a disabled publisher
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1505
diff
changeset
|
1183 |
if not matching: # disabled publisher... |
e0922fa5b56b
12817 Traceback installing a package which depends(?) on an installed package from a disabled publisher
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1505
diff
changeset
|
1184 |
matching = set([f]) # staying put is an option |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1185 |
possible_set |= matching |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1186 |
|
3248
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1187 |
self.__allowed_downgrades = set() |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1188 |
for f in possible_set: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1189 |
self.__allowed_downgrades |= \ |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1190 |
self.__allow_incorp_downgrades(f, excludes=excludes) |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1191 |
possible_set |= self.__allowed_downgrades |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1192 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1193 |
# trim fmris we cannot install because they're older |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1194 |
for f in self.__installed_fmris: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1195 |
self.__progress() |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1196 |
self.__trim_older(f) |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1197 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1198 |
# now trim any pkgs we cannot update due to freezes |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1199 |
self.__trim_frozen(existing_freezes) |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
1200 |
|
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1201 |
# Trim packages with unsatisfied parent dependencies. |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1202 |
if self.__is_child(): |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1203 |
for f in possible_set.copy(): |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1204 |
self.__progress() |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1205 |
if not self.__trim_nonmatching_parents(f, |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1206 |
excludes): |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1207 |
possible_set.remove(f) |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1208 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1209 |
self.__start_subphase(3) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1210 |
# Update the set of possible FMRIs with the transitive closure |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1211 |
# of all dependencies. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1212 |
self.__update_possible_closure(possible_set, excludes) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1213 |
|
2666
7e8037e15e47
7133915 pkg update leaves out some needed packages
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2658
diff
changeset
|
1214 |
# trim any non-matching origins or parents |
7e8037e15e47
7133915 pkg update leaves out some needed packages
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2658
diff
changeset
|
1215 |
for f in possible_set: |
7e8037e15e47
7133915 pkg update leaves out some needed packages
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2658
diff
changeset
|
1216 |
if self.__trim_nonmatching_parents(f, excludes): |
7e8037e15e47
7133915 pkg update leaves out some needed packages
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2658
diff
changeset
|
1217 |
if self.__trim_nonmatching_variants(f): |
7e8037e15e47
7133915 pkg update leaves out some needed packages
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2658
diff
changeset
|
1218 |
self.__trim_nonmatching_origins(f, |
7e8037e15e47
7133915 pkg update leaves out some needed packages
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2658
diff
changeset
|
1219 |
excludes) |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1220 |
|
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1221 |
self.__start_subphase(4) |
2666
7e8037e15e47
7133915 pkg update leaves out some needed packages
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2658
diff
changeset
|
1222 |
|
7e8037e15e47
7133915 pkg update leaves out some needed packages
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2658
diff
changeset
|
1223 |
# remove all trimmed fmris from consideration |
3234
3a90dc0b66c9
21188662 use six library for python 3 migration
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3213
diff
changeset
|
1224 |
possible_set.difference_update(six.iterkeys(self.__trim_dict)) |
2183
21ae45e8dfcf
17581 There should be a way of removing a package as part of upgrade
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2164
diff
changeset
|
1225 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1226 |
# |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1227 |
# Generate ids, possible_dict for clause generation. Prepare |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1228 |
# the solver for invocation. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1229 |
# |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1230 |
self.__assign_fmri_ids(possible_set) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1231 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1232 |
# Constrain the solution so that only one version of each |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1233 |
# package can be installed. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1234 |
self.__enforce_unique_packages(excludes) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1235 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1236 |
self.__start_subphase(5) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1237 |
# Add installed packages to solver. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1238 |
self.__generate_operation_clauses() |
3128
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1239 |
try: |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1240 |
self.__assert_installed_allowed() |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1241 |
except api_errors.PlanCreationException: |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1242 |
# Attempt a full trim to see if we can raise a sensible |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1243 |
# error. If not, re-raise. |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1244 |
self.__assert_trim_errors(possible_set, excludes) |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1245 |
raise |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1246 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1247 |
pt.plan_done(pt.PLAN_SOLVE_SETUP) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1248 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1249 |
self.__progitem = pt.PLAN_SOLVE_SOLVER |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1250 |
pt.plan_start(pt.PLAN_SOLVE_SOLVER) |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1251 |
self.__start_subphase(6) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1252 |
try: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1253 |
solution = self.__solve() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1254 |
except api_errors.PlanCreationException: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1255 |
# No solution can be found; attempt a full trim to see |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1256 |
# if we can raise a sensible error. If not, re-raise. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1257 |
self.__assert_trim_errors(possible_set, excludes) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1258 |
raise |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1259 |
|
2228
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1260 |
self.__update_solution_set(solution, excludes) |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1261 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1262 |
for f in solution.copy(): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1263 |
if self.__fmri_is_obsolete(f): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1264 |
solution.remove(f) |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1265 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1266 |
# If solution doesn't match installed set of packages, then an |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1267 |
# upgrade solution was found (heuristic): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1268 |
if solution != self.__installed_fmris: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1269 |
return self.__end_solve(solution, excludes) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1270 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1271 |
incorps = self.__get_installed_upgradeable_incorps( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1272 |
excludes) |
3277
1d44a3c7c415
21211465 zoneadm attach -U tries to overcome GZ constraints and fails
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3260
diff
changeset
|
1273 |
if not incorps or self.__is_child(): |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1274 |
# If there are no installed, upgradeable incorporations, |
3277
1d44a3c7c415
21211465 zoneadm attach -U tries to overcome GZ constraints and fails
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3260
diff
changeset
|
1275 |
# then assume that no updates were available. Also if |
1d44a3c7c415
21211465 zoneadm attach -U tries to overcome GZ constraints and fails
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3260
diff
changeset
|
1276 |
# we're a linked image child we may not be able to |
1d44a3c7c415
21211465 zoneadm attach -U tries to overcome GZ constraints and fails
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3260
diff
changeset
|
1277 |
# update to the latest available incorporations due to |
1d44a3c7c415
21211465 zoneadm attach -U tries to overcome GZ constraints and fails
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3260
diff
changeset
|
1278 |
# parent constraints, so don't generate an error. |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1279 |
return self.__end_solve(solution, excludes) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1280 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1281 |
# Before making a guess, apply extra trimming to see if we can |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1282 |
# reject the operation based on changing packages. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1283 |
self.__assert_trim_errors(possible_set, excludes) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1284 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1285 |
# Despite all of the trimming done, we still don't know why the |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1286 |
# solver couldn't find a solution, so make a best-effort guess |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1287 |
# at the reason why. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1288 |
skey = operator.attrgetter('pkg_name') |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1289 |
info = [] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1290 |
info.append(_("No solution found to update to latest available " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1291 |
"versions.")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1292 |
info.append(_("This may indicate an overly constrained set of " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1293 |
"packages are installed.")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1294 |
info.append(" ") |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1295 |
info.append(_("latest incorporations:")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1296 |
info.append(" ") |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1297 |
info.extend(( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1298 |
" {0}".format(f) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1299 |
for f in sorted(incorps, key=skey) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1300 |
)) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1301 |
info.append(" ") |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1302 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1303 |
ms = self.__generate_dependency_errors(incorps, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1304 |
excludes=excludes) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1305 |
ms.extend(self.__check_installed()) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1306 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1307 |
if ms: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1308 |
info.append(_("The following indicates why the system " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1309 |
"cannot update to the latest version:")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1310 |
info.append(" ") |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1311 |
for s in ms: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1312 |
info.append(" {0}".format(s)) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1313 |
else: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1314 |
info.append(_("Dependency analysis is unable to " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1315 |
"determine the cause.")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1316 |
info.append(_("Try specifying expected versions to " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1317 |
"obtain more detailed error messages.")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1318 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1319 |
self.__raise_solution_error(no_solution=info) |
1762
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1320 |
|
2734
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
1321 |
def solve_uninstall(self, existing_freezes, uninstall_list, excludes, |
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
1322 |
ignore_inst_parent_deps=False): |
1762
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1323 |
"""Compute changes needed for uninstall""" |
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1324 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1325 |
self.__begin_solve() |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1326 |
|
2461
555e8b858d35
18653 conditional deps and uninstall: two great tastes that don't taste great together?
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2452
diff
changeset
|
1327 |
# generate list of installed pkgs w/ possible renames removed to |
555e8b858d35
18653 conditional deps and uninstall: two great tastes that don't taste great together?
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2452
diff
changeset
|
1328 |
# forestall failing removal due to presence of unneeded renamed |
555e8b858d35
18653 conditional deps and uninstall: two great tastes that don't taste great together?
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2452
diff
changeset
|
1329 |
# pkg |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1330 |
orig_installed_set = self.__installed_fmris |
1762
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1331 |
renamed_set = orig_installed_set - \ |
1768
38fe0f4bd5ca
14624 KeyError in eliminating renamed packages
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1762
diff
changeset
|
1332 |
self.__elide_possible_renames(orig_installed_set, excludes) |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1333 |
|
3260
5592df722091
21911413 pkg triggered uninstalls fail if pkg to be removed depends on trigger
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3253
diff
changeset
|
1334 |
proposed_removals = set(uninstall_list) | renamed_set | \ |
5592df722091
21911413 pkg triggered uninstalls fail if pkg to be removed depends on trigger
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3253
diff
changeset
|
1335 |
self.__triggered_ops[PKG_OP_UNINSTALL][PKG_OP_UNINSTALL] |
1762
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1336 |
|
3160
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1337 |
# find pkgs which are going to be installed/updated |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1338 |
triggered_set = set() |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1339 |
for f in self.__triggered_ops[PKG_OP_UNINSTALL][PKG_OP_UPDATE]: |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1340 |
triggered_set.add(f) |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1341 |
|
1762
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1342 |
# check for dependents |
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1343 |
for pfmri in proposed_removals: |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1344 |
self.__progress() |
2461
555e8b858d35
18653 conditional deps and uninstall: two great tastes that don't taste great together?
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2452
diff
changeset
|
1345 |
dependents = self.__get_dependents(pfmri, excludes) - \ |
555e8b858d35
18653 conditional deps and uninstall: two great tastes that don't taste great together?
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2452
diff
changeset
|
1346 |
proposed_removals |
3160
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1347 |
|
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1348 |
# Check if any of the dependents are going to be updated |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1349 |
# to a different version which might not have the same |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1350 |
# dependency constraints. If so, remove from dependents |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1351 |
# list. |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1352 |
|
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1353 |
# Example: |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1354 |
# A@1 depends on B |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1355 |
# A@2 does not depend on B |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1356 |
# |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1357 |
# A@1 is currently installed, B is requested for removal |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1358 |
# -> not allowed |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1359 |
# pkg actuator updates A to 2 |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1360 |
# -> now removal of B is allowed |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1361 |
candidates = dict( |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1362 |
(tf, f) |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1363 |
for f in dependents |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1364 |
for tf in triggered_set |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1365 |
if f.pkg_name == tf.pkg_name |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1366 |
) |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1367 |
|
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1368 |
for tf in candidates: |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1369 |
remove = True |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1370 |
for da in self.__get_dependency_actions(tf, |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1371 |
excludes): |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1372 |
if da.attrs["type"] != "require": |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1373 |
continue |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1374 |
pkg_name = pkg.fmri.PkgFmri( |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1375 |
da.attrs["fmri"]).pkg_name |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1376 |
if pkg_name == pfmri.pkg_name: |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1377 |
remove = False |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1378 |
break |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1379 |
if remove: |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1380 |
dependents.remove(candidates[tf]) |
4ff47d7a70ae
18779149 pkg uninstall should support automatic downgrades from pkg metadata
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3128
diff
changeset
|
1381 |
|
1762
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1382 |
if dependents: |
2461
555e8b858d35
18653 conditional deps and uninstall: two great tastes that don't taste great together?
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2452
diff
changeset
|
1383 |
raise api_errors.NonLeafPackageException(pfmri, |
555e8b858d35
18653 conditional deps and uninstall: two great tastes that don't taste great together?
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2452
diff
changeset
|
1384 |
dependents) |
1762
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1385 |
|
2228
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1386 |
reject_set = set(f.pkg_name for f in proposed_removals) |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1387 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1388 |
# Run it through the solver; with more complex dependencies |
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1389 |
# we're going to be out of luck without it. |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1390 |
self.__state = SOLVER_INIT # reset to initial state |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1391 |
return self.solve_install(existing_freezes, {}, |
2734
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
1392 |
excludes=excludes, reject_set=reject_set, |
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
1393 |
ignore_inst_parent_deps=ignore_inst_parent_deps) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1394 |
|
2228
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1395 |
def __update_solution_set(self, solution, excludes): |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1396 |
"""Update avoid set w/ any missing packages (due to reject). |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1397 |
Remove obsolete packages from solution. |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1398 |
Keep track of which obsolete packages have group |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1399 |
dependencies so verify of group packages w/ obsolete |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1400 |
members works.""" |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1401 |
|
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1402 |
solution_stems = set(f.pkg_name for f in solution) |
2608
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1403 |
tracked_stems = set() |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1404 |
for fmri in solution: |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1405 |
for a in self.__get_dependency_actions(fmri, |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1406 |
excludes=excludes, trim_invalid=False): |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1407 |
if a.attrs["type"] != "group": |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1408 |
continue |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1409 |
t = a.attrs["fmri"] |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1410 |
try: |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1411 |
tmp = self.__fmridict[t] |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1412 |
except KeyError: |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1413 |
tmp = pkg.fmri.PkgFmri(t) |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1414 |
self.__fmridict[t] = tmp |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1415 |
tracked_stems.add(tmp.pkg_name) |
2228
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1416 |
|
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1417 |
self.__avoid_set |= (tracked_stems - solution_stems) |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1418 |
|
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1419 |
ret = solution.copy() |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1420 |
obs = set() |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1421 |
|
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1422 |
for f in solution: |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1423 |
if self.__fmri_is_obsolete(f): |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1424 |
ret.remove(f) |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1425 |
obs.add(f.pkg_name) |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1426 |
|
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1427 |
self.__obs_set = obs & tracked_stems |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1428 |
|
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1429 |
return ret |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1430 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1431 |
def __save_solver(self): |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1432 |
"""Duplicate current current solver state and return it.""" |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1433 |
return (self.__addclause_failure, |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1434 |
pkg.solver.msat_solver(self.__solver)) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1435 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1436 |
def __restore_solver(self, solver): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1437 |
"""Set the current solver state to the previously saved one""" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1438 |
self.__addclause_failure, self.__solver = solver |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1439 |
self.__iterations = 0 |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1440 |
|
1786
14c232a5a4a0
14788 sometimes upgrade from osol 133 to onips 133 (with renames) doesn't work
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1768
diff
changeset
|
1441 |
def __solve(self, older=False, max_iterations=2000): |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1442 |
"""Perform iterative solution; try for newest pkgs unless |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1443 |
older=True""" |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1444 |
solution_vector = [] |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1445 |
self.__state = SOLVER_FAIL |
1601
e0922fa5b56b
12817 Traceback installing a package which depends(?) on an installed package from a disabled publisher
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1505
diff
changeset
|
1446 |
eliminated = set() |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1447 |
while not self.__addclause_failure and self.__solver.solve([]): |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1448 |
self.__progress() |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1449 |
self.__iterations += 1 |
1601
e0922fa5b56b
12817 Traceback installing a package which depends(?) on an installed package from a disabled publisher
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1505
diff
changeset
|
1450 |
|
e0922fa5b56b
12817 Traceback installing a package which depends(?) on an installed package from a disabled publisher
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1505
diff
changeset
|
1451 |
if self.__iterations > max_iterations: |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1452 |
break |
1601
e0922fa5b56b
12817 Traceback installing a package which depends(?) on an installed package from a disabled publisher
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1505
diff
changeset
|
1453 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1454 |
solution_vector = self.__get_solution_vector() |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1455 |
if not solution_vector: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1456 |
break |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1457 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1458 |
# prevent the selection of any older pkgs |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1459 |
for fid in solution_vector: |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1460 |
pfmri = self.__getfmri(fid) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1461 |
matching, remaining = \ |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1462 |
self.__comb_newer_fmris(pfmri) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1463 |
if not older: |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1464 |
remove = remaining |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1465 |
else: |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1466 |
remove = matching - set([pfmri]) - \ |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1467 |
eliminated |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1468 |
for f in remove: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1469 |
self.__addclauses([[-self.__getid(f)]]) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1470 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1471 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1472 |
# prevent the selection of this exact combo; |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1473 |
# permit [] solution |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1474 |
self.__addclauses([[-i for i in solution_vector]]) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1475 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1476 |
if not self.__iterations: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1477 |
self.__raise_solution_error(no_solution=True) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1478 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1479 |
self.__state = SOLVER_SUCCESS |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1480 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1481 |
solution = set([self.__getfmri(i) for i in solution_vector]) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1482 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1483 |
return solution |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1484 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1485 |
def __get_solution_vector(self): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1486 |
"""Return solution vector from solver""" |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1487 |
return frozenset([ |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1488 |
(i + 1) for i in range(self.__solver.get_variables()) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1489 |
if self.__solver.dereference(i) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1490 |
]) |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1491 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1492 |
def __assign_possible(self, possible_set): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1493 |
"""Assign __possible_dict of possible package FMRIs by pkg stem |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1494 |
and mark trimming complete.""" |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1495 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1496 |
# generate dictionary of possible pkgs fmris by pkg stem |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1497 |
self.__possible_dict.clear() |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1498 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1499 |
for f in possible_set: |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1500 |
self.__possible_dict[f.pkg_name].append(f) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1501 |
for name in self.__possible_dict: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1502 |
self.__possible_dict[name].sort() |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1503 |
self.__trimdone = True |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1504 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1505 |
def __assign_fmri_ids(self, possible_set): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1506 |
""" give a set of possible fmris, assign ids""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1507 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1508 |
self.__assign_possible(possible_set) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1509 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1510 |
# assign clause numbers (ids) to possible pkgs |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1511 |
pkgid = 1 |
3234
3a90dc0b66c9
21188662 use six library for python 3 migration
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3213
diff
changeset
|
1512 |
for name in sorted(six.iterkeys(self.__possible_dict)): |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1513 |
for fmri in reversed(self.__possible_dict[name]): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1514 |
self.__id2fmri[pkgid] = fmri |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1515 |
self.__fmri2id[fmri] = pkgid |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1516 |
pkgid += 1 |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1517 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1518 |
self.__variables = pkgid - 1 |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1519 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1520 |
def __getid(self, fmri): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1521 |
"""Translate fmri to variable number (id)""" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1522 |
return self.__fmri2id[fmri] |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1523 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1524 |
def __getfmri(self, fid): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1525 |
"""Translate variable number (id) to fmris""" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1526 |
return self.__id2fmri[fid] |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1527 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1528 |
def __get_fmris_by_version(self, pkg_name): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1529 |
"""Cache for catalog entries; helps performance""" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1530 |
if pkg_name not in self.__cache: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1531 |
self.__cache[pkg_name] = [ |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1532 |
t |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1533 |
for t in self.__catalog.fmris_by_version(pkg_name) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1534 |
] |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1535 |
return self.__cache[pkg_name] |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1536 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1537 |
def __get_catalog_fmris(self, pkg_name): |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1538 |
""" return the list of fmris in catalog for this pkg name""" |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1539 |
if pkg_name not in self.__pub_trim: |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1540 |
self.__filter_publishers(pkg_name) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1541 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1542 |
if self.__trimdone: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1543 |
return self.__possible_dict.get(pkg_name, []) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1544 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1545 |
return [ |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1546 |
f |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1547 |
for tp in self.__get_fmris_by_version(pkg_name) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1548 |
for f in tp[1] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1549 |
] |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1550 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1551 |
def __comb_newer_fmris(self, fmri, dotrim=True, obsolete_ok=True): |
2089
c8b9d6341530
2775 pkg should provide a way to downgrade (reinstall) packages
Shawn Walker <shawn.walker@oracle.com>
parents:
2084
diff
changeset
|
1552 |
"""Returns tuple of set of fmris that are matched within |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1553 |
CONSTRAINT.NONE of specified version and set of remaining |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1554 |
fmris.""" |
2639
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
1555 |
|
3317
81fca2c09539
21122796 pkg __comb_common_version branch sort can lead to odd ordering
Shawn Walker-Salas <shawn.walker@oracle.com>
parents:
3294
diff
changeset
|
1556 |
return self.__comb_common(fmri, dotrim, |
81fca2c09539
21122796 pkg __comb_common_version branch sort can lead to odd ordering
Shawn Walker-Salas <shawn.walker@oracle.com>
parents:
3294
diff
changeset
|
1557 |
version.CONSTRAINT_NONE, obsolete_ok) |
3078
cef31428bd48
18588974 solver can fail with faulty rejections for incorporates
Shawn Walker <shawn.walker@oracle.com>
parents:
3030
diff
changeset
|
1558 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1559 |
def __comb_common(self, fmri, dotrim, constraint, obsolete_ok): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1560 |
"""Underlying impl. of other comb routines""" |
2639
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
1561 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1562 |
self.__progress() |
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1563 |
|
1601
e0922fa5b56b
12817 Traceback installing a package which depends(?) on an installed package from a disabled publisher
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1505
diff
changeset
|
1564 |
tp = (fmri, dotrim, constraint, obsolete_ok) # cache index |
1970
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1565 |
# determine if the data is cacheable or cached: |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1566 |
if (not self.__trimdone and dotrim) or tp not in self.__cache: |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1567 |
# use frozensets so callers don't inadvertently update |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1568 |
# these sets (which may be cached). |
3317
81fca2c09539
21122796 pkg __comb_common_version branch sort can lead to odd ordering
Shawn Walker-Salas <shawn.walker@oracle.com>
parents:
3294
diff
changeset
|
1569 |
all_fmris = set(self.__get_catalog_fmris(fmri.pkg_name)) |
81fca2c09539
21122796 pkg __comb_common_version branch sort can lead to odd ordering
Shawn Walker-Salas <shawn.walker@oracle.com>
parents:
3294
diff
changeset
|
1570 |
matching = frozenset([ |
81fca2c09539
21122796 pkg __comb_common_version branch sort can lead to odd ordering
Shawn Walker-Salas <shawn.walker@oracle.com>
parents:
3294
diff
changeset
|
1571 |
f |
81fca2c09539
21122796 pkg __comb_common_version branch sort can lead to odd ordering
Shawn Walker-Salas <shawn.walker@oracle.com>
parents:
3294
diff
changeset
|
1572 |
for f in all_fmris |
81fca2c09539
21122796 pkg __comb_common_version branch sort can lead to odd ordering
Shawn Walker-Salas <shawn.walker@oracle.com>
parents:
3294
diff
changeset
|
1573 |
if f not in self.__trim_dict or not dotrim |
81fca2c09539
21122796 pkg __comb_common_version branch sort can lead to odd ordering
Shawn Walker-Salas <shawn.walker@oracle.com>
parents:
3294
diff
changeset
|
1574 |
if not fmri.version or |
81fca2c09539
21122796 pkg __comb_common_version branch sort can lead to odd ordering
Shawn Walker-Salas <shawn.walker@oracle.com>
parents:
3294
diff
changeset
|
1575 |
fmri.version == f.version or |
81fca2c09539
21122796 pkg __comb_common_version branch sort can lead to odd ordering
Shawn Walker-Salas <shawn.walker@oracle.com>
parents:
3294
diff
changeset
|
1576 |
f.version.is_successor(fmri.version, |
81fca2c09539
21122796 pkg __comb_common_version branch sort can lead to odd ordering
Shawn Walker-Salas <shawn.walker@oracle.com>
parents:
3294
diff
changeset
|
1577 |
constraint=constraint) |
81fca2c09539
21122796 pkg __comb_common_version branch sort can lead to odd ordering
Shawn Walker-Salas <shawn.walker@oracle.com>
parents:
3294
diff
changeset
|
1578 |
if obsolete_ok or not self.__fmri_is_obsolete(f) |
81fca2c09539
21122796 pkg __comb_common_version branch sort can lead to odd ordering
Shawn Walker-Salas <shawn.walker@oracle.com>
parents:
3294
diff
changeset
|
1579 |
]) |
81fca2c09539
21122796 pkg __comb_common_version branch sort can lead to odd ordering
Shawn Walker-Salas <shawn.walker@oracle.com>
parents:
3294
diff
changeset
|
1580 |
remaining = frozenset(all_fmris - matching) |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1581 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1582 |
# if we haven't finished trimming, don't cache this |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1583 |
if not self.__trimdone: |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1584 |
return matching, remaining |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1585 |
# cache the result |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1586 |
self.__cache[tp] = (matching, remaining) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1587 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1588 |
return self.__cache[tp] |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1589 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1590 |
def __comb_older_fmris(self, fmri, dotrim=True, obsolete_ok=True): |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1591 |
"""Returns tuple of set of fmris that are older than |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1592 |
specified version and set of remaining fmris.""" |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1593 |
newer, older = self.__comb_newer_fmris(fmri, dotrim=False, |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1594 |
obsolete_ok=obsolete_ok) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1595 |
if not dotrim: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1596 |
return older, newer |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1597 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1598 |
# we're going to return the older packages, so we need |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1599 |
# to make sure that any trimmed packages are removed |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1600 |
# from the matching set and added to the non-matching |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1601 |
# ones. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1602 |
trimmed_older = set([ |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1603 |
f |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1604 |
for f in older |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1605 |
if f in self.__trim_dict |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1606 |
]) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1607 |
return older - trimmed_older, newer | trimmed_older |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1608 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1609 |
def __comb_auto_fmris(self, fmri, dotrim=True, obsolete_ok=True): |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1610 |
"""Returns tuple of set of fmris that are match within |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1611 |
CONSTRAINT.AUTO of specified version and set of remaining |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1612 |
fmris.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1613 |
return self.__comb_common(fmri, dotrim, version.CONSTRAINT_AUTO, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1614 |
obsolete_ok) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1615 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1616 |
def __fmri_loadstate(self, fmri, excludes): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1617 |
"""load fmri state (obsolete == True, renamed == True)""" |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1618 |
|
1970
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1619 |
try: |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1620 |
relevant = dict([ |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1621 |
(a.attrs["name"], a.attrs["value"]) |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1622 |
for a in self.__catalog.get_entry_actions(fmri, |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1623 |
[catalog.Catalog.DEPENDENCY], excludes=excludes) |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1624 |
if a.name == "set" and \ |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1625 |
a.attrs["name"] in ["pkg.renamed", |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1626 |
"pkg.obsolete"] |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1627 |
]) |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1628 |
except api_errors.InvalidPackageErrors: |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1629 |
# Trim package entries that have unparseable action data |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1630 |
# so that they can be filtered out later. |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1631 |
self.__fmri_state[fmri] = ("false", "false") |
3104
5d93bdf1a849
15704264 variant mismatch message is cryptic
Aditya Tuteja <aditya.tuteja@oracle.com>
parents:
3094
diff
changeset
|
1632 |
self.__trim_unsupported(fmri) |
1970
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1633 |
return |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1634 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1635 |
self.__fmri_state[fmri] = ( |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1636 |
relevant.get("pkg.obsolete", "false").lower() == "true", |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1637 |
relevant.get("pkg.renamed", "false").lower() == "true") |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1638 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1639 |
def __fmri_is_obsolete(self, fmri, excludes=EmptyI): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1640 |
"""check to see if fmri is obsolete""" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1641 |
if fmri not in self.__fmri_state: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1642 |
self.__fmri_loadstate(fmri, excludes) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1643 |
return self.__fmri_state[fmri][0] |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1644 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1645 |
def __fmri_is_renamed(self, fmri, excludes=EmptyI): |
1688
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
1646 |
"""check to see if fmri is renamed""" |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1647 |
if fmri not in self.__fmri_state: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1648 |
self.__fmri_loadstate(fmri, excludes) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1649 |
return self.__fmri_state[fmri][1] |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1650 |
|
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1651 |
def __get_actions(self, fmri, name, excludes=EmptyI, |
2461
555e8b858d35
18653 conditional deps and uninstall: two great tastes that don't taste great together?
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2452
diff
changeset
|
1652 |
trim_invalid=True): |
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1653 |
"""Return list of actions of type 'name' for this 'fmri' in |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1654 |
Catalog.DEPENDENCY section.""" |
2183
21ae45e8dfcf
17581 There should be a way of removing a package as part of upgrade
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2164
diff
changeset
|
1655 |
|
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
1656 |
try: |
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1657 |
return self.__actcache[(fmri, name)] |
2639
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
1658 |
except KeyError: |
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
1659 |
pass |
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
1660 |
|
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
1661 |
try: |
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1662 |
self.__actcache[(fmri, name)] = [ |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
1663 |
a |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
1664 |
for a in self.__catalog.get_entry_actions(fmri, |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1665 |
[catalog.Catalog.DEPENDENCY], excludes=excludes) |
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1666 |
if a.name == name |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1667 |
] |
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1668 |
return self.__actcache[(fmri, name)] |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
1669 |
except api_errors.InvalidPackageErrors: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1670 |
if not trim_invalid: |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
1671 |
raise |
2183
21ae45e8dfcf
17581 There should be a way of removing a package as part of upgrade
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2164
diff
changeset
|
1672 |
|
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1673 |
# Trim package entries that have unparseable action |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1674 |
# data so that they can be filtered out later. |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1675 |
self.__fmri_state[fmri] = ("false", "false") |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1676 |
self.__trim_unsupported(fmri) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1677 |
return [] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1678 |
|
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1679 |
def __get_dependency_actions(self, fmri, excludes=EmptyI, |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1680 |
trim_invalid=True): |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1681 |
"""Return list of all dependency actions for this fmri.""" |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1682 |
|
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1683 |
return self.__get_actions(fmri, "depend", |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1684 |
excludes=excludes, trim_invalid=trim_invalid) |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1685 |
|
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1686 |
def __get_set_actions(self, fmri, excludes=EmptyI, |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1687 |
trim_invalid=True): |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1688 |
"""Return list of all set actions for this fmri in |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1689 |
Catalog.DEPENDENCY section.""" |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1690 |
|
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1691 |
return self.__get_actions(fmri, "set", |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1692 |
excludes=excludes, trim_invalid=trim_invalid) |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1693 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1694 |
def __get_variant_dict(self, fmri): |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1695 |
"""Return dictionary of variants suppported by fmri""" |
1970
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1696 |
try: |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1697 |
if fmri not in self.__variant_dict: |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1698 |
self.__variant_dict[fmri] = dict( |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1699 |
self.__catalog.get_entry_all_variants(fmri)) |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1700 |
except api_errors.InvalidPackageErrors: |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1701 |
# Trim package entries that have unparseable action data |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1702 |
# so that they can be filtered out later. |
60471574c487
16238 client api should ignore invalid and not yet supported packages
Shawn Walker <shawn.walker@oracle.com>
parents:
1941
diff
changeset
|
1703 |
self.__variant_dict[fmri] = {} |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1704 |
self.__trim_unsupported(fmri) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1705 |
return self.__variant_dict[fmri] |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1706 |
|
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1707 |
def __is_explicit_install(self, fmri): |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1708 |
"""check if given fmri has explicit install actions.""" |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1709 |
|
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1710 |
for sa in self.__get_set_actions(fmri): |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1711 |
if sa.attrs["name"] == "pkg.depend.explicit-install" \ |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1712 |
and sa.attrs["value"].lower() == "true": |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1713 |
return True |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1714 |
return False |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1715 |
|
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1716 |
def __filter_explicit_install(self, fmri): |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1717 |
"""Check packages which have 'pkg.depend.explicit-install' |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1718 |
action set to true, and prepare to filter.""" |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1719 |
|
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1720 |
will_filter = True |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1721 |
# Filter out fmris with 'pkg.depend.explicit-install' set to |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1722 |
# true and not present in self.__expl_install_dict or |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1723 |
# self.__installed_dict. |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1724 |
if self.__is_explicit_install(fmri): |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1725 |
pkg_name = fmri.pkg_name |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1726 |
if pkg_name in self.__expl_install_dict and \ |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1727 |
fmri in self.__expl_install_dict[pkg_name]: |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1728 |
will_filter = False |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1729 |
elif pkg_name in self.__installed_dict and \ |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1730 |
fmri == self.__installed_dict[pkg_name]: |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1731 |
will_filter = False |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1732 |
else: |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1733 |
will_filter = False |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1734 |
return will_filter |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1735 |
|
2461
555e8b858d35
18653 conditional deps and uninstall: two great tastes that don't taste great together?
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2452
diff
changeset
|
1736 |
def __generate_dependency_closure(self, fmri_set, excludes=EmptyI, |
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1737 |
dotrim=True, full_trim=False, filter_explicit=True): |
2461
555e8b858d35
18653 conditional deps and uninstall: two great tastes that don't taste great together?
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2452
diff
changeset
|
1738 |
"""return set of all fmris the set of specified fmris could |
555e8b858d35
18653 conditional deps and uninstall: two great tastes that don't taste great together?
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2452
diff
changeset
|
1739 |
depend on; while trimming those packages that cannot be |
555e8b858d35
18653 conditional deps and uninstall: two great tastes that don't taste great together?
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2452
diff
changeset
|
1740 |
installed""" |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1741 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1742 |
# Use a copy of the set provided by the caller to prevent |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1743 |
# unexpected modification! |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1744 |
needs_processing = set(fmri_set) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1745 |
already_processed = set() |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1746 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1747 |
while needs_processing: |
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
1748 |
self.__progress() |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1749 |
fmri = needs_processing.pop() |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1750 |
already_processed.add(fmri) |
3197
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1751 |
# Trim filtered packages. |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1752 |
if filter_explicit and \ |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1753 |
self.__filter_explicit_install(fmri): |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1754 |
reason = (N_("Uninstalled fmri {0} can " |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1755 |
"only be installed if explicitly " |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1756 |
"requested"), (fmri,)) |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1757 |
self.__trim(fmri, _TRIM_EXPLICIT_INSTALL, |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1758 |
reason) |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1759 |
continue |
6699b44d5dee
20533255 pkg should have a mechanism to prevent pkgs from getting installed implicitly
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3194
diff
changeset
|
1760 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1761 |
needs_processing |= (self.__generate_dependencies(fmri, |
3128
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1762 |
excludes, dotrim, full_trim) - already_processed) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1763 |
return already_processed |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1764 |
|
3128
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1765 |
def __generate_dependencies(self, fmri, excludes=EmptyI, dotrim=True, |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1766 |
full_trim=False): |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1767 |
"""return set of direct (possible) dependencies of this pkg; |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1768 |
trim those packages whose dependencies cannot be satisfied""" |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1769 |
try: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1770 |
return set([ |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1771 |
f |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1772 |
for da in self.__get_dependency_actions(fmri, |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1773 |
excludes) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1774 |
# check most common ones first; what is checked |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1775 |
# here is a matter of optimization / messaging, not |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1776 |
# correctness. |
2669
c43f0f4b768a
7165703 onu cannot uninstall entire
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2666
diff
changeset
|
1777 |
if da.attrs["type"] == "require" or |
c43f0f4b768a
7165703 onu cannot uninstall entire
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2666
diff
changeset
|
1778 |
da.attrs["type"] == "group" or |
c43f0f4b768a
7165703 onu cannot uninstall entire
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2666
diff
changeset
|
1779 |
da.attrs["type"] == "conditional" or |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1780 |
da.attrs["type"] == "require-any" or |
3128
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1781 |
(full_trim and ( |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1782 |
da.attrs["type"] == "incorporate" or |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1783 |
da.attrs["type"] == "optional" or |
1b7c998226e0
19816038 pkg planning phase performance needs improvement
Shawn Walker <shawn.walker@oracle.com>
parents:
3104
diff
changeset
|
1784 |
da.attrs["type"] == "exclude")) |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1785 |
for f in self.__parse_dependency(da, fmri, |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1786 |
dotrim, check_req=True)[1] |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1787 |
]) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1788 |
|
3171
525f5bdb3f62
20434301 change exception handling syntax for python 3 migration
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3160
diff
changeset
|
1789 |
except DependencyException as e: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1790 |
self.__trim(fmri, e.reason_id, e.reason, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1791 |
fmri_adds=e.fmris) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1792 |
return set([]) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1793 |
|
1762
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1794 |
def __elide_possible_renames(self, fmris, excludes=EmptyI): |
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1795 |
"""Return fmri list (which must be self-complete) with all |
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1796 |
renamed fmris that have no other fmris depending on them |
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1797 |
removed""" |
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1798 |
|
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1799 |
# figure out which have been renamed |
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1800 |
renamed_fmris = set([ |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1801 |
pfmri |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1802 |
for pfmri in fmris |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1803 |
if self.__fmri_is_renamed(pfmri, excludes) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1804 |
]) |
1762
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1805 |
|
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1806 |
# return if nothing has been renamed |
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1807 |
if not renamed_fmris: |
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1808 |
return set(fmris) |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1809 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1810 |
fmris_by_name = dict( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1811 |
(pfmri.pkg_name, pfmri) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1812 |
for pfmri in fmris |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1813 |
) |
1762
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1814 |
|
2608
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1815 |
# figure out which renamed fmris have dependencies; compute |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1816 |
# transitively so we can handle multiple renames |
1762
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1817 |
|
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1818 |
needs_processing = set(fmris) - renamed_fmris |
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1819 |
already_processed = set() |
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1820 |
|
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1821 |
while needs_processing: |
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1822 |
pfmri = needs_processing.pop() |
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1823 |
already_processed.add(pfmri) |
2608
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1824 |
for da in self.__get_dependency_actions( |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1825 |
pfmri, excludes): |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1826 |
if da.attrs["type"] not in \ |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1827 |
("incorporate", "optional", "origin"): |
2267
d8b8d0f7afab
18043 renamed packages in an image cause problems with require-any dependencies
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2228
diff
changeset
|
1828 |
for f in da.attrlist("fmri"): |
2608
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1829 |
try: |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1830 |
tmp = self.__fmridict[f] |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1831 |
except KeyError: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1832 |
tmp = \ |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1833 |
pkg.fmri.PkgFmri(f) |
2608
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1834 |
self.__fmridict[f] = tmp |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1835 |
name = tmp.pkg_name |
2267
d8b8d0f7afab
18043 renamed packages in an image cause problems with require-any dependencies
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2228
diff
changeset
|
1836 |
if name not in fmris_by_name: |
d8b8d0f7afab
18043 renamed packages in an image cause problems with require-any dependencies
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2228
diff
changeset
|
1837 |
continue |
d8b8d0f7afab
18043 renamed packages in an image cause problems with require-any dependencies
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2228
diff
changeset
|
1838 |
new_fmri = fmris_by_name[name] |
2608
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1839 |
# since new_fmri will not be |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1840 |
# treated as renamed, make sure |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1841 |
# we check any dependencies it |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1842 |
# has |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1843 |
if new_fmri not in \ |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1844 |
already_processed: |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1845 |
needs_processing.add( |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1846 |
new_fmri) |
2267
d8b8d0f7afab
18043 renamed packages in an image cause problems with require-any dependencies
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2228
diff
changeset
|
1847 |
renamed_fmris.discard(new_fmri) |
1762
2ae663f0e049
14507 renamed packages should be removed if possible
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1731
diff
changeset
|
1848 |
return set(fmris) - renamed_fmris |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1849 |
|
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
1850 |
|
1688
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
1851 |
def __get_dependents(self, pfmri, excludes=EmptyI): |
2228
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1852 |
"""return set of installed fmris that have require dependencies |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
1853 |
on specified installed fmri""" |
1688
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
1854 |
if self.__dependents is None: |
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
1855 |
self.__dependents = {} |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1856 |
for f in self.__installed_fmris: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1857 |
for da in self.__get_dependency_actions(f, |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1858 |
excludes): |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1859 |
if da.attrs["type"] != "require": |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1860 |
continue |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1861 |
pkg_name = pkg.fmri.PkgFmri( |
2958
868e07939116
16851082 build_release (aka build version) should not be displayed
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
2925
diff
changeset
|
1862 |
da.attrs["fmri"]).pkg_name |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1863 |
self.__dependents.setdefault( |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1864 |
self.__installed_dict[pkg_name], |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1865 |
set()).add(f) |
1688
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
1866 |
return self.__dependents.get(pfmri, set()) |
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
1867 |
|
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1868 |
def __trim_recursive_incorps(self, fmri_list, excludes, reason_id): |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1869 |
"""trim packages affected by incorporations""" |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1870 |
processed = set() |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1871 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1872 |
work = [fmri_list] |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1873 |
|
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1874 |
if reason_id == _TRIM_PROPOSED_INC: |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1875 |
reason = N_( |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1876 |
"Excluded by proposed incorporation '{0}'") |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1877 |
elif reason_id == _TRIM_SYNCED_INC: |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1878 |
reason = N_( |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1879 |
"Excluded by synced parent incorporation '{0}'") |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1880 |
else: |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1881 |
raise AssertionError( |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1882 |
"Invalid reason_id value: {0}".format(reason_id)) |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1883 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1884 |
while work: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1885 |
fmris = work.pop() |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1886 |
processed.add(frozenset(fmris)) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1887 |
d = self.__combine_incorps(fmris, excludes) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1888 |
for name in d: |
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1889 |
self.__trim(d[name][1], reason_id, |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
1890 |
(reason, (fmris[0].pkg_name,))) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1891 |
to_do = d[name][0] |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1892 |
if to_do and frozenset(to_do) not in processed: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1893 |
work.append(list(to_do)) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1894 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1895 |
def __combine_incorps(self, fmri_list, excludes): |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1896 |
"""Given a list of fmris, one of which must be present, produce |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1897 |
a dictionary indexed by package name, which contains a tuple |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1898 |
of two sets (matching fmris, nonmatching)""" |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1899 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1900 |
dict_list = [ |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1901 |
self.__get_incorp_nonmatch_dict(f, excludes) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1902 |
for f in fmri_list |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1903 |
] |
2202
044dc70500ff
17795 DC builds for 158 are pulling 153 pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2197
diff
changeset
|
1904 |
# The following ignores constraints that appear in only some of |
044dc70500ff
17795 DC builds for 158 are pulling 153 pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2197
diff
changeset
|
1905 |
# the versions. This also handles obsoletions & renames. |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1906 |
all_keys = reduce(set.intersection, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1907 |
(set(d.keys()) for d in dict_list)) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1908 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1909 |
return dict( |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1910 |
(k, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1911 |
(reduce(set.union, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1912 |
(d.get(k, (set(), set()))[0] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1913 |
for d in dict_list)), |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1914 |
reduce(set.intersection, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1915 |
(d.get(k, (set(), set()))[1] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1916 |
for d in dict_list)))) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1917 |
for k in all_keys |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1918 |
) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1919 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1920 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1921 |
def __get_incorp_nonmatch_dict(self, fmri, excludes): |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1922 |
"""Given a fmri with incorporation dependencies, produce a |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1923 |
dictionary containing (matching, non matching fmris), |
3029
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1924 |
indexed by pkg name. Note that some fmris may be |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1925 |
incorporated more than once at different levels of |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1926 |
specificity""" |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1927 |
ret = dict() |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1928 |
for da in self.__get_dependency_actions(fmri, |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1929 |
excludes=excludes): |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1930 |
if da.attrs["type"] != "incorporate": |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1931 |
continue |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1932 |
nm, m, _c, _d, _r, f = self.__parse_dependency(da, fmri, |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1933 |
dotrim=False) |
3029
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1934 |
# Collect all incorp. dependencies affecting |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1935 |
# a package in a list. Note that it is |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1936 |
# possible for both matching and non-matching |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1937 |
# sets to be NULL, and we'll need at least |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1938 |
# one item in the list for reduce to work. |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1939 |
ret.setdefault(f.pkg_name, (list(), list())) |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1940 |
ret[f.pkg_name][0].append(set(m)) |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1941 |
ret[f.pkg_name][1].append(set(nm)) |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1942 |
|
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1943 |
# For each of the packages constrained, combine multiple |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1944 |
# incorporation dependencies. Matches are intersected, |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1945 |
# non-matches form a union. |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1946 |
for pkg_name in ret: |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1947 |
ret[pkg_name] = ( |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1948 |
reduce(set.intersection, ret[pkg_name][0]), |
6bbe73288425
15713570 SUNBT7140112 solver error messaging unclear when installed, unincorporated packa
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2958
diff
changeset
|
1949 |
reduce(set.union, ret[pkg_name][1])) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1950 |
return ret |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1951 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1952 |
def __parse_dependency(self, dependency_action, source, |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1953 |
dotrim=True, check_req=False): |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1954 |
"""Return tuple of (disallowed fmri list, allowed fmri list, |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1955 |
conditional_list, dependency_type, required)""" |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
1956 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1957 |
dtype = dependency_action.attrs["type"] |
2608
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1958 |
fmris = [] |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1959 |
for fmristr in dependency_action.attrlist("fmri"): |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1960 |
try: |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1961 |
fmri = self.__fmridict[fmristr] |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1962 |
except KeyError: |
2958
868e07939116
16851082 build_release (aka build version) should not be displayed
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
2925
diff
changeset
|
1963 |
fmri = pkg.fmri.PkgFmri(fmristr) |
2608
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1964 |
self.__fmridict[fmristr] = fmri |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1965 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1966 |
if not self.__depend_ts: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1967 |
fver = fmri.version |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1968 |
if fver and fver.timestr: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1969 |
# Include timestamp in all error |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1970 |
# output for dependencies. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1971 |
self.__depend_ts = True |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1972 |
|
2608
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1973 |
fmris.append(fmri) |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
1974 |
|
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
1975 |
fmri = fmris[0] |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
1976 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1977 |
# true if match is required for containing pkg |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1978 |
required = True |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1979 |
# if this dependency has conditional fmris |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1980 |
conditional = None |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1981 |
# true if obsolete pkgs satisfy this dependency |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1982 |
obsolete_ok = False |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1983 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1984 |
if dtype == "require": |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1985 |
matching, nonmatching = \ |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1986 |
self.__comb_newer_fmris(fmri, dotrim, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
1987 |
obsolete_ok=obsolete_ok) |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
1988 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1989 |
elif dtype == "optional": |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1990 |
obsolete_ok = True |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1991 |
matching, nonmatching = \ |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1992 |
self.__comb_newer_fmris(fmri, dotrim, |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1993 |
obsolete_ok=obsolete_ok) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1994 |
if fmri.pkg_name not in self.__req_pkg_names: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1995 |
required = False |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
1996 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1997 |
elif dtype == "exclude": |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
1998 |
obsolete_ok = True |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
1999 |
matching, nonmatching = \ |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2000 |
self.__comb_older_fmris(fmri, dotrim, |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2001 |
obsolete_ok=obsolete_ok) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2002 |
if fmri.pkg_name not in self.__req_pkg_names: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2003 |
required = False |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2004 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2005 |
elif dtype == "incorporate": |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2006 |
obsolete_ok = True |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2007 |
matching, nonmatching = \ |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2008 |
self.__comb_auto_fmris(fmri, dotrim, |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2009 |
obsolete_ok=obsolete_ok) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2010 |
if fmri.pkg_name not in self.__req_pkg_names: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2011 |
required = False |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2012 |
# Track packages that deliver incorporate deps. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2013 |
self.__known_incs.add(source.pkg_name) |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2014 |
|
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2015 |
elif dtype == "conditional": |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2016 |
cond_fmri = pkg.fmri.PkgFmri( |
2958
868e07939116
16851082 build_release (aka build version) should not be displayed
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
2925
diff
changeset
|
2017 |
dependency_action.attrs["predicate"]) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2018 |
conditional, nonmatching = self.__comb_newer_fmris( |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2019 |
cond_fmri, dotrim, obsolete_ok=obsolete_ok) |
2468
ce77b64883c4
18710 conditional dependencies can cause install and uninstall failure when dependency cannot be installed
Shawn Walker <shawn.walker@oracle.com>
parents:
2461
diff
changeset
|
2020 |
# Required is only really helpful for solver error |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2021 |
# messaging. The only time we know that this dependency |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2022 |
# is required is when the predicate package must be part |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2023 |
# of the solution. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2024 |
if cond_fmri.pkg_name not in self.__req_pkg_names: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2025 |
required = False |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2026 |
|
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2027 |
matching, nonmatching = \ |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2028 |
self.__comb_newer_fmris(fmri, dotrim, |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2029 |
obsolete_ok=obsolete_ok) |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2030 |
|
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2031 |
elif dtype == "require-any": |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2032 |
matching = [] |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2033 |
nonmatching = [] |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2034 |
for f in fmris: |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2035 |
m, nm = self.__comb_newer_fmris(f, dotrim, |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2036 |
obsolete_ok=obsolete_ok) |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2037 |
matching.extend(m) |
2183
21ae45e8dfcf
17581 There should be a way of removing a package as part of upgrade
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2164
diff
changeset
|
2038 |
nonmatching.extend(nm) |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2039 |
|
2347
d65d04108db1
18308 solver can traceback if no solution is found and require-any dependency was parsed
Shawn Walker <shawn.walker@oracle.com>
parents:
2339
diff
changeset
|
2040 |
matching = set(matching) |
d65d04108db1
18308 solver can traceback if no solution is found and require-any dependency was parsed
Shawn Walker <shawn.walker@oracle.com>
parents:
2339
diff
changeset
|
2041 |
nonmatching = set(nonmatching) |
d65d04108db1
18308 solver can traceback if no solution is found and require-any dependency was parsed
Shawn Walker <shawn.walker@oracle.com>
parents:
2339
diff
changeset
|
2042 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2043 |
elif dtype == "parent": |
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
2044 |
# Parent dependency fmris must exist outside of the |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
2045 |
# current image, so we don't report any new matching |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
2046 |
# or nonmatching requirements for the solver. |
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
2047 |
matching = nonmatching = frozenset() |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2048 |
required = False |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2049 |
|
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2050 |
elif dtype == "origin": |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2051 |
matching, nonmatching = \ |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2052 |
self.__comb_newer_fmris(fmri, dotrim=False, |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2053 |
obsolete_ok=obsolete_ok) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2054 |
required = False |
2228
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
2055 |
|
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
2056 |
elif dtype == "group": |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
2057 |
obsolete_ok = True |
2697
228d1e19d461
7178308 parse_dependency corrupts shared cache if pkg:/consolidation/osnet/osnet-all is installed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2693
diff
changeset
|
2058 |
# remove version explicitly; don't modify cached fmri |
228d1e19d461
7178308 parse_dependency corrupts shared cache if pkg:/consolidation/osnet/osnet-all is installed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2693
diff
changeset
|
2059 |
if fmri.version is not None: |
228d1e19d461
7178308 parse_dependency corrupts shared cache if pkg:/consolidation/osnet/osnet-all is installed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2693
diff
changeset
|
2060 |
fmri = fmri.copy() |
228d1e19d461
7178308 parse_dependency corrupts shared cache if pkg:/consolidation/osnet/osnet-all is installed
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2693
diff
changeset
|
2061 |
fmri.version = None |
2228
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
2062 |
if fmri.pkg_name in self.__avoid_set or \ |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
2063 |
fmri.pkg_name in self.__reject_set: |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
2064 |
required = False |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
2065 |
matching = nonmatching = frozenset() |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
2066 |
else: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2067 |
matching, nonmatching = self.__comb_newer_fmris( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2068 |
fmri, dotrim, obsolete_ok=obsolete_ok) |
2228
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
2069 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2070 |
else: # only way this happens is if new type is incomplete |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2071 |
raise api_errors.InvalidPackageErrors( |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2072 |
"Unknown dependency type {0}".format(dtype)) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2073 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2074 |
# check if we're throwing exceptions and we didn't find any |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2075 |
# matches on a required package |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2076 |
if not check_req or matching or not required: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2077 |
return (nonmatching, matching, conditional, dtype, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2078 |
required, fmri) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2079 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2080 |
# Neither build or publisher is interesting for dependencies. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2081 |
fstr = fmri.get_fmri(anarchy=True, include_build=False, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2082 |
include_scheme=False) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2083 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2084 |
# we're going to toss an exception |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2085 |
if dtype == "exclude": |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2086 |
# If we reach this point, we know that a required |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2087 |
# package (already installed or proposed) was excluded. |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2088 |
matching, nonmatching = self.__comb_older_fmris( |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2089 |
fmri, dotrim=False, obsolete_ok=False) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2090 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2091 |
# Determine if excluded package is already installed. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2092 |
installed = False |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2093 |
for f in nonmatching: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2094 |
if f in self.__installed_fmris: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2095 |
installed = True |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2096 |
break |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2097 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2098 |
if not matching and installed: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2099 |
# The exclude dependency doesn't allow the |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2100 |
# version of the package that is already |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2101 |
# installed. |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2102 |
raise DependencyException( |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2103 |
_TRIM_INSTALLED_EXCLUDE, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2104 |
(N_("Package contains 'exclude' dependency " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2105 |
"{0} on installed package"), (fstr,))) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2106 |
elif not matching and not installed: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2107 |
# The exclude dependency doesn't allow any |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2108 |
# version of the package that is proposed. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2109 |
raise DependencyException( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2110 |
_TRIM_INSTALLED_EXCLUDE, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2111 |
(N_("Package contains 'exclude' dependency " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2112 |
"{0} on proposed package"), (fstr,))) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2113 |
else: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2114 |
# All versions of the package allowed by the |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2115 |
# exclude dependency were trimmed by other |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2116 |
# dependencies. If changed, update _fmri_errors |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2117 |
# _TRIM_DEP_TRIMMED. |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2118 |
raise DependencyException( |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2119 |
_TRIM_DEP_TRIMMED, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2120 |
(N_("No version allowed by 'exclude' " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2121 |
"dependency {0} could be installed"), |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2122 |
(fstr,)), matching) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2123 |
# not reached |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2124 |
elif dtype == "incorporate": |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2125 |
matching, nonmatching = \ |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2126 |
self.__comb_auto_fmris(fmri, dotrim=False, |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2127 |
obsolete_ok=obsolete_ok) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2128 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2129 |
# check if allowing obsolete packages helps |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2130 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2131 |
elif obsolete_ok == False: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2132 |
# see if allowing obsolete pkgs gets us some matches |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2133 |
if len(fmris) == 1: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2134 |
matching, nonmatching = \ |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2135 |
self.__comb_newer_fmris(fmri, dotrim, |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2136 |
obsolete_ok=True) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2137 |
else: |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2138 |
matching = [] |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2139 |
nonmatching = [] |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2140 |
for f in fmris: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2141 |
m, nm = self.__comb_newer_fmris(f, |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2142 |
dotrim, obsolete_ok=True) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2143 |
matching.extend(m) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2144 |
nonmatching.extend(nm) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2145 |
if matching: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2146 |
if len(fmris) == 1: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2147 |
raise DependencyException( |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2148 |
_TRIM_DEP_OBSOLETE, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2149 |
(N_("All acceptable versions of " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2150 |
"'{0}' dependency on {1} are " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2151 |
"obsolete"), (dtype, fstr))) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2152 |
else: |
3213
674fcb41d554
21130996 pkg solver doesn't print error if pkg has two issues and one is not print-worthy
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3197
diff
changeset
|
2153 |
sfmris = frozenset([ |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2154 |
fmri.get_fmri(anarchy=True, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2155 |
include_build=False, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2156 |
include_scheme=False) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2157 |
for f in fmris |
3213
674fcb41d554
21130996 pkg solver doesn't print error if pkg has two issues and one is not print-worthy
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3197
diff
changeset
|
2158 |
]) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2159 |
raise DependencyException( |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2160 |
_TRIM_DEP_OBSOLETE, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2161 |
(N_("All acceptable versions of " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2162 |
"'{0}' dependencies on {1} are " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2163 |
"obsolete"), (dtype, sfmris))) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2164 |
# something else is wrong |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2165 |
matching, nonmatching = self.__comb_newer_fmris(fmri, |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2166 |
dotrim=False, obsolete_ok=obsolete_ok) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2167 |
else: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2168 |
# try w/o trimming anything |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2169 |
matching, nonmatching = self.__comb_newer_fmris(fmri, |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2170 |
dotrim=False, obsolete_ok=obsolete_ok) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2171 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2172 |
if not matching: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2173 |
raise DependencyException(_TRIM_DEP_MISSING, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2174 |
(N_("No version for '{0}' dependency on {1} can " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2175 |
"be found"), (dtype, fstr))) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2176 |
else: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2177 |
# If changed, update _fmri_errors _TRIM_DEP_TRIMMED. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2178 |
raise DependencyException(_TRIM_DEP_TRIMMED, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2179 |
(N_("No version matching '{0}' dependency {1} " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2180 |
"can be installed"), |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2181 |
(dtype, fstr)), matching) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2182 |
|
2925
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2183 |
def __relax_parent_self_constrained(self, excludes, \ |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2184 |
ignore_inst_parent_deps): |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2185 |
"""If we're a child image then we need to relax packages |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2186 |
that are dependent upon themselves in the parent image. This |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2187 |
is necessary to keep those packages in sync.""" |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2188 |
|
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2189 |
relax_pkgs = set() |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2190 |
|
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2191 |
# check if we're a child image. |
3277
1d44a3c7c415
21211465 zoneadm attach -U tries to overcome GZ constraints and fails
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3260
diff
changeset
|
2192 |
if not self.__is_child(): |
2925
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2193 |
return relax_pkgs |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2194 |
|
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2195 |
# if we're ignoring parent dependencies there is no reason to |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2196 |
# relax install-holds in packages constrained by those |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2197 |
# dependencies. |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2198 |
if ignore_inst_parent_deps: |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2199 |
return relax_pkgs |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2200 |
|
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2201 |
for f in self.__installed_fmris: |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2202 |
for da in self.__get_dependency_actions(f, excludes): |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2203 |
if da.attrs["type"] != "parent": |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2204 |
continue |
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
2205 |
self.__linked_pkgs.add(f) |
2925
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2206 |
if pkg.actions.depend.DEPEND_SELF in \ |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2207 |
da.attrlist("fmri"): |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2208 |
relax_pkgs.add(f.pkg_name) |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2209 |
break |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2210 |
|
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2211 |
return relax_pkgs |
3e1fbeb31067
15743323 linked images should propagate incorporation facet version locks
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2905
diff
changeset
|
2212 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2213 |
def __generate_dependency_errors(self, fmri_list, excludes=EmptyI): |
2207
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
2214 |
""" Returns a list of strings describing why fmris cannot |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2215 |
be installed, or returns an empty list if installation |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2216 |
is possible. """ |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2217 |
ret = [] |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2218 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2219 |
needs_processing = set(fmri_list) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2220 |
already_processed = set() |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2221 |
already_seen = set() |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2222 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2223 |
while needs_processing: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2224 |
fmri = needs_processing.pop() |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2225 |
errors, newfmris = self.__do_error_work(fmri, |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2226 |
excludes, already_seen) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2227 |
ret.extend(errors) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2228 |
already_processed.add(fmri) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2229 |
needs_processing |= newfmris - already_processed |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2230 |
return ret |
1601
e0922fa5b56b
12817 Traceback installing a package which depends(?) on an installed package from a disabled publisher
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1505
diff
changeset
|
2231 |
|
2207
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
2232 |
def get_trim_errors(self): |
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
2233 |
"""Returns a list of strings for all FMRIs evaluated by the |
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
2234 |
solver explaining why they were rejected. (All packages |
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
2235 |
found in solver's trim database.)""" |
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
2236 |
|
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
2237 |
# At a minimum, a solve_*() method must have been called first. |
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
2238 |
assert self.__state != SOLVER_INIT |
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
2239 |
assert DebugValues["plan"] |
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
2240 |
|
3234
3a90dc0b66c9
21188662 use six library for python 3 migration
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3213
diff
changeset
|
2241 |
return self.__fmri_list_errors(six.iterkeys(self.__trim_dict), |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2242 |
already_seen=set(), verbose=True) |
2207
029ca014fced
17797 plan debugging should also display solver trim database
Shawn Walker <shawn.walker@oracle.com>
parents:
2202
diff
changeset
|
2243 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2244 |
def __check_installed(self): |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2245 |
"""Generate list of strings describing why currently |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2246 |
installed packages cannot be installed, or empty list""" |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2247 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2248 |
# Used to de-dup errors. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2249 |
already_seen = set() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2250 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2251 |
ret = [] |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2252 |
for f in self.__installed_fmris - self.__removal_fmris: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2253 |
matching = self.__comb_newer_fmris(f, dotrim=True, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2254 |
obsolete_ok=True)[0] |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2255 |
if matching: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2256 |
continue |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2257 |
# no matches when disallowed packages are excluded |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2258 |
matching = self.__comb_newer_fmris(f, dotrim=False, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2259 |
obsolete_ok=True)[0] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2260 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2261 |
ret.append(_("No suitable version of installed package " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2262 |
"{0} found").format(f.pkg_name)) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2263 |
ret.extend(self.__fmri_list_errors(matching, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2264 |
already_seen=already_seen)) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2265 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2266 |
return ret |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2267 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2268 |
def __fmri_list_errors(self, fmri_list, indent="", already_seen=None, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2269 |
omit=None, verbose=False): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2270 |
"""Given a list of FMRIs, return indented strings indicating why |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2271 |
they were rejected.""" |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2272 |
ret = [] |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2273 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2274 |
if omit is None: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2275 |
omit = set() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2276 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2277 |
fmri_reasons = [] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2278 |
skey = operator.attrgetter('pkg_name') |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2279 |
for f in sorted(fmri_list, key=skey): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2280 |
res = self.__fmri_errors(f, indent, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2281 |
already_seen=already_seen, omit=omit, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2282 |
verbose=verbose) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2283 |
# If None was returned, that implies that all of the |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2284 |
# reasons the FMRI was rejected aren't interesting. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2285 |
if res is not None: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2286 |
fmri_reasons.append(res) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2287 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2288 |
last_run = [] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2289 |
def collapse_fmris(): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2290 |
"""Collapse a range of FMRIs into format: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2291 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2292 |
first_fmri |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2293 |
to |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2294 |
last_fmri |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2295 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2296 |
...based on verbose state.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2297 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2298 |
if last_run: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2299 |
indent = last_run.pop(0) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2300 |
if verbose or len(last_run) <= 1: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2301 |
ret.extend(last_run) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2302 |
elif (not self.__depend_ts and |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2303 |
ret[-1].endswith(last_run[-1].strip())): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2304 |
# If timestamps are not being displayed |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2305 |
# and the last FMRI is the same as the |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2306 |
# first in the range then we only need |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2307 |
# to show the first. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2308 |
pass |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2309 |
else: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2310 |
ret.append(indent + " " + _("to")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2311 |
ret.append(last_run[-1]) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2312 |
last_run[::] = [] |
1601
e0922fa5b56b
12817 Traceback installing a package which depends(?) on an installed package from a disabled publisher
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1505
diff
changeset
|
2313 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2314 |
last_reason = None |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2315 |
for fmri_id, reason in fmri_reasons: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2316 |
if reason == last_reason: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2317 |
indent = " " * len(fmri_id[0]) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2318 |
if not last_run: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2319 |
last_run.append(indent) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2320 |
last_run.append(indent + fmri_id[1]) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2321 |
continue |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2322 |
else: # ends run |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2323 |
collapse_fmris() |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2324 |
if last_reason: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2325 |
ret.extend(last_reason) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2326 |
ret.append(fmri_id[0] + fmri_id[1]) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2327 |
last_reason = reason |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2328 |
if last_reason: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2329 |
collapse_fmris() |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2330 |
ret.extend(last_reason) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2331 |
return ret |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2332 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2333 |
def __fmri_errors(self, fmri, indent="", already_seen=None, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2334 |
omit=None, verbose=False): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2335 |
"""return a list of strings w/ indents why this fmri is not |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2336 |
suitable""" |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2337 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2338 |
if already_seen is None: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2339 |
already_seen = set() |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2340 |
if omit is None: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2341 |
omit = set() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2342 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2343 |
fmri_id = [_("{0} Reject: ").format(indent)] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2344 |
if not verbose and not self.__depend_ts: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2345 |
# Exclude build and timestamp for brevity. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2346 |
fmri_id.append(fmri.get_short_fmri()) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2347 |
else: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2348 |
# Include timestamp for clarity if any dependency |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2349 |
# included a timestamp; exclude build for brevity. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2350 |
fmri_id.append(fmri.get_fmri(include_build=False)) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2351 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2352 |
tag = _("Reason:") |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2353 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2354 |
if fmri in already_seen: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2355 |
if fmri in omit: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2356 |
return |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2357 |
|
2826
cae308eb6426
7185135 i18n messages should use parameterized values
Tim Foster <tim.s.foster@oracle.com>
parents:
2795
diff
changeset
|
2358 |
# note to translators: 'indent' will be a series of |
cae308eb6426
7185135 i18n messages should use parameterized values
Tim Foster <tim.s.foster@oracle.com>
parents:
2795
diff
changeset
|
2359 |
# whitespaces. |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2360 |
reason = _("{indent} {tag} [already rejected; see " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2361 |
"above]").format(indent=indent, tag=tag) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2362 |
return fmri_id, [reason] |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2363 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2364 |
already_seen.add(fmri) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2365 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2366 |
if not verbose: |
3213
674fcb41d554
21130996 pkg solver doesn't print error if pkg has two issues and one is not print-worthy
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3197
diff
changeset
|
2367 |
# By default, omit packages from errors that were only |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2368 |
# rejected due to a newer version being installed, or |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2369 |
# because they didn't match user-specified input. It's |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2370 |
# tempting to omit _TRIM_REJECT here as well, but that |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2371 |
# leads to some very mysterious errors for |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2372 |
# administrators if the only reason an operation failed |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2373 |
# is because a required dependency was rejected. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2374 |
for reason_id, reason_t, fmris in \ |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2375 |
self.__trim_dict[fmri]: |
3213
674fcb41d554
21130996 pkg solver doesn't print error if pkg has two issues and one is not print-worthy
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3197
diff
changeset
|
2376 |
if reason_id not in (_TRIM_INSTALLED_NEWER, |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2377 |
_TRIM_PROPOSED_PUB, _TRIM_PROPOSED_VER): |
3213
674fcb41d554
21130996 pkg solver doesn't print error if pkg has two issues and one is not print-worthy
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3197
diff
changeset
|
2378 |
break |
674fcb41d554
21130996 pkg solver doesn't print error if pkg has two issues and one is not print-worthy
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3197
diff
changeset
|
2379 |
else: |
674fcb41d554
21130996 pkg solver doesn't print error if pkg has two issues and one is not print-worthy
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3197
diff
changeset
|
2380 |
omit.add(fmri) |
674fcb41d554
21130996 pkg solver doesn't print error if pkg has two issues and one is not print-worthy
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3197
diff
changeset
|
2381 |
return |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2382 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2383 |
ms = [] |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2384 |
for reason_id, reason_t, fmris in sorted( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2385 |
self.__trim_dict[fmri]): |
3213
674fcb41d554
21130996 pkg solver doesn't print error if pkg has two issues and one is not print-worthy
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3197
diff
changeset
|
2386 |
|
674fcb41d554
21130996 pkg solver doesn't print error if pkg has two issues and one is not print-worthy
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3197
diff
changeset
|
2387 |
if not verbose: |
674fcb41d554
21130996 pkg solver doesn't print error if pkg has two issues and one is not print-worthy
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3197
diff
changeset
|
2388 |
if reason_id in (_TRIM_INSTALLED_NEWER, |
674fcb41d554
21130996 pkg solver doesn't print error if pkg has two issues and one is not print-worthy
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3197
diff
changeset
|
2389 |
_TRIM_PROPOSED_PUB, _TRIM_PROPOSED_VER): |
674fcb41d554
21130996 pkg solver doesn't print error if pkg has two issues and one is not print-worthy
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3197
diff
changeset
|
2390 |
continue |
674fcb41d554
21130996 pkg solver doesn't print error if pkg has two issues and one is not print-worthy
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3197
diff
changeset
|
2391 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2392 |
if isinstance(reason_t, tuple): |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2393 |
reason = _(reason_t[0]).format(*reason_t[1]) |
1601
e0922fa5b56b
12817 Traceback installing a package which depends(?) on an installed package from a disabled publisher
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1505
diff
changeset
|
2394 |
else: |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2395 |
reason = _(reason_t) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2396 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2397 |
ms.append("{0} {1} {2}".format(indent, tag, reason)) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2398 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2399 |
if reason in already_seen: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2400 |
# If we've already explained why something was |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2401 |
# rejected before, skip it. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2402 |
continue |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2403 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2404 |
# Use the reason text and not the id, as the text is |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2405 |
# specific to a particular rejection. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2406 |
already_seen.add(reason) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2407 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2408 |
# By default, don't include error output for |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2409 |
# dependencies on incorporation packages that don't |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2410 |
# specify a version since any version-specific |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2411 |
# dependencies will have caused a rejection elsewhere. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2412 |
if (not verbose and |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2413 |
reason_id == _TRIM_DEP_TRIMMED and |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2414 |
len(reason_t[1]) == 2): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2415 |
dtype, fstr = reason_t[1] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2416 |
if dtype == "require" and "@" not in fstr: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2417 |
# Assumes fstr does not include |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2418 |
# publisher or scheme. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2419 |
if fstr in self.__known_incs: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2420 |
continue |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2421 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2422 |
# Add the reasons why each package version that |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2423 |
# satisfied a dependency was rejected. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2424 |
res = self.__fmri_list_errors([ |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2425 |
f |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2426 |
for f in sorted(fmris) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2427 |
if f not in already_seen |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2428 |
if verbose or f not in omit |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2429 |
], |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2430 |
indent + " ", |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2431 |
already_seen=already_seen, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2432 |
omit=omit, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2433 |
verbose=verbose |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2434 |
) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2435 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2436 |
if res: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2437 |
ms.append(indent + " " + ("-" * 40)) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2438 |
ms.extend(res) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2439 |
ms.append(indent + " " + ("-" * 40)) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2440 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2441 |
return fmri_id, ms |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
2442 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2443 |
def __do_error_work(self, fmri, excludes, already_seen): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2444 |
"""Private helper function used by __generate_dependency_errors |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2445 |
to determine why packages were rejected.""" |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2446 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2447 |
needs_processing = set() |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2448 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2449 |
if fmri in self.__trim_dict: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2450 |
return self.__fmri_list_errors([fmri], |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2451 |
already_seen=already_seen), needs_processing |
1688
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
2452 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2453 |
for a in self.__get_dependency_actions(fmri, excludes): |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2454 |
try: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2455 |
matching = self.__parse_dependency(a, fmri, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2456 |
check_req=True)[1] |
3171
525f5bdb3f62
20434301 change exception handling syntax for python 3 migration
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3160
diff
changeset
|
2457 |
except DependencyException as e: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2458 |
self.__trim(fmri, e.reason_id, e.reason, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2459 |
fmri_adds=e.fmris) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2460 |
s = _("No suitable version of required package " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2461 |
"{0} found:").format(fmri.pkg_name) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2462 |
return ([s] + self.__fmri_list_errors([fmri], |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2463 |
already_seen=already_seen), |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2464 |
set()) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2465 |
needs_processing |= matching |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2466 |
return [], needs_processing |
1601
e0922fa5b56b
12817 Traceback installing a package which depends(?) on an installed package from a disabled publisher
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1505
diff
changeset
|
2467 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2468 |
# clause generation routines |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2469 |
def __gen_dependency_clauses(self, fmri, da, dotrim=True): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2470 |
"""Return clauses to implement this dependency""" |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2471 |
nm, m, cond, dtype, _req, _depf = self.__parse_dependency(da, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2472 |
fmri, dotrim) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2473 |
|
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2474 |
if dtype == "require" or dtype == "require-any": |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2475 |
return self.__gen_require_clauses(fmri, m) |
2228
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
2476 |
elif dtype == "group": |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
2477 |
if not m and not nm: |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
2478 |
return [] # no clauses needed; pkg avoided |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
2479 |
else: |
5319ee47781d
2774 new depend action behavior: follow if possible
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2207
diff
changeset
|
2480 |
return self.__gen_require_clauses(fmri, m) |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2481 |
elif dtype == "conditional": |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2482 |
return self.__gen_require_conditional_clauses(fmri, m, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2483 |
cond) |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2484 |
elif dtype in ["origin", "parent"]: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2485 |
# handled by trimming proposed set, not by solver |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2486 |
return [] |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2487 |
else: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2488 |
return self.__gen_negation_clauses(fmri, nm) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2489 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2490 |
def __gen_highlander_clauses(self, fmri_list): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2491 |
"""Return a list of clauses that specifies only one or zero |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2492 |
of the fmris in fmri_list may be installed. This prevents |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2493 |
multiple versions of the same package being installed |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2494 |
at once""" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2495 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2496 |
# pair wise negation |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
2497 |
# if a has 4 versions, we need |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2498 |
# [ |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2499 |
# [-a.1, -a.2], |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
2500 |
# [-a.1, -a.3], |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2501 |
# [-a.1, -a.4], |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2502 |
# [-a.2, -a.3], |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2503 |
# [-a.2, -a.4], |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2504 |
# [-a.3, -a.4] |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2505 |
# ] |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2506 |
# n*(n-1)/2 algorithms suck |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2507 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2508 |
if len(fmri_list) == 1: # avoid generation of singletons |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2509 |
return [] |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2510 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2511 |
id_list = [ -self.__getid(fmri) for fmri in fmri_list] |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2512 |
l = len(id_list) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2513 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2514 |
return [ |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2515 |
[id_list[i], id_list[j]] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2516 |
for i in range(l-1) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2517 |
for j in range(i+1, l) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2518 |
] |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2519 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2520 |
def __gen_require_clauses(self, fmri, matching_fmri_list): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2521 |
"""generate clause for require dependency: if fmri is |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2522 |
installed, one of fmri_list is required""" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2523 |
# if a.1 requires b.2, b.3 or b.4: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2524 |
# !a.1 | b.2 | b.3 | b.4 |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2525 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2526 |
return [ |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2527 |
[-self.__getid(fmri)] + |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2528 |
[self.__getid(fmri) for fmri in matching_fmri_list] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2529 |
] |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2530 |
|
2183
21ae45e8dfcf
17581 There should be a way of removing a package as part of upgrade
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2164
diff
changeset
|
2531 |
def __gen_require_conditional_clauses(self, fmri, matching_fmri_list, |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2532 |
conditional_fmri_list): |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2533 |
"""Generate clauses for conditional dependency: if |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2534 |
fmri is installed and one of conditional_fmri_list is installed, |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2535 |
one of fmri list is required""" |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2536 |
# if a.1 requires c.2, c.3, c.4 if b.2 or newer is installed: |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2537 |
# !a.1 | !b.2 | c.2 | c.3 | c.4 |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2538 |
# !a.1 | !b.3 | c.2 | c.3 | c.4 |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2539 |
mlist = [self.__getid(f) for f in matching_fmri_list] |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2540 |
|
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2541 |
return [ |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2542 |
[-self.__getid(fmri)] + [-self.__getid(c)] + mlist |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2543 |
for c in conditional_fmri_list |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2544 |
] |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2545 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2546 |
def __gen_negation_clauses(self, fmri, non_matching_fmri_list): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2547 |
""" generate clauses for optional, incorporate and |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2548 |
exclude dependencies to exclude non-acceptable versions""" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2549 |
# if present, fmri must match ok list |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2550 |
# if a.1 optionally requires b.3: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2551 |
# [ |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2552 |
# [!a.1 | !b.1], |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2553 |
# [!a.1 | !b.2] |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2554 |
# ] |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2555 |
fmri_id = self.__getid(fmri) |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2556 |
return [ |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2557 |
[-fmri_id, -self.__getid(f)] |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2558 |
for f in non_matching_fmri_list |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2559 |
] |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2560 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2561 |
def __gen_one_of_these_clauses(self, fmri_list): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2562 |
"""generate clauses such that at least one of the fmri_list |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2563 |
members gets installed""" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2564 |
# If a has four versions, |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2565 |
# a.1|a.2|a.3|a.4 |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2566 |
# plus highlander clauses |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2567 |
assert fmri_list, "Empty list of which one is required" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2568 |
return [[self.__getid(fmri) for fmri in fmri_list]] |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2569 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2570 |
def __addclauses(self, clauses): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2571 |
"""add list of clause lists to solver""" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2572 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2573 |
for c in clauses: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2574 |
try: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2575 |
if not self.__solver.add_clause(c): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2576 |
self.__addclause_failure = True |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2577 |
self.__clauses += 1 |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
2578 |
except TypeError: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2579 |
raise TypeError(_("List of integers, not {0}, " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2580 |
"expected").format(c)) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2581 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2582 |
def __get_child_holds(self, install_holds, pkg_cons, inc_set): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2583 |
"""Returns the list of installed packages that are incorporated |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2584 |
by packages, delivering an install-hold, and that do not have an |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2585 |
install-hold but incorporate packages. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2586 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2587 |
'install_holds' is a dict of installed package stems indicating |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2588 |
the pkg.depend.install-hold delivered by the package that are |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2589 |
not being removed. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2590 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2591 |
'pkg_cons' is a dict of installed package fmris and the |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2592 |
incorporate constraints they deliver. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2593 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2594 |
'inc_set' is a list of packages that incorporate other packages |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2595 |
and deliver install-hold actions. It acts as the starting point |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2596 |
where we fan out to find "child" packages that incorporate other |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2597 |
packages.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2598 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2599 |
unprocessed = set(inc_set) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2600 |
processed = set() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2601 |
proc_cons = set() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2602 |
incorps = set() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2603 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2604 |
while unprocessed: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2605 |
self.__progress() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2606 |
ifmri = unprocessed.pop() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2607 |
processed.add(ifmri) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2608 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2609 |
if ifmri in self.__removal_fmris: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2610 |
# This package will be removed, so |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2611 |
# nothing to do. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2612 |
continue |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2613 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2614 |
cons = pkg_cons.get(ifmri, []) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2615 |
if cons and ifmri.pkg_name not in install_holds: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2616 |
# If this package incorporates other |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2617 |
# packages and does not deliver an |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2618 |
# install-hold, then consider it a |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2619 |
# 'child' hold. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2620 |
incorps.add(ifmri) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2621 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2622 |
# Find all incorporation constraints that result |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2623 |
# in only one possible match. If there is only |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2624 |
# one possible match for an incorporation |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2625 |
# constraint then that package will not be |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2626 |
# upgraded and should be checked for |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2627 |
# incorporation constraints. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2628 |
for con in cons: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2629 |
if (con.pkg_name in install_holds or |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2630 |
con in proc_cons): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2631 |
# Already handled. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2632 |
continue |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2633 |
matching = list( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2634 |
self.__comb_auto_fmris(con)[0]) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2635 |
if len(matching) == 1: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2636 |
if matching[0] not in processed: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2637 |
unprocessed.add(matching[0]) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2638 |
else: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2639 |
# Track which constraints have |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2640 |
# already been processed |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2641 |
# seperately from which |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2642 |
# package FMRIs have been |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2643 |
# processed to avoid (unlikely) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2644 |
# collision. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2645 |
proc_cons.add(con) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2646 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2647 |
return incorps |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2648 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2649 |
def __get_installed_upgradeable_incorps(self, excludes=EmptyI): |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2650 |
"""Return the latest version of installed upgradeable |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2651 |
incorporations w/ install holds""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2652 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2653 |
installed_incs = [] |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2654 |
for f in self.__installed_fmris - self.__removal_fmris: |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2655 |
for d in self.__catalog.get_entry_actions(f, |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2656 |
[catalog.Catalog.DEPENDENCY], excludes=excludes): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2657 |
if (d.name == "set" and d.attrs["name"] == |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2658 |
"pkg.depend.install-hold"): |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2659 |
installed_incs.append(f) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2660 |
|
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2661 |
ret = [] |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2662 |
for f in installed_incs: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2663 |
matching = self.__comb_newer_fmris(f, dotrim=False)[0] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2664 |
latest = sorted(matching, reverse=True)[0] |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2665 |
if latest != f: |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2666 |
ret.append(latest) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2667 |
return ret |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2668 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2669 |
def __get_installed_unbound_inc_list(self, proposed_pkgs, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2670 |
excludes=EmptyI): |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
2671 |
"""Return the list of incorporations that are to not to change |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2672 |
during this install operation, and the lists of fmris they |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2673 |
constrain.""" |
1731
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2674 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2675 |
incorps = set() |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2676 |
versioned_dependents = set() |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2677 |
pkg_cons = {} |
1731
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2678 |
install_holds = {} |
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2679 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2680 |
# Determine installed packages that contain incorporation |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2681 |
# dependencies, those packages that are depended on by explict |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2682 |
# version, and those that have pkg.depend.install-hold values. |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2683 |
for f in self.__installed_fmris - self.__removal_fmris: |
1731
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2684 |
for d in self.__catalog.get_entry_actions(f, |
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2685 |
[catalog.Catalog.DEPENDENCY], |
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2686 |
excludes=excludes): |
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2687 |
if d.name == "depend": |
2608
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
2688 |
fmris = [] |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
2689 |
for fl in d.attrlist("fmri"): |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
2690 |
try: |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
2691 |
tmp = self.__fmridict[ |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
2692 |
fl] |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
2693 |
except KeyError: |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
2694 |
tmp = pkg.fmri.PkgFmri( |
2958
868e07939116
16851082 build_release (aka build version) should not be displayed
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
2925
diff
changeset
|
2695 |
fl) |
2608
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
2696 |
self.__fmridict[fl] = \ |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
2697 |
tmp |
2231afa43dc7
19104 CliTestCase.pkgsend needs to display traceback when pkgsend tracesback
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2568
diff
changeset
|
2698 |
fmris.append(tmp) |
1731
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2699 |
if d.attrs["type"] == "incorporate": |
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2700 |
incorps.add(f.pkg_name) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2701 |
pkg_cons.setdefault(f, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2702 |
[]).append(fmris[0]) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2703 |
versioned_dependents.update( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2704 |
fmri.pkg_name |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2705 |
for fmri in fmris |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2706 |
if fmri.version is not None |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2707 |
) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2708 |
elif (d.name == "set" and d.attrs["name"] == |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2709 |
"pkg.depend.install-hold"): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2710 |
install_holds[f.pkg_name] = \ |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2711 |
d.attrs["value"] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2712 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2713 |
# find install holds that appear on command line and are thus |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2714 |
# relaxed |
1731
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2715 |
relaxed_holds = set([ |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2716 |
install_holds[name] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2717 |
for name in proposed_pkgs |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2718 |
if name in install_holds |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2719 |
]) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2720 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2721 |
# add any other install holds that are relaxed because they have |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2722 |
# values that start w/ the relaxed ones... |
1731
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2723 |
relaxed_holds |= set([ |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2724 |
hold |
3234
3a90dc0b66c9
21188662 use six library for python 3 migration
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3213
diff
changeset
|
2725 |
for hold in six.itervalues(install_holds) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2726 |
if [ r for r in relaxed_holds if hold.startswith(r + ".") ] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2727 |
]) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2728 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2729 |
# Expand the list of install holds to include packages that are |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2730 |
# incorporated by packages delivering an install-hold and that |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2731 |
# do not have an install-hold, but incorporate packages. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2732 |
child_holds = self.__get_child_holds(install_holds, pkg_cons, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2733 |
set(inc for inc in pkg_cons |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2734 |
if inc.pkg_name in install_holds and |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2735 |
install_holds[inc.pkg_name] not in relaxed_holds |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2736 |
) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2737 |
) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2738 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2739 |
for child_hold in child_holds: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2740 |
assert child_hold.pkg_name not in install_holds |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2741 |
install_holds[child_hold.pkg_name] = child_hold.pkg_name |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2742 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2743 |
# versioned_dependents contains all the packages that are |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2744 |
# depended on w/ a explicit version. We now modify this list so |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2745 |
# that it does not contain any packages w/ install_holds, unless |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2746 |
# those holds were relaxed. |
1731
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2747 |
versioned_dependents -= set([ |
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2748 |
pkg_name |
3234
3a90dc0b66c9
21188662 use six library for python 3 migration
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
3213
diff
changeset
|
2749 |
for pkg_name, hold_value in six.iteritems(install_holds) |
1731
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2750 |
if hold_value not in relaxed_holds |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2751 |
]) |
1731
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2752 |
# Build the list of fmris that 1) contain incorp. dependencies |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2753 |
# 2) are not in the set of versioned_dependents and 3) do not |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2754 |
# explicitly appear on the install command line. |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2755 |
installed_dict = self.__installed_dict |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2756 |
ret = [ |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2757 |
installed_dict[pkg_name] |
1842
b71de8f65cc8
15176 imageplan keeps solver cache and catalog data too long
Shawn Walker <shawn.walker@oracle.com>
parents:
1813
diff
changeset
|
2758 |
for pkg_name in incorps - versioned_dependents |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2759 |
if pkg_name not in proposed_pkgs |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2760 |
if installed_dict[pkg_name] not in self.__removal_fmris |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2761 |
] |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2762 |
# For each incorporation above that will not change, return a |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2763 |
# list of the fmris that incorporation constrains |
1731
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2764 |
con_lists = [ |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2765 |
[ i for i in pkg_cons[inc] ] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2766 |
for inc in ret |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2767 |
] |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2768 |
|
1731
a76f8a1fc049
13241 pkg install triggers system incorporation update
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1688
diff
changeset
|
2769 |
return ret, con_lists |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2770 |
|
2164
a84726bfb9fc
17489 pkg install/update ignores package versions from publishers other than installed if installed publisher allowed by pattern
Shawn Walker <shawn.walker@oracle.com>
parents:
2144
diff
changeset
|
2771 |
def __mark_pub_trimmed(self, pkg_name): |
a84726bfb9fc
17489 pkg install/update ignores package versions from publishers other than installed if installed publisher allowed by pattern
Shawn Walker <shawn.walker@oracle.com>
parents:
2144
diff
changeset
|
2772 |
"""Record that a given package stem has been trimmed based on |
a84726bfb9fc
17489 pkg install/update ignores package versions from publishers other than installed if installed publisher allowed by pattern
Shawn Walker <shawn.walker@oracle.com>
parents:
2144
diff
changeset
|
2773 |
publisher.""" |
a84726bfb9fc
17489 pkg install/update ignores package versions from publishers other than installed if installed publisher allowed by pattern
Shawn Walker <shawn.walker@oracle.com>
parents:
2144
diff
changeset
|
2774 |
|
a84726bfb9fc
17489 pkg install/update ignores package versions from publishers other than installed if installed publisher allowed by pattern
Shawn Walker <shawn.walker@oracle.com>
parents:
2144
diff
changeset
|
2775 |
self.__pub_trim[pkg_name] = True |
a84726bfb9fc
17489 pkg install/update ignores package versions from publishers other than installed if installed publisher allowed by pattern
Shawn Walker <shawn.walker@oracle.com>
parents:
2144
diff
changeset
|
2776 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2777 |
def __filter_publishers(self, pkg_name): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2778 |
"""Given a list of fmris for various versions of |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2779 |
a package from various publishers, trim those |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2780 |
that are not suitable""" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2781 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2782 |
if pkg_name in self.__pub_trim: # already done |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2783 |
return |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2784 |
self.__mark_pub_trimmed(pkg_name) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2785 |
|
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2786 |
fmri_list = self.__get_catalog_fmris(pkg_name) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2787 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2788 |
if pkg_name in self.__publisher: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2789 |
acceptable_pubs = [self.__publisher[pkg_name]] |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2790 |
if pkg_name in self.__installed_dict: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2791 |
reason_id = _TRIM_PUB_STICKY |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2792 |
reason = (N_("Currently installed package " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2793 |
"'{0}' is from sticky publisher '{1}'."), |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2794 |
(pkg_name, self.__publisher[pkg_name])) |
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2795 |
else: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2796 |
reason_id = _TRIM_PROPOSED_PUB |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2797 |
reason = N_("Package is from publisher other " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2798 |
"than specified one.") |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2799 |
else: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2800 |
# order by pub_rank; choose highest possible tier for |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2801 |
# pkgs; guard against unconfigured publishers in known |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2802 |
# catalog |
2639
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
2803 |
pubs_found = set((f.publisher for f in fmri_list)) |
1688
b46c4942b045
13846 pkg awakes after reboot to discover that it has made a mistake
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1601
diff
changeset
|
2804 |
ranked = sorted([ |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2805 |
(self.__pub_ranks[p][0], p) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2806 |
for p in pubs_found |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2807 |
if self.__pub_ranks.get(p, (0, False, False))[2] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2808 |
]) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2809 |
acceptable_pubs = [ |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2810 |
r[1] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2811 |
for r in ranked |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2812 |
if r[0] == ranked[0][0] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2813 |
] |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2814 |
reason_id = _TRIM_PUB_RANK |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2815 |
if acceptable_pubs: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2816 |
reason = (N_("Higher ranked publisher {0} was " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2817 |
"selected"), (acceptable_pubs[0],)) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2818 |
else: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2819 |
reason = N_("Package publisher is ranked lower " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2820 |
"in search order") |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2821 |
|
1601
e0922fa5b56b
12817 Traceback installing a package which depends(?) on an installed package from a disabled publisher
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
1505
diff
changeset
|
2822 |
# allow installed packages to co-exist to meet dependency reqs. |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2823 |
# in case new publisher not proper superset of original. avoid |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2824 |
# multiple publishers w/ the exact same fmri to prevent |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2825 |
# thrashing in the solver due to many equiv. solutions. |
2639
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
2826 |
inst_f = self.__installed_dict.get(pkg_name) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2827 |
self.__trim([ |
2639
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
2828 |
f |
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
2829 |
for f in fmri_list |
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
2830 |
if (f.publisher not in acceptable_pubs and |
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
2831 |
(not inst_f or f != inst_f)) or |
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
2832 |
(inst_f and f.publisher != inst_f.publisher and |
06a370373267
7145683 explore general pkg performance improvements
Shawn Walker <shawn.walker@oracle.com>
parents:
2608
diff
changeset
|
2833 |
f.version == inst_f.version) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2834 |
], reason_id, reason) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2835 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2836 |
# routines to manage the trim dictionary |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2837 |
# trim dictionary contains the reasons an fmri was rejected for |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2838 |
# consideration reason is a tuple of a string w/ format chars and args, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2839 |
# or just a string. fmri_adds are any fmris that caused the rejection |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2840 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2841 |
def __trim(self, fmri_list, reason_id, reason, fmri_adds=EmptyI): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2842 |
"""Remove specified fmri(s) from consideration for specified |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2843 |
reason.""" |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2844 |
|
2693
cfee571ea6d5
7154388 Progress tracking API and functionality improvements
Dan Price <daniel.price@oracle.com>
parents:
2669
diff
changeset
|
2845 |
self.__progress() |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2846 |
try: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2847 |
it = iter(fmri_list) |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2848 |
except TypeError: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2849 |
it = [fmri_list] |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2850 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2851 |
assert reason_id in range(_TRIM_MAX) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2852 |
tup = (reason_id, reason, frozenset(fmri_adds)) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2853 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2854 |
for fmri in it: |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2855 |
self.__trim_dict[fmri].add(tup) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2856 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2857 |
def __trim_older(self, fmri): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2858 |
"""Trim any fmris older than this one""" |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
2859 |
reason = (N_("Newer version {0} is already installed"), (fmri,)) |
3248
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
2860 |
self.__trim(self.__comb_newer_fmris(fmri, dotrim=False)[1] - |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
2861 |
self.__allowed_downgrades, _TRIM_INSTALLED_NEWER, reason) |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2862 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2863 |
def __trim_nonmatching_variants(self, fmri): |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2864 |
"""Trim packages that don't support image architecture or other |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2865 |
image variant.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2866 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2867 |
vd = self.__get_variant_dict(fmri) |
2666
7e8037e15e47
7133915 pkg update leaves out some needed packages
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2658
diff
changeset
|
2868 |
reason = "" |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2869 |
|
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2870 |
for v in self.__variants.keys(): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2871 |
if v in vd and self.__variants[v] not in vd[v]: |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2872 |
if vd == "variant.arch": |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2873 |
reason = N_("Package doesn't support " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2874 |
"image architecture") |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2875 |
else: |
3104
5d93bdf1a849
15704264 variant mismatch message is cryptic
Aditya Tuteja <aditya.tuteja@oracle.com>
parents:
3094
diff
changeset
|
2876 |
reason = (N_("Package supports image " |
3291
37027f7ff904
21267571 solver traceback because Set requires its items to be hashable
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3277
diff
changeset
|
2877 |
"variant {0}={1} but doesn't " |
37027f7ff904
21267571 solver traceback because Set requires its items to be hashable
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3277
diff
changeset
|
2878 |
"support this image's {0}={2}"), |
37027f7ff904
21267571 solver traceback because Set requires its items to be hashable
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3277
diff
changeset
|
2879 |
(v, str(vd[v]), |
37027f7ff904
21267571 solver traceback because Set requires its items to be hashable
Erik Trauschke <Erik.Trauschke@oracle.com>
parents:
3277
diff
changeset
|
2880 |
str(self.__variants[v]))) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2881 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2882 |
self.__trim(fmri, _TRIM_VARIANT, reason) |
2666
7e8037e15e47
7133915 pkg update leaves out some needed packages
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2658
diff
changeset
|
2883 |
return reason == "" |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2884 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2885 |
def __trim_nonmatching_parents1(self, pkg_fmri, fmri): |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2886 |
"""Private helper function for __trim_nonmatching_parents that |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2887 |
trims any pkg_fmri that matches a parent dependency and that is |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2888 |
not installed in the parent image, that is from a different |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2889 |
publisher than the parent image, or that is a different version |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2890 |
than the parent image.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2891 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2892 |
if fmri in self.__parent_pkgs: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2893 |
# exact fmri installed in parent |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2894 |
return True |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2895 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2896 |
if fmri.pkg_name not in self.__parent_dict: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2897 |
# package is not installed in parent |
2901
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2898 |
if self.__is_zone(): |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2899 |
reason = (N_("Package {0} is not installed in " |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2900 |
"global zone."), (fmri.pkg_name,)) |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2901 |
else: |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2902 |
reason = (N_("Package {0} is not installed in " |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2903 |
"parent image."), (fmri.pkg_name,)) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2904 |
self.__trim(pkg_fmri, _TRIM_PARENT_MISSING, reason) |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2905 |
return False |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2906 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2907 |
pf = self.__parent_dict[fmri.pkg_name] |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2908 |
if fmri.publisher and fmri.publisher != pf.publisher: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2909 |
# package is from a different publisher in the parent |
2901
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2910 |
if self.__is_zone(): |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2911 |
reason = (N_("Package in global zone is from " |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2912 |
"a different publisher: {0}"), (pf,)) |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2913 |
else: |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2914 |
reason = (N_("Package in parent is from a " |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2915 |
"different publisher: {0}"), (pf,)) |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2916 |
self.__trim(pkg_fmri, _TRIM_PARENT_PUB, reason) |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2917 |
return False |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2918 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2919 |
if pf.version == fmri.version or pf.version.is_successor( |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2920 |
fmri.version, version.CONSTRAINT_AUTO): |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2921 |
# parent dependency is satisfied |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2922 |
return True |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2923 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2924 |
# version mismatch |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2925 |
if pf.version.is_successor(fmri.version, |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2926 |
version.CONSTRAINT_NONE): |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2927 |
reason_id = _TRIM_PARENT_NEWER |
2901
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2928 |
if self.__is_zone(): |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2929 |
reason = (N_("Global zone has a " |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2930 |
"newer version: {0}"), (pf,)) |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2931 |
else: |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2932 |
reason = (N_("Parent image has a " |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2933 |
"newer version: {0}"), (pf,)) |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2934 |
else: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2935 |
reason_id = _TRIM_PARENT_OLDER |
2901
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2936 |
if self.__is_zone(): |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2937 |
reason = (N_("Global zone has an older " |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2938 |
"version of package: {0}"), (pf,)) |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2939 |
else: |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2940 |
reason = (N_("Parent image has an older " |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
2941 |
"version of package: {0}"), (pf,)) |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2942 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
2943 |
self.__trim(pkg_fmri, reason_id, reason) |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2944 |
return False |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2945 |
|
2734
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
2946 |
def __trim_nonmatching_parents(self, pkg_fmri, excludes, |
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
2947 |
ignore_inst_parent_deps=False): |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2948 |
"""Trim any pkg_fmri that contains a parent dependency that |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2949 |
is not satisfied by the parent image.""" |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2950 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2951 |
# the fmri for the package should include a publisher |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2952 |
assert pkg_fmri.publisher |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2953 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2954 |
# if we're not a child then ignore "parent" dependencies. |
3277
1d44a3c7c415
21211465 zoneadm attach -U tries to overcome GZ constraints and fails
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3260
diff
changeset
|
2955 |
if not self.__is_child(): |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2956 |
return True |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2957 |
|
2734
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
2958 |
# check if we're ignoring parent dependencies for installed |
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
2959 |
# packages. |
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
2960 |
if ignore_inst_parent_deps and \ |
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
2961 |
pkg_fmri in self.__installed_fmris: |
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
2962 |
return True |
013b8ba5a172
7140215 pkg uninstall should probably ignore parent dependencies
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2697
diff
changeset
|
2963 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2964 |
# Find all the fmris that we depend on in our parent. |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2965 |
# Use a set() to eliminate any dups. |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2966 |
pkg_deps = set([ |
2958
868e07939116
16851082 build_release (aka build version) should not be displayed
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
2925
diff
changeset
|
2967 |
pkg.fmri.PkgFmri(f) |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2968 |
for da in self.__get_dependency_actions(pkg_fmri, excludes) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2969 |
if da.attrs["type"] == "parent" |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2970 |
for f in da.attrlist("fmri") |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2971 |
]) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2972 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2973 |
if not pkg_deps: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2974 |
# no parent dependencies. |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2975 |
return True |
3294
6bc144461e5e
15743613 need better error messages for failures caused by synced packages
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3291
diff
changeset
|
2976 |
self.__linked_pkgs.add(pkg_fmri) |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2977 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2978 |
allowed = True |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2979 |
for f in pkg_deps: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2980 |
fmri = f |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2981 |
if f.pkg_name == pkg.actions.depend.DEPEND_SELF: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2982 |
# check if this package depends on itself. |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2983 |
fmri = pkg_fmri |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2984 |
if not self.__trim_nonmatching_parents1(pkg_fmri, fmri): |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2985 |
allowed = False |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2986 |
return allowed |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2987 |
|
3030
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
2988 |
def __trim_nonmatching_origins(self, fmri, excludes, |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
2989 |
exact_install=False, installed_dict_tmp=EmptyDict): |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2990 |
"""Trim any fmri that contains a origin dependency that is |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2991 |
not satisfied by the current image or root-image""" |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
2992 |
|
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2993 |
for da in self.__get_dependency_actions(fmri, excludes): |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2994 |
if da.attrs["type"] != "origin": |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2995 |
continue |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2996 |
|
2958
868e07939116
16851082 build_release (aka build version) should not be displayed
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
2925
diff
changeset
|
2997 |
req_fmri = pkg.fmri.PkgFmri(da.attrs["fmri"]) |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2998 |
|
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
2999 |
if da.attrs.get("root-image", "").lower() == "true": |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3000 |
if req_fmri.pkg_name.startswith( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3001 |
"feature/firmware/"): |
3030
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
3002 |
# this is a firmware dependency |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
3003 |
fw_ok, reason = \ |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
3004 |
self.__firmware.check_firmware(da, |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
3005 |
req_fmri.pkg_name) |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
3006 |
if not fw_ok: |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3007 |
self.__trim(fmri, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3008 |
_TRIM_FIRMWARE, reason) |
3030
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
3009 |
return False |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
3010 |
continue |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3011 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3012 |
if self.__root_fmris is None: |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3013 |
img = pkg.client.image.Image( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3014 |
misc.liveroot(), |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3015 |
allow_ondisk_upgrade=False, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3016 |
user_provided_dir=True, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3017 |
should_exist=True) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3018 |
self.__root_fmris = dict([ |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3019 |
(f.pkg_name, f) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3020 |
for f in img.gen_installed_pkgs() |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3021 |
]) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3022 |
|
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3023 |
installed = self.__root_fmris.get( |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3024 |
req_fmri.pkg_name) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3025 |
reason_id = _TRIM_INSTALLED_ROOT_ORIGIN |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3026 |
reason = (N_("Installed version in root image " |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3027 |
"is too old for origin " "dependency {0}"), |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3028 |
(req_fmri,)) |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
3029 |
else: |
3030
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
3030 |
# Always use the full installed dict for origin |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
3031 |
# dependency. |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
3032 |
if exact_install: |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
3033 |
installed = installed_dict_tmp.get( |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3034 |
req_fmri.pkg_name) |
3030
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
3035 |
else: |
4f12fb27479c
17699233 pkg install could have an option to ignore any installed packages (new subcommand)
Xiaobo Shen <xiaobo.shen@oracle.com>
parents:
3029
diff
changeset
|
3036 |
installed = self.__installed_dict.get( |
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3037 |
req_fmri.pkg_name) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3038 |
reason_id = _TRIM_INSTALLED_ORIGIN |
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
3039 |
reason = (N_("Installed version in image " |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
3040 |
"being upgraded is too old for origin " |
2658
215862b35a26
7157309 origin dependency error message is using the wrong type of format specifier
abhinandan.ekande@oracle.com
parents:
2639
diff
changeset
|
3041 |
"dependency {0}"), (req_fmri,)) |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
3042 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
3043 |
# assumption is that for root-image, publishers align; |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
3044 |
# otherwise these sorts of cross-environment |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
2295
diff
changeset
|
3045 |
# dependencies don't work well |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
3046 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3047 |
if (not installed or not req_fmri.version or |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3048 |
req_fmri.version == installed.version or |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3049 |
installed.version.is_successor(req_fmri.version, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3050 |
version.CONSTRAINT_NONE)): |
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
3051 |
continue |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
3052 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3053 |
self.__trim(fmri, reason_id, reason) |
2197
f0a833446218
13054 solver could emit a directed error message for over-revved incorporated pkgs
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2183
diff
changeset
|
3054 |
|
2084
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
3055 |
return False |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
3056 |
return True |
d591b4ed5cf3
16327 New dependency types desired
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2034
diff
changeset
|
3057 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3058 |
def __trim_unsupported(self, fmri): |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3059 |
"""Indicate given package FMRI is unsupported.""" |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3060 |
self.__trim(fmri, _TRIM_UNSUPPORTED, |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3061 |
N_("Package contains invalid or unsupported actions")) |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3062 |
|
3248
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3063 |
def __get_older_incorp_pkgs(self, fmri, install_holds, excludes=EmptyI, |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3064 |
candidates=None, depth=0): |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3065 |
"""Get all incorporated pkgs for the given 'fmri' whose versions |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3066 |
are older than what is currently installed in the image.""" |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3067 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3068 |
if not candidates: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3069 |
candidates = set() |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3070 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3071 |
if fmri in self.__dg_incorp_cache: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3072 |
candidates |= self.__dg_incorp_cache[fmri] |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3073 |
return candidates |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3074 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3075 |
if depth > 10: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3076 |
# Safeguard against circular dependencies. |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3077 |
# If it happens, just end the recursion tree. |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3078 |
return candidates |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3079 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3080 |
self.__dg_incorp_cache[fmri] = set() |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3081 |
self.__progress() |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3082 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3083 |
# Get all incorporated packages for this fmri. |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3084 |
matching_incorp_sets = [ |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3085 |
m[0] |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3086 |
for m in |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3087 |
self.__get_incorp_nonmatch_dict(fmri,excludes).values() |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3088 |
] |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3089 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3090 |
for df in chain.from_iterable(matching_incorp_sets): |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3091 |
if df.pkg_name not in self.__installed_dict: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3092 |
continue |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3093 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3094 |
# Ignore pkgs which are incorporated at a higher or |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3095 |
# the same version. |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3096 |
inst_ver = self.__installed_dict[df.pkg_name].version |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3097 |
if df.version.is_successor(inst_ver, None) or \ |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3098 |
df.version == inst_ver: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3099 |
continue |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3100 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3101 |
# Do not allow implicit publisher switches |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3102 |
if df.get_publisher() != fmri.get_publisher(): |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3103 |
continue |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3104 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3105 |
# Do not allow pkgs which are marked for removal. |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3106 |
if fmri in self.__removal_fmris: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3107 |
continue |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3108 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3109 |
# Do not allow pkgs with install-holds but filter out |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3110 |
# child holds |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3111 |
install_hold = False |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3112 |
for ha in [ |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3113 |
sa |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3114 |
for sa in self.__get_actions(df, "set") |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3115 |
if sa.attrs["name"] == "pkg.depend.install-hold" |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3116 |
]: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3117 |
install_hold = True |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3118 |
for h in install_holds: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3119 |
if ha.attrs["value"].startswith(h): |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3120 |
# This is a child hold of an |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3121 |
# incorporating pkg, ignore. |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3122 |
install_hold = False |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3123 |
break |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3124 |
if not install_hold: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3125 |
break |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3126 |
if install_hold: |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3127 |
continue |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3128 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3129 |
self.__dg_incorp_cache[fmri].add(df) |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3130 |
candidates.add(df) |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3131 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3132 |
# Check if this pkgs has incorporate deps of its own. |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3133 |
self.__get_older_incorp_pkgs(df, install_holds, |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3134 |
excludes, candidates, depth+1) |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3135 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3136 |
return candidates |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3137 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3138 |
def __allow_incorp_downgrades(self, fmri, excludes=EmptyI): |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3139 |
"""Find packages which have lower versions than installed but |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3140 |
are incorporated by a package in the proposed list.""" |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3141 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3142 |
install_holds = set([ |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3143 |
sa.attrs["value"] |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3144 |
for sa in self.__get_actions(fmri, "set") |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3145 |
if sa.attrs["name"] == "pkg.depend.install-hold" |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3146 |
]) |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3147 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3148 |
# Get all pkgs which are incorporated by 'fmri', |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3149 |
# including nested incorps. |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3150 |
candidates = self.__get_older_incorp_pkgs(fmri, install_holds, |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3151 |
excludes=excludes) |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3152 |
|
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3153 |
return candidates |
30587e6b1c49
17699319 we could make downgrade easier in the case of incorporated packages
Erik Trauschke <erik.trauschke@oracle.com>
parents:
3234
diff
changeset
|
3154 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
3155 |
def __dotrim(self, fmri_list): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
3156 |
"""Return fmri_list trimmed of any fmris in self.__trim_dict""" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
3157 |
|
3094
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3158 |
return [ |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3159 |
f |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3160 |
for f in fmri_list |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3161 |
if f not in self.__trim_dict |
15de2efea709
15618618 solver plan errors could explain incorporation-related failures better
Shawn Walker <shawn.walker@oracle.com>
parents:
3078
diff
changeset
|
3162 |
] |
2901
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
3163 |
|
3277
1d44a3c7c415
21211465 zoneadm attach -U tries to overcome GZ constraints and fails
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3260
diff
changeset
|
3164 |
def __is_child(self): |
1d44a3c7c415
21211465 zoneadm attach -U tries to overcome GZ constraints and fails
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3260
diff
changeset
|
3165 |
"""Return True if this image is a linked image child.""" |
1d44a3c7c415
21211465 zoneadm attach -U tries to overcome GZ constraints and fails
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3260
diff
changeset
|
3166 |
return self.__parent_pkgs is not None |
1d44a3c7c415
21211465 zoneadm attach -U tries to overcome GZ constraints and fails
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
3260
diff
changeset
|
3167 |
|
2901
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
3168 |
def __is_zone(self): |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
3169 |
"""Return True if image is a nonglobal zone""" |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
3170 |
if 'variant.opensolaris.zone' in self.__variants: |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
3171 |
return self.__variants['variant.opensolaris.zone'] == \ |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
3172 |
'nonglobal' |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
3173 |
else: |
2e90c693f302
15960202 'parent image' strings in ngz pkg operations should reference 'global zone'
Albert White <albert.white@oracle.com>
parents:
2826
diff
changeset
|
3174 |
return False |