From 3ff92589e153eb38a45c55d3d8ebb61b7a8f4083 Mon Sep 17 00:00:00 2001 From: Gregory Haynes Date: Tue, 20 Jan 2015 16:45:48 -0800 Subject: [PATCH] Add installtype support to package-installs Some packages should only be installed if a certain installtype is specified. Change-Id: Ia1a5af9ab4653e2646870ebd2d2db7e00a59305b --- elements/package-installs/README.rst | 12 ++++++++++-- .../package-installs/bin/package-installs-squash | 12 +++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/elements/package-installs/README.rst b/elements/package-installs/README.rst index f9b3bfdf..5c222b5b 100644 --- a/elements/package-installs/README.rst +++ b/elements/package-installs/README.rst @@ -10,6 +10,8 @@ example package-installs.yaml:: phase: pre-install.d networkmanager: uninstall: True + os-collect-config: + installtype: source example package-installs.json:: @@ -17,14 +19,20 @@ example package-installs.json:: "libxml2": null, "grub2": {"phase": "pre-install.d"}, "networkmanager": {"uninstall": true} + "os-collect-config": {"installtype": "source"} } -Setting phase or uninstall properties for a package overrides the following -default values:: +Setting phase, uninstall, or installtype properties for a package overrides +the following default values:: phase: install.d uninstall: False + installtype: * (Install package for all installtypes) + +Setting the installtype property causes the package only to be installed if +the specified installtype would be used for the element. See the +diskimage-builder docs for more information on installtypes. DEPRECATED: Adding a file under your elements pre-install.d, install.d, or diff --git a/elements/package-installs/bin/package-installs-squash b/elements/package-installs/bin/package-installs-squash index b79e6417..39967886 100755 --- a/elements/package-installs/bin/package-installs-squash +++ b/elements/package-installs/bin/package-installs-squash @@ -23,6 +23,12 @@ import os import yaml +def get_element_installtype(element_name): + default = os.environ.get("DIB_DEFAULT_INSTALLTYPE", "source") + element_name.replace('-', '_') + return os.environ.get("DIB_INSTALLTYPE_%s" % element_name, default) + + def collect_data(data, filename, element_name): try: objs = json.load(open(filename)) @@ -36,7 +42,11 @@ def collect_data(data, filename, element_name): if 'uninstall' in params: install = "uninstall" - data[phase][install].append((pkg_name, element_name)) + # Filter out incorrect installtypes + installtype = params.get('installtype', None) + elem_installtype = get_element_installtype(element_name) + if installtype is None or installtype == elem_installtype: + data[phase][install].append((pkg_name, element_name)) return data