blob: 8c13608346417f927783d2ac57344316fc607e67 [file] [log] [blame]
#
# Copyright (C) 2018 Codethink Limited
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
#
# Authors:
# Jim MacArthur <jim.macarthur@codethink.co.uk>
from .._platform import Platform
# SandboxConfig
#
# A container for sandbox configuration data. We want the internals
# of this to be opaque, hence putting it in its own private file.
class SandboxConfig:
def __init__(self, sandbox_config, platform):
host_arch = platform.get_host_arch()
host_os = platform.get_host_os()
sandbox_config.validate_keys(["build-uid", "build-gid", "build-os", "build-arch", "disable-defaults"])
self.disable_defaults = sandbox_config.get_str("disable-defaults", default=None)
build_os = sandbox_config.get_str("build-os", default=None)
if build_os:
self.build_os = build_os.lower()
elif not self.disable_defaults:
self.build_os = host_os
else:
self.build_os = None
build_arch = sandbox_config.get_str("build-arch", default=None)
if build_arch:
self.build_arch = Platform.canonicalize_arch(build_arch)
elif not self.disable_defaults:
self.build_arch = host_arch
else:
self.build_arch = None
self.build_uid = sandbox_config.get_int("build-uid", None)
self.build_gid = sandbox_config.get_int("build-gid", None)
# get_unique_key():
#
# This returns the SandboxConfig's contribution
# to an element's cache key.
#
# Returns:
# (dict): A dictionary to add to an element's cache key
#
def get_unique_key(self):
unique_key = {}
if self.build_os is not None:
unique_key["os"] = self.build_os
if self.build_arch is not None:
unique_key["arch"] = self.build_arch
if self.build_uid is not None:
unique_key["build-uid"] = self.build_uid
if self.build_gid is not None:
unique_key["build-gid"] = self.build_gid
return unique_key