mirror of
https://git.yoctoproject.org/poky
synced 2026-02-12 19:53:03 +01:00
python-smartpm: Add support for excluding package from the install
Update smart to support a mechanism for excluding specific packages from the install process. An error will be generated if this package is required. (From OE-Core rev: 87660d636c2ebe76cd9dff2a334f135def9a0cf3) Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
a6a3ec1ea0
commit
02c96776de
@@ -0,0 +1,70 @@
|
||||
Add exclude-packages flag support
|
||||
|
||||
Allow configuring specific packages to be excluded. This will allow
|
||||
users to specify things NOT to install, and if they are attempted an
|
||||
error will be generated.
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
||||
|
||||
Index: smart-1.4.1/smart/const.py
|
||||
===================================================================
|
||||
--- smart-1.4.1.orig/smart/const.py
|
||||
+++ smart-1.4.1/smart/const.py
|
||||
@@ -70,6 +70,7 @@ DATADIR = "/var/lib/smart/"
|
||||
USERDATADIR = "~/.smart/"
|
||||
CONFFILE = "config"
|
||||
|
||||
+LOCKED_EXCLUDE = Enum('LOCKED_EXCLUDE')
|
||||
LOCKED_INSTALL = Enum('LOCKED_INSTALL')
|
||||
LOCKED_REMOVE = Enum('LOCKED_REMOVE')
|
||||
LOCKED_CONFLICT = Enum('LOCKED_CONFLICT')
|
||||
Index: smart-1.4.1/smart/transaction.py
|
||||
===================================================================
|
||||
--- smart-1.4.1.orig/smart/transaction.py
|
||||
+++ smart-1.4.1/smart/transaction.py
|
||||
@@ -19,7 +19,7 @@
|
||||
# along with Smart Package Manager; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
-from smart.const import INSTALL, REMOVE, UPGRADE, FIX, REINSTALL, KEEP, LOCKED_INSTALL, LOCKED_CONFLICT, LOCKED_CONFLICT_BY, LOCKED_NO_COEXIST, LOCKED_SYSCONF, LOCKED_REMOVE
|
||||
+from smart.const import INSTALL, REMOVE, UPGRADE, FIX, REINSTALL, KEEP, LOCKED_EXCLUDE, LOCKED_INSTALL, LOCKED_CONFLICT, LOCKED_CONFLICT_BY, LOCKED_NO_COEXIST, LOCKED_SYSCONF, LOCKED_REMOVE
|
||||
from smart.cache import PreRequires, Package
|
||||
from smart import *
|
||||
|
||||
@@ -29,7 +29,9 @@ def lock_reason(pkg, lockvalue):
|
||||
except TypeError:
|
||||
reason = None
|
||||
lockvalue = None
|
||||
- if reason == LOCKED_INSTALL:
|
||||
+ if reason == LOCKED_EXCLUDE:
|
||||
+ return _("%s is to be excluded") % pkg
|
||||
+ elif reason == LOCKED_INSTALL:
|
||||
return _("%s is to be installed") % pkg
|
||||
elif reason == LOCKED_CONFLICT:
|
||||
return _("%s conflicts with %s") % (pkg, otherpkg)
|
||||
@@ -210,6 +212,10 @@ class Policy(object):
|
||||
self._sysconflocked.append(pkg)
|
||||
self._locked[pkg] = (LOCKED_SYSCONF, None)
|
||||
|
||||
+ for pkg in pkgconf.filterByFlag("exclude-packages", cache.getPackages()):
|
||||
+ if pkg not in self._locked:
|
||||
+ self._locked[pkg] = (LOCKED_EXCLUDE, None)
|
||||
+
|
||||
def runFinished(self):
|
||||
self._priorities.clear()
|
||||
for pkg in self._sysconflocked:
|
||||
Index: smart-1.4.1/smart/commands/flag.py
|
||||
===================================================================
|
||||
--- smart-1.4.1.orig/smart/commands/flag.py
|
||||
+++ smart-1.4.1/smart/commands/flag.py
|
||||
@@ -47,6 +47,8 @@ Currently known flags are:
|
||||
multi-version - Flagged packages may have more than one version
|
||||
installed in the system at the same time
|
||||
(backend dependent).
|
||||
+ exclude-packages - Flagged packages will be excluded, if they are
|
||||
+ required, an error will be generated.
|
||||
ignore-recommends - Flagged packages will not be installed, if
|
||||
they are only recommended by a package to be
|
||||
installed rather than required.
|
||||
Reference in New Issue
Block a user