summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Hatle <mark.hatle@windriver.com>2013-08-07 11:53:37 -0500
committerSaul Wold <sgw@linux.intel.com>2013-08-22 09:15:33 -0700
commit87660d636c2ebe76cd9dff2a334f135def9a0cf3 (patch)
treefc47729251c5ec7f525f08548cb71fec20cf11bd
parent208d4d5ef7c5ead35dc27b7808f92ed377377aa4 (diff)
downloadopenembedded-core-87660d636c2ebe76cd9dff2a334f135def9a0cf3.tar.gz
openembedded-core-87660d636c2ebe76cd9dff2a334f135def9a0cf3.tar.bz2
openembedded-core-87660d636c2ebe76cd9dff2a334f135def9a0cf3.zip
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. Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
-rw-r--r--meta/recipes-devtools/python/python-smartpm/smart-flag-exclude-packages.patch70
-rw-r--r--meta/recipes-devtools/python/python-smartpm_1.4.1.bb1
2 files changed, 71 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 0000000000..21a28746a1
--- /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.
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 70ac8bf288..b3b471a8b1 100644
--- a/meta/recipes-devtools/python/python-smartpm_1.4.1.bb
+++ b/meta/recipes-devtools/python/python-smartpm_1.4.1.bb
@@ -28,6 +28,7 @@ SRC_URI = "\
file://smart-channelsdir.patch \
file://smart-conflict-provider.patch \
file://smart-flag-ignore-recommends.patch \
+ file://smart-flag-exclude-packages.patch \
"
SRC_URI[md5sum] = "573ef32ba177a6b3c4bf7ef04873fcb6"