Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Mark Hatle <mark.hatle@windriver.com>
To: <openembedded-core@lists.openembedded.org>
Subject: [PATCH 01/11] image.bbclass: Add basic support for PACKAGE_EXCLUDE
Date: Wed, 14 Aug 2013 15:29:59 -0500	[thread overview]
Message-ID: <1376512209-11622-2-git-send-email-mark.hatle@windriver.com> (raw)
In-Reply-To: <1376512209-11622-1-git-send-email-mark.hatle@windriver.com>

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.

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
---
 meta/classes/image.bbclass   | 39 +++++++++++++++++++++++++++------------
 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 4aae3a7..fb6fcef 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -11,8 +11,8 @@ inherit gzipnative
 LICENSE = "MIT"
 PACKAGES = ""
 DEPENDS += "${MLPREFIX}qemuwrapper-cross ${MLPREFIX}depmodwrapper-cross"
-RDEPENDS += "${IMAGE_INSTALL} ${LINGUAS_INSTALL} ${NORMAL_FEATURE_INSTALL} ${ROOTFS_BOOTSTRAP_INSTALL}"
-RRECOMMENDS += "${NORMAL_FEATURE_INSTALL_OPTIONAL}"
+RDEPENDS += "${PACKAGE_INSTALL} ${LINGUAS_INSTALL}"
+RRECOMMENDS += "${PACKAGE_INSTALL_ATTEMPTONLY}"
 
 INHIBIT_DEFAULT_DEPS = "1"
 
@@ -28,16 +28,6 @@ ROOTFS_BOOTSTRAP_INSTALL = "${@base_contains("IMAGE_FEATURES", "package-manageme
 FEATURE_INSTALL = "${@' '.join(oe.packagegroup.required_packages(oe.data.typed_value('IMAGE_FEATURES', d), d))}"
 FEATURE_INSTALL_OPTIONAL = "${@' '.join(oe.packagegroup.optional_packages(oe.data.typed_value('IMAGE_FEATURES', d), d))}"
 
-# packages to install from features, excluding dev/dbg/doc/ptest
-NORMAL_FEATURE_INSTALL = "${@' '.join(oe.packagegroup.required_packages(normal_groups(d), d))}"
-NORMAL_FEATURE_INSTALL_OPTIONAL = "${@' '.join(oe.packagegroup.optional_packages(normal_groups(d), d))}"
-
-def normal_groups(d):
-    """Return all the IMAGE_FEATURES, with the exception of our special package groups"""
-    extras = set(d.getVarFlags('COMPLEMENTARY_GLOB').keys())
-    features = set(oe.data.typed_value('IMAGE_FEATURES', d))
-    return features.difference(extras)
-
 # Define some very basic feature package groups
 SPLASH ?= "psplash"
 PACKAGE_GROUP_splash = "${SPLASH}"
@@ -265,6 +255,31 @@ read_only_rootfs_hook () {
 	fi
 }
 
+PACKAGE_EXCLUDE ??= ""
+PACKAGE_EXCLUDE[type] = "list"
+
+python rootfs_process_ignore() {
+    excl_pkgs = d.getVar("PACKAGE_EXCLUDE", True).split()
+    inst_pkgs = d.getVar("PACKAGE_INSTALL", True).split()
+    inst_attempt_pkgs = d.getVar("PACKAGE_INSTALL_ATTEMPTONLY", True).split()
+
+    d.setVar('PACKAGE_INSTALL_ORIG', ' '.join(inst_pkgs))
+    d.setVar('PACKAGE_INSTALL_ATTEMPTONLY', ' '.join(inst_attempt_pkgs))
+
+    for pkg in excl_pkgs:
+        if pkg in inst_pkgs:
+            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))
+            inst_pkgs.remove(pkg)
+
+        if pkg in inst_attempt_pkgs:
+            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))
+            inst_attempt_pkgs.remove(pkg)
+
+    d.setVar("PACKAGE_INSTALL", ' '.join(inst_pkgs))
+    d.setVar("PACKAGE_INSTALL_ATTEMPTONLY", ' '.join(inst_attempt_pkgs))
+}
+do_rootfs[prefuncs] += "rootfs_process_ignore"
+
 # We have to delay the runtime_mapping_rename until just before rootfs runs
 # otherwise, the multilib renaming could step in and squash any fixups that
 # may have occurred.
diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf
index 2c4b8af..b930611 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
 IPK_FEED_URIS[doc] = "List of ipkg feed records to put into generated image."
 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."
 
+IMAGE_INSTALL[doc] = "Used by an image recipe to list the packages to be installed.  See PACKAGE_INSTALL."
+
+PACKAGE_EXCLUDE[doc] = "Packages to exclude from the installation, if required an error will be generated."
+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."
+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."
+
 # palmtop build class
 PALMTOP_USE_MULTITHREADED_QT[doc] = "Set to yes, if you want to build qt apps with CONFIG+=thread"
 
-- 
1.8.1.2.545.g2f19ada



  reply	other threads:[~2013-08-14 20:29 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-14 20:29 [PATCH 00/11] Update the way we control the construction of filesystems Mark Hatle
2013-08-14 20:29 ` Mark Hatle [this message]
2013-08-14 20:30 ` [PATCH 02/11] python-smartpm: Add support for excluding package from the install Mark Hatle
2013-08-14 20:30 ` [PATCH 03/11] package_rpm.bbclass: Add support for PACKAGE_EXCLUDE to RPM installs Mark Hatle
2013-08-15 12:01   ` Paul Eggleton
2013-08-15 13:37     ` Mark Hatle
2013-08-14 20:30 ` [PATCH 04/11] python-smartpm: Add support to disable installing recommends Mark Hatle
2013-08-14 20:30 ` [PATCH 05/11] package_rpm.bbclass: NO_RECOMMENDATIONS support Mark Hatle
2013-08-14 20:30 ` [PATCH 06/11] package_deb.bbclass: Use the WORKDIR not SYSROOT for temp files Mark Hatle
2013-08-14 20:30 ` [PATCH 07/11] package_deb: Add support for NO_RECOMMENDATIONS and PACKAGE_EXCLUDE Mark Hatle
2013-08-14 20:30 ` [PATCH 08/11] opkg: Add --no-install-recommends option Mark Hatle
2013-08-19 18:08   ` Saul Wold
2013-08-19 18:32     ` Mark Hatle
2013-09-18 15:14       ` Paul Barker
2013-09-18 16:07         ` Richard Purdie
2013-09-18 16:35           ` Paul Barker
2013-09-18 16:48             ` Richard Purdie
2013-09-18 17:24               ` Paul Barker
2013-09-18 18:44                 ` Phil Blundell
2013-09-18 19:09                   ` Paul Barker
2013-09-18 20:33                 ` Richard Purdie
2013-09-18 20:51                   ` Paul Barker
2013-10-07 15:00         ` opkg-devel group (was: Re: [PATCH 08/11] opkg: Add --no-install-recommends option.) Andreas Oberritter
2013-10-07 16:08           ` Paul Barker
2013-08-14 20:30 ` [PATCH 09/11] package_ipk: Add support for NO_RECOMMENDATIONS Mark Hatle
2013-08-14 20:30 ` [PATCH 10/11] opkg: Add support for excluding packages from the install Mark Hatle
2013-08-14 20:30 ` [PATCH 11/11] package_ipk: Add support for PACKAGE_EXCLUDE Mark Hatle
2013-08-14 20:35 ` [PATCH 00/11] Update the way we control the construction of filesystems Burton, Ross
2013-08-14 20:41   ` Mark Hatle
2013-08-14 21:03     ` Burton, Ross

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1376512209-11622-2-git-send-email-mark.hatle@windriver.com \
    --to=mark.hatle@windriver.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox