docs: def _check_all_deps(self, pkg_name=None, pkg_file=None, formula_def=None):
          '''
          Starting with one package, check all packages for dependencies
          '''
          if pkg_file and not os.path.exists(pkg_file):
              raise SPMInvocationError('Package file {0} not found'.format(pkg_file))
  
          self.repo_metadata = self._get_repo_metadata()
          if not formula_def:
              for repo in self.repo_metadata:
                  if not isinstance(self.repo_metadata[repo]['packages'], dict):
                      continue
                  if pkg_name in self.repo_metadata[repo]['packages']:
                      formula_def = self.repo_metadata[repo]['packages'][pkg_name]['info']
  
          if not formula_def:
              raise SPMInvocationError('Unable to read formula for {0}'.format(pkg_name))
  
          # Check to see if the package is already installed
          pkg_info = self._pkgdb_fun('info', pkg_name, self.db_conn)
          pkgs_to_install = []
          if pkg_info is None or self.opts['force']:
              pkgs_to_install.append(pkg_name)
          elif pkg_info is not None and not self.opts['force']:
              raise SPMPackageError(
                  'Package {0} already installed, not installing again'.format(formula_def['name'])
              )
  
          optional_install = []
          recommended_install = []
          if 'dependencies' in formula_def or 'optional' in formula_def or 'recommended' in formula_def:
              self.avail_pkgs = {}
              for repo in self.repo_metadata:
                  if not isinstance(self.repo_metadata[repo]['packages'], dict):
                      continue
                  for pkg in self.repo_metadata[repo]['packages']:
                      self.avail_pkgs[pkg] = repo
  
              needs, unavail, optional, recommended = self._resolve_deps(formula_def)
  
              if unavail:
                  raise SPMPackageError(
                      'Cannot install {0}, the following dependencies are needed:\n\n{1}'.format(
                          formula_def['name'], '\n'.join(unavail))
                  )
  
              if optional:
                  optional_install.extend(optional)
                  for dep_pkg in optional:
                      pkg_info = self._pkgdb_fun('info', formula_def['name'])
                      msg = dep_pkg
                      if isinstance(pkg_info, dict):
                          msg = '{0} [Installed]'.format(dep_pkg)
                      optional_install.append(msg)
  
              if recommended:
                  recommended_install.extend(recommended)
                  for dep_pkg in recommended:
                      pkg_info = self._pkgdb_fun('info', formula_def['name'])
                      msg = dep_pkg
                      if isinstance(pkg_info, dict):
                          msg = '{0} [Installed]'.format(dep_pkg)
                      recommended_install.append(msg)
  
              if needs:
                  pkgs_to_install.extend(needs)
                  for dep_pkg in needs:
                      pkg_info = self._pkgdb_fun('info', formula_def['name'])
                      msg = dep_pkg
                      if isinstance(pkg_info, dict):
                          msg = '{0} [Installed]'.format(dep_pkg)
  
          return pkgs_to_install, optional_install, recommended_install