Gentoo Archives: gentoo-portage-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-portage-dev@l.g.o
Cc: Zac Medico <zmedico@g.o>
Subject: [gentoo-portage-dev] [PATCH] emaint --fix merges: add -y, --yes option
Date: Sat, 23 Jan 2021 23:39:12
Message-Id: 20210123233849.44785-1-zmedico@gentoo.org
1 Since the emaint --fix merges uses emerge --ask, add
2 a -y, --yes option to use --ask=n instead.
3
4 Bug: https://bugs.gentoo.org/766767
5 Signed-off-by: Zac Medico <zmedico@g.o>
6 ---
7 lib/portage/emaint/modules/merges/__init__.py | 14 ++++++++++++--
8 lib/portage/emaint/modules/merges/merges.py | 11 +++++++----
9 man/emaint.1 | 6 +++++-
10 3 files changed, 24 insertions(+), 7 deletions(-)
11
12 diff --git a/lib/portage/emaint/modules/merges/__init__.py b/lib/portage/emaint/modules/merges/__init__.py
13 index 89aa758a0..449f39dce 100644
14 --- a/lib/portage/emaint/modules/merges/__init__.py
15 +++ b/lib/portage/emaint/modules/merges/__init__.py
16 @@ -1,4 +1,4 @@
17 -# Copyright 2005-2014 Gentoo Foundation
18 +# Copyright 2005-2021 Gentoo Authors
19 # Distributed under the terms of the GNU General Public License v2
20
21 doc = """Scan for failed merges and fix them."""
22 @@ -26,7 +26,17 @@ module_spec = {
23 'action': 'store_true',
24 'func': 'purge'
25 }
26 - }
27 + },
28 + 'opt_desc': {
29 + 'yes': {
30 + "short": "-y",
31 + "long": "--yes",
32 + "help": ("(merges submodule only): Do not prompt for "
33 + "emerge invocations"),
34 + "action": "store_true",
35 + "dest": "yes",
36 + }
37 + },
38 }
39 }
40 }
41 diff --git a/lib/portage/emaint/modules/merges/merges.py b/lib/portage/emaint/modules/merges/merges.py
42 index 775dc59d2..d60916f1e 100644
43 --- a/lib/portage/emaint/modules/merges/merges.py
44 +++ b/lib/portage/emaint/modules/merges/merges.py
45 @@ -1,4 +1,4 @@
46 -# Copyright 2005-2020 Gentoo Authors
47 +# Copyright 2005-2021 Gentoo Authors
48 # Distributed under the terms of the GNU General Public License v2
49
50 import portage
51 @@ -186,7 +186,7 @@ class MergesHandler:
52 pkg_atoms.add(pkg_atom)
53
54
55 - def _emerge_pkg_atoms(self, module_output, pkg_atoms):
56 + def _emerge_pkg_atoms(self, module_output, pkg_atoms, yes=False):
57 """
58 Emerge the specified packages atoms.
59
60 @@ -194,6 +194,8 @@ class MergesHandler:
61 @type module_output: Class
62 @param pkg_atoms: packages atoms to emerge
63 @type pkg_atoms: set
64 + @param yes: do not prompt for emerge invocations
65 + @type yes: bool
66 @rtype: list
67 @return: List of results
68 """
69 @@ -206,7 +208,7 @@ class MergesHandler:
70 portage._python_interpreter,
71 '-b',
72 os.path.join(EPREFIX or '/', 'usr', 'bin', 'emerge'),
73 - '--ask',
74 + '--ask=n' if yes else '--ask',
75 '--quiet',
76 '--oneshot',
77 '--complete-graph=y'
78 @@ -265,7 +267,8 @@ class MergesHandler:
79 errors.append(', '.join(sorted(failed_pkgs)))
80 return (False, errors)
81 self._remove_failed_dirs(failed_pkgs)
82 - results = self._emerge_pkg_atoms(module_output, pkg_atoms)
83 + results = self._emerge_pkg_atoms(module_output, pkg_atoms,
84 + yes=kwargs.get('options', {}).get("yes", False))
85 # list any new failed merges
86 for pkg in sorted(self._scan()):
87 results.append("'%s' still found as a failed merge." % pkg)
88 diff --git a/man/emaint.1 b/man/emaint.1
89 index d244756e9..c9f8ab939 100644
90 --- a/man/emaint.1
91 +++ b/man/emaint.1
92 @@ -1,4 +1,4 @@
93 -.TH "EMAINT" "1" "Jan 2017" "Portage VERSION" "Portage"
94 +.TH "EMAINT" "1" "Jan 2021" "Portage VERSION" "Portage"
95 .SH NAME
96 emaint \- performs package management related system health checks and maintenance
97 .SH SYNOPSIS
98 @@ -82,6 +82,10 @@ OPTION
99 .BR \-t \ \fINUM\fR,\ \-\-time \ \fINUM\fR
100 Changes the minimum age \fINUM\fR (in days) of the logs to be listed or
101 deleted.
102 +.SH OPTIONS merges command only
103 +.TP
104 +.BR \-y ", " \-\-yes
105 +Do not prompt for emerge invocations.
106 .SH OPTIONS sync command only
107 .TP
108 .BR \-a ", " \-\-auto
109 --
110 2.26.2

Replies