diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes/package_rpm.bbclass | 7 | ||||
-rw-r--r-- | meta/recipes-devtools/python/python-smartpm/smart-attempt.patch | 59 | ||||
-rw-r--r-- | meta/recipes-devtools/python/python-smartpm_1.4.1.bb | 1 |
3 files changed, 62 insertions, 5 deletions
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass index 8ab42c441e..699d0f200a 100644 --- a/meta/classes/package_rpm.bbclass +++ b/meta/classes/package_rpm.bbclass | |||
@@ -472,11 +472,8 @@ EOF | |||
472 | echo "Attempting $pkgs_to_install" | 472 | echo "Attempting $pkgs_to_install" |
473 | echo "Note: see `dirname ${BB_LOGFILE}`/log.do_${task}_attemptonly.${PID}" | 473 | echo "Note: see `dirname ${BB_LOGFILE}`/log.do_${task}_attemptonly.${PID}" |
474 | translate_oe_to_smart ${sdk_mode} --attemptonly $package_attemptonly | 474 | translate_oe_to_smart ${sdk_mode} --attemptonly $package_attemptonly |
475 | for each_pkg in $pkgs_to_install ; do | 475 | echo "Attempting $pkgs_to_install" >> "`dirname ${BB_LOGFILE}`/log.do_${task}_attemptonly.${PID}" |
476 | # We need to try each package individually as a single dependency failure | 476 | smart --data-dir=${target_rootfs}/var/lib/smart install --attempt -y ${pkgs_to_install} >> "`dirname ${BB_LOGFILE}`/log.do_${task}_attemptonly.${PID}" 2>&1 |
477 | # will break the whole set otherwise. | ||
478 | smart --data-dir=${target_rootfs}/var/lib/smart install -y $each_pkg >> "`dirname ${BB_LOGFILE}`/log.do_${task}_attemptonly.${PID}" 2>&1 || true | ||
479 | done | ||
480 | fi | 477 | fi |
481 | } | 478 | } |
482 | 479 | ||
diff --git a/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch b/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch new file mode 100644 index 0000000000..0d603d3d1b --- /dev/null +++ b/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch | |||
@@ -0,0 +1,59 @@ | |||
1 | Add a mechanism to attempt the install operation, w/o failing. | ||
2 | |||
3 | For complementary and 'attemptonly' packages, we need a way to instruct smart to | ||
4 | try to install, but ignore any failures. | ||
5 | |||
6 | This option only works for the install operation. | ||
7 | |||
8 | Upstream-Status: Pending | ||
9 | |||
10 | Signed-off-by: Mark Hatle <mark.hatle@windriver.com> | ||
11 | |||
12 | Index: smart-1.4.1/smart/commands/install.py | ||
13 | =================================================================== | ||
14 | --- smart-1.4.1.orig/smart/commands/install.py | ||
15 | +++ smart-1.4.1/smart/commands/install.py | ||
16 | @@ -50,6 +50,8 @@ def option_parser(): | ||
17 | parser = OptionParser(usage=USAGE, | ||
18 | description=DESCRIPTION, | ||
19 | examples=EXAMPLES) | ||
20 | + parser.add_option("--attempt", action="store_true", | ||
21 | + help=_("attempt to install packages, ignore failures")) | ||
22 | parser.add_option("--stepped", action="store_true", | ||
23 | help=_("split operation in steps")) | ||
24 | parser.add_option("--urls", action="store_true", | ||
25 | @@ -80,6 +82,9 @@ def main(ctrl, opts): | ||
26 | if not opts.args: | ||
27 | raise Error, _("no package(s) given") | ||
28 | |||
29 | + if opts.attempt: | ||
30 | + sysconf.set("attempt-install", True, soft=True) | ||
31 | + | ||
32 | if opts.explain: | ||
33 | sysconf.set("explain-changesets", True, soft=True) | ||
34 | |||
35 | Index: smart-1.4.1/smart/transaction.py | ||
36 | =================================================================== | ||
37 | --- smart-1.4.1.orig/smart/transaction.py | ||
38 | +++ smart-1.4.1/smart/transaction.py | ||
39 | @@ -1216,9 +1216,17 @@ class Transaction(object): | ||
40 | else: | ||
41 | op = REMOVE | ||
42 | if op is INSTALL or op is REINSTALL: | ||
43 | - self._install(pkg, changeset, locked, pending) | ||
44 | - if pkg in changeset: | ||
45 | - changeset.setRequested(pkg, True) | ||
46 | + try: | ||
47 | + self._install(pkg, changeset, locked, pending) | ||
48 | + if pkg in changeset: | ||
49 | + changeset.setRequested(pkg, True) | ||
50 | + except Failed, e: | ||
51 | + if sysconf.has("attempt-install", soft=True): | ||
52 | + if pkg in changeset: | ||
53 | + del changeset[pkg] | ||
54 | + continue | ||
55 | + else: | ||
56 | + raise Failed, e | ||
57 | elif op is REMOVE: | ||
58 | self._remove(pkg, changeset, locked, pending) | ||
59 | elif op is UPGRADE: | ||
diff --git a/meta/recipes-devtools/python/python-smartpm_1.4.1.bb b/meta/recipes-devtools/python/python-smartpm_1.4.1.bb index 5d673b9902..f406d692e3 100644 --- a/meta/recipes-devtools/python/python-smartpm_1.4.1.bb +++ b/meta/recipes-devtools/python/python-smartpm_1.4.1.bb | |||
@@ -30,6 +30,7 @@ SRC_URI = "\ | |||
30 | file://smart-flag-ignore-recommends.patch \ | 30 | file://smart-flag-ignore-recommends.patch \ |
31 | file://smart-flag-exclude-packages.patch \ | 31 | file://smart-flag-exclude-packages.patch \ |
32 | file://smart-config-ignore-all-recommends.patch \ | 32 | file://smart-config-ignore-all-recommends.patch \ |
33 | file://smart-attempt.patch \ | ||
33 | " | 34 | " |
34 | 35 | ||
35 | SRC_URI[md5sum] = "573ef32ba177a6b3c4bf7ef04873fcb6" | 36 | SRC_URI[md5sum] = "573ef32ba177a6b3c4bf7ef04873fcb6" |