docs: def get_data_files_recursively(*rel_root_path, **kwargs):
      """ Adds all files of the specified path to a data_files compatible list
  
      :param tuple rel_root_path: List of path elements pointing to a directory of files
      :return: list of tuples of install directory and list of source files
      :rtype: list(tuple(str, [str]))
      """
      result_list = list()
      rel_root_dir = os.path.join(*rel_root_path)
      share_target_root = os.path.join("share", kwargs.get("share_target_root", "rafcon"))
      distutils.log.debug("recursively generating data files for folder '{}' ...".format(
          rel_root_dir))
  
      for dir_, _, files in os.walk(rel_root_dir):
          relative_directory = os.path.relpath(dir_, rel_root_dir)
          file_list = list()
          for fileName in files:
              rel_file_path = os.path.join(relative_directory, fileName)
              abs_file_path = os.path.join(rel_root_dir, rel_file_path)
              file_list.append(abs_file_path)
          if len(file_list) > 0:
              # this is a valid path in ~/.local folder: e.g. share/rafcon/libraries/generic/wait
              target_path = os.path.join(share_target_root, relative_directory)
              result_list.append((target_path, file_list))
      return result_list