summaryrefslogtreecommitdiff
path: root/buildstream/_yaml.py
diff options
context:
space:
mode:
Diffstat (limited to 'buildstream/_yaml.py')
-rw-r--r--buildstream/_yaml.py97
1 files changed, 0 insertions, 97 deletions
diff --git a/buildstream/_yaml.py b/buildstream/_yaml.py
index 74ed1bbf8..fc24a223b 100644
--- a/buildstream/_yaml.py
+++ b/buildstream/_yaml.py
@@ -22,7 +22,6 @@ import collections
import string
from copy import deepcopy
from contextlib import ExitStack
-from pathlib import Path
from ruamel import yaml
from ruamel.yaml.representer import SafeRepresenter, RoundTripRepresenter
@@ -414,102 +413,6 @@ def node_get(node, expected_type, key, indices=None, *, default_value=_sentinel,
return value
-# node_get_project_path()
-#
-# Fetches a project path from a dictionary node and validates it
-#
-# Paths are asserted to never lead to a directory outside of the project
-# directory. In addition, paths can not point to symbolic links, fifos,
-# sockets and block/character devices.
-#
-# The `check_is_file` and `check_is_dir` parameters can be used to
-# perform additional validations on the path. Note that an exception
-# will always be raised if both parameters are set to ``True``.
-#
-# Args:
-# node (dict): A dictionary loaded from YAML
-# key (str): The key whose value contains a path to validate
-# project_dir (str): The project directory
-# check_is_file (bool): If ``True`` an error will also be raised
-# if path does not point to a regular file.
-# Defaults to ``False``
-# check_is_dir (bool): If ``True`` an error will be also raised
-# if path does not point to a directory.
-# Defaults to ``False``
-# Returns:
-# (str): The project path
-#
-# Raises:
-# (LoadError): In case that the project path is not valid or does not
-# exist
-#
-def node_get_project_path(node, key, project_dir, *,
- check_is_file=False, check_is_dir=False):
- path_str = node_get(node, str, key)
- path = Path(path_str)
- project_dir_path = Path(project_dir)
-
- provenance = node_get_provenance(node, key=key)
-
- if (project_dir_path / path).is_symlink():
- raise LoadError(LoadErrorReason.PROJ_PATH_INVALID_KIND,
- "{}: Specified path '{}' must not point to "
- "symbolic links "
- .format(provenance, path_str))
-
- if path.parts and path.parts[0] == '..':
- raise LoadError(LoadErrorReason.PROJ_PATH_INVALID,
- "{}: Specified path '{}' first component must "
- "not be '..'"
- .format(provenance, path_str))
-
- try:
- full_path = (project_dir_path / path)
- if sys.version_info[0] == 3 and sys.version_info[1] < 6:
- full_resolved_path = full_path.resolve()
- else:
- full_resolved_path = full_path.resolve(strict=True) # pylint: disable=unexpected-keyword-arg
- except FileNotFoundError:
- raise LoadError(LoadErrorReason.MISSING_FILE,
- "{}: Specified path '{}' does not exist"
- .format(provenance, path_str))
-
- is_inside = project_dir_path.resolve() in full_resolved_path.parents or (
- full_resolved_path == project_dir_path)
-
- if not is_inside:
- raise LoadError(LoadErrorReason.PROJ_PATH_INVALID,
- "{}: Specified path '{}' must not lead outside of the "
- "project directory"
- .format(provenance, path_str))
-
- if path.is_absolute():
- raise LoadError(LoadErrorReason.PROJ_PATH_INVALID,
- "{}: Absolute path: '{}' invalid.\n"
- "Please specify a path relative to the project's root."
- .format(provenance, path))
-
- if full_resolved_path.is_socket() or (
- full_resolved_path.is_fifo() or
- full_resolved_path.is_block_device()):
- raise LoadError(LoadErrorReason.PROJ_PATH_INVALID_KIND,
- "{}: Specified path '{}' points to an unsupported "
- "file kind"
- .format(provenance, path_str))
-
- if check_is_file and not full_resolved_path.is_file():
- raise LoadError(LoadErrorReason.PROJ_PATH_INVALID_KIND,
- "{}: Specified path '{}' is not a regular file"
- .format(provenance, path_str))
-
- if check_is_dir and not full_resolved_path.is_dir():
- raise LoadError(LoadErrorReason.PROJ_PATH_INVALID_KIND,
- "{}: Specified path '{}' is not a directory"
- .format(provenance, path_str))
-
- return path_str
-
-
# node_items()
#
# A convenience generator for iterating over loaded key/value