diff options
author | Mark Hatle <mark.hatle@windriver.com> | 2013-08-06 10:41:33 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-08-22 18:29:59 +0100 |
commit | a6a3ec1ea0382e8f7d8ded0a2d2c5e9b99f55f9b (patch) | |
tree | c1912553f3b3b205ba5df3c302cf61c5d179eff2 | |
parent | 02521a40d36d06d269ec14ce9000f2941d6980af (diff) | |
download | poky-a6a3ec1ea0382e8f7d8ded0a2d2c5e9b99f55f9b.tar.gz |
image.bbclass: Add basic support for PACKAGE_EXCLUDE
Add the foundation for the PACKAGE_EXCLUDE support.
As part of this work, it was noticed that the PACKAGE_INSTALL and
PACKAGE_INSTALL_ATTEMPTONLY were still using he 'normal' version for
dependencies. This should no longer be necessary as of the change in the way
the complementary package groups (dev, dbg, ptest and others) are defined.
By making this change the dependency tree is more correct than before, and
gives the ability for manipulating PACKAGE_INSTALL and
PACKAGE_INSTALL_ATTEMPTONLY, while adjusting the dependencies at the same
time.
Warning messages will be generated if the user is trying to exclude a
package that was previously in the PACKAGE_INSTALL or
PACKAGE_INSTALL_ATTEMPTONLY variables.
(See additional commits for package manager specific support.)
Add documentation on PACKAGE_EXCLUDE and related variables.
(From OE-Core rev: 208d4d5ef7c5ead35dc27b7808f92ed377377aa4)
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>
-rw-r--r-- | meta/classes/image.bbclass | 39 | ||||
-rw-r--r-- | meta/conf/documentation.conf | 6 |
2 files changed, 33 insertions, 12 deletions
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 116bd226ea..909702ac23 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass | |||
@@ -11,8 +11,8 @@ inherit gzipnative | |||
11 | LICENSE = "MIT" | 11 | LICENSE = "MIT" |
12 | PACKAGES = "" | 12 | PACKAGES = "" |
13 | DEPENDS += "${MLPREFIX}qemuwrapper-cross ${MLPREFIX}depmodwrapper-cross" | 13 | DEPENDS += "${MLPREFIX}qemuwrapper-cross ${MLPREFIX}depmodwrapper-cross" |
14 | RDEPENDS += "${IMAGE_INSTALL} ${LINGUAS_INSTALL} ${NORMAL_FEATURE_INSTALL} ${ROOTFS_BOOTSTRAP_INSTALL}" | 14 | RDEPENDS += "${PACKAGE_INSTALL} ${LINGUAS_INSTALL}" |
15 | RRECOMMENDS += "${NORMAL_FEATURE_INSTALL_OPTIONAL}" | 15 | RRECOMMENDS += "${PACKAGE_INSTALL_ATTEMPTONLY}" |
16 | 16 | ||
17 | INHIBIT_DEFAULT_DEPS = "1" | 17 | INHIBIT_DEFAULT_DEPS = "1" |
18 | 18 | ||
@@ -28,16 +28,6 @@ ROOTFS_BOOTSTRAP_INSTALL = "${@base_contains("IMAGE_FEATURES", "package-manageme | |||
28 | FEATURE_INSTALL = "${@' '.join(oe.packagegroup.required_packages(oe.data.typed_value('IMAGE_FEATURES', d), d))}" | 28 | FEATURE_INSTALL = "${@' '.join(oe.packagegroup.required_packages(oe.data.typed_value('IMAGE_FEATURES', d), d))}" |
29 | FEATURE_INSTALL_OPTIONAL = "${@' '.join(oe.packagegroup.optional_packages(oe.data.typed_value('IMAGE_FEATURES', d), d))}" | 29 | FEATURE_INSTALL_OPTIONAL = "${@' '.join(oe.packagegroup.optional_packages(oe.data.typed_value('IMAGE_FEATURES', d), d))}" |
30 | 30 | ||
31 | # packages to install from features, excluding dev/dbg/doc/ptest | ||
32 | NORMAL_FEATURE_INSTALL = "${@' '.join(oe.packagegroup.required_packages(normal_groups(d), d))}" | ||
33 | NORMAL_FEATURE_INSTALL_OPTIONAL = "${@' '.join(oe.packagegroup.optional_packages(normal_groups(d), d))}" | ||
34 | |||
35 | def normal_groups(d): | ||
36 | """Return all the IMAGE_FEATURES, with the exception of our special package groups""" | ||
37 | extras = set(d.getVarFlags('COMPLEMENTARY_GLOB').keys()) | ||
38 | features = set(oe.data.typed_value('IMAGE_FEATURES', d)) | ||
39 | return features.difference(extras) | ||
40 | |||
41 | # Define some very basic feature package groups | 31 | # Define some very basic feature package groups |
42 | SPLASH ?= "psplash" | 32 | SPLASH ?= "psplash" |
43 | PACKAGE_GROUP_splash = "${SPLASH}" | 33 | PACKAGE_GROUP_splash = "${SPLASH}" |
@@ -277,6 +267,31 @@ read_only_rootfs_hook () { | |||
277 | fi | 267 | fi |
278 | } | 268 | } |
279 | 269 | ||
270 | PACKAGE_EXCLUDE ??= "" | ||
271 | PACKAGE_EXCLUDE[type] = "list" | ||
272 | |||
273 | python rootfs_process_ignore() { | ||
274 | excl_pkgs = d.getVar("PACKAGE_EXCLUDE", True).split() | ||
275 | inst_pkgs = d.getVar("PACKAGE_INSTALL", True).split() | ||
276 | inst_attempt_pkgs = d.getVar("PACKAGE_INSTALL_ATTEMPTONLY", True).split() | ||
277 | |||
278 | d.setVar('PACKAGE_INSTALL_ORIG', ' '.join(inst_pkgs)) | ||
279 | d.setVar('PACKAGE_INSTALL_ATTEMPTONLY', ' '.join(inst_attempt_pkgs)) | ||
280 | |||
281 | for pkg in excl_pkgs: | ||
282 | if pkg in inst_pkgs: | ||
283 | bb.warn("Package %s, set to be excluded, is in %s PACKAGE_INSTALL (%s). It will be removed from the list." % (pkg, d.getVar('PN', True), inst_pkgs)) | ||
284 | inst_pkgs.remove(pkg) | ||
285 | |||
286 | if pkg in inst_attempt_pkgs: | ||
287 | bb.warn("Package %s, set to be excluded, is in %s PACKAGE_INSTALL_ATTEMPTONLY (%s). It will be removed from the list." % (pkg, d.getVar('PN', True), inst_pkgs)) | ||
288 | inst_attempt_pkgs.remove(pkg) | ||
289 | |||
290 | d.setVar("PACKAGE_INSTALL", ' '.join(inst_pkgs)) | ||
291 | d.setVar("PACKAGE_INSTALL_ATTEMPTONLY", ' '.join(inst_attempt_pkgs)) | ||
292 | } | ||
293 | do_rootfs[prefuncs] += "rootfs_process_ignore" | ||
294 | |||
280 | # We have to delay the runtime_mapping_rename until just before rootfs runs | 295 | # We have to delay the runtime_mapping_rename until just before rootfs runs |
281 | # otherwise, the multilib renaming could step in and squash any fixups that | 296 | # otherwise, the multilib renaming could step in and squash any fixups that |
282 | # may have occurred. | 297 | # may have occurred. |
diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf index 2c4b8af63e..b930611c8b 100644 --- a/meta/conf/documentation.conf +++ b/meta/conf/documentation.conf | |||
@@ -114,6 +114,12 @@ SYSVINIT_ENABLED_GETTYS[doc] = "Specify which VTs should be running a getty, the | |||
114 | IPK_FEED_URIS[doc] = "List of ipkg feed records to put into generated image." | 114 | IPK_FEED_URIS[doc] = "List of ipkg feed records to put into generated image." |
115 | FEED_DEPLOYDIR_BASE_URI[doc] = "Allow to serve ipk deploy dir as an adhoc feed (bogofeed). Set to base URL of the dir as exported by HTTP. Set of adhoc feed configs will be generated in image." | 115 | FEED_DEPLOYDIR_BASE_URI[doc] = "Allow to serve ipk deploy dir as an adhoc feed (bogofeed). Set to base URL of the dir as exported by HTTP. Set of adhoc feed configs will be generated in image." |
116 | 116 | ||
117 | IMAGE_INSTALL[doc] = "Used by an image recipe to list the packages to be installed. See PACKAGE_INSTALL." | ||
118 | |||
119 | PACKAGE_EXCLUDE[doc] = "Packages to exclude from the installation, if required an error will be generated." | ||
120 | PACKAGE_INSTALL[doc] = "Generally not user defined. List of the packages to be installed into the image, uses IMAGE_INSTALL as part of the list." | ||
121 | PACKAGE_INSTALL_ATTEMPTONLY[doc] = "Generally not user defined. List of packages that will be attempted to be installed, but no error will generate if any of them fail to install." | ||
122 | |||
117 | # palmtop build class | 123 | # palmtop build class |
118 | PALMTOP_USE_MULTITHREADED_QT[doc] = "Set to yes, if you want to build qt apps with CONFIG+=thread" | 124 | PALMTOP_USE_MULTITHREADED_QT[doc] = "Set to yes, if you want to build qt apps with CONFIG+=thread" |
119 | 125 | ||