diff options
author | Mark Hatle <mark.hatle@windriver.com> | 2013-08-07 11:53:37 -0500 |
---|---|---|
committer | Saul Wold <sgw@linux.intel.com> | 2013-08-22 09:15:33 -0700 |
commit | 87660d636c2ebe76cd9dff2a334f135def9a0cf3 (patch) | |
tree | fc47729251c5ec7f525f08548cb71fec20cf11bd | |
parent | 208d4d5ef7c5ead35dc27b7808f92ed377377aa4 (diff) | |
download | openembedded-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.patch | 70 | ||||
-rw-r--r-- | meta/recipes-devtools/python/python-smartpm_1.4.1.bb | 1 |
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" |