summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/python/python-smartpm
diff options
context:
space:
mode:
authorMark Hatle <mark.hatle@windriver.com>2013-08-07 11:53:37 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-08-22 18:29:59 +0100
commit02c96776de37e8507351f0162a76b082c0ed183c (patch)
tree0e56e09647764c12b7815dbac41178906b3d6541 /meta/recipes-devtools/python/python-smartpm
parenta6a3ec1ea0382e8f7d8ded0a2d2c5e9b99f55f9b (diff)
downloadast2050-yocto-poky-02c96776de37e8507351f0162a76b082c0ed183c.zip
ast2050-yocto-poky-02c96776de37e8507351f0162a76b082c0ed183c.tar.gz
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>
Diffstat (limited to 'meta/recipes-devtools/python/python-smartpm')
-rw-r--r--meta/recipes-devtools/python/python-smartpm/smart-flag-exclude-packages.patch70
1 files changed, 70 insertions, 0 deletions
diff --git a/meta/recipes-devtools/python/python-smartpm/smart-flag-exclude-packages.patch b/meta/recipes-devtools/python/python-smartpm/smart-flag-exclude-packages.patch
new file mode 100644
index 0000000..21a2874
--- /dev/null
+++ b/meta/recipes-devtools/python/python-smartpm/smart-flag-exclude-packages.patch
@@ -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.
OpenPOWER on IntegriCloud