diff --git a/base/manifest-schema.json b/base/manifest-schema.json index 5be723d..ebc76ee 100644 --- a/base/manifest-schema.json +++ b/base/manifest-schema.json @@ -71,6 +71,9 @@ ] }, "minItems": 1 + }, + "install_standard": { + "type": "boolean" } }, "additionalProperties": false diff --git a/common/task_sets.py b/common/task_sets.py index e499e34..a64e5c6 100644 --- a/common/task_sets.py +++ b/common/task_sets.py @@ -65,6 +65,8 @@ def get_apt_set(manifest): base.append(apt.InstallTrustedKeys) if 'install' in manifest.packages: base.append(packages.AddManifestPackages) + if manifest.packages.get('install_standard', False): + base.append(packages.AddTaskselStandardPackages) return base diff --git a/common/tasks/packages.py b/common/tasks/packages.py index d5bc921..b1a2899 100644 --- a/common/tasks/packages.py +++ b/common/tasks/packages.py @@ -1,6 +1,7 @@ from base import Task from common import phases from common.tasks import apt +from common.tools import log_check_call class AddManifestPackages(Task): @@ -74,7 +75,6 @@ class InstallPackages(Task): @classmethod def install_local(cls, info, local_packages): from shutil import copy - from common.tools import log_check_call import os absolute_package_paths = [] @@ -97,3 +97,16 @@ class InstallPackages(Task): for path in absolute_package_paths: os.remove(path) + + +class AddTaskselStandardPackages(Task): + description = 'Adding standard packages from tasksel' + phase = phases.package_installation + predecessors = [apt.AptUpdate] + successors = [InstallPackages] + + @classmethod + def run(cls, info): + tasksel_packages = log_check_call(['chroot', info.root, 'tasksel', '--task-packages', 'standard']) + for pkg in tasksel_packages: + info.packages.add(pkg)