espressif / idf-component-manager

Tool for installing ESP-IDF components
https://components.espressif.com/
Apache License 2.0
42 stars 15 forks source link

Adding component via ssh git repo fails when X11 forwarding is not off (PACMAN-485) #11

Closed ljden closed 1 year ago

ljden commented 1 year ago

The Component Manager version

v1.1.4

ESP-IDF Version

v4.4.2

python Version

3.6.9

Operating System

Linux Mint 19.3 Tricia x86_64

Description

If you try to add a repo by ssh while you (accidentally...) have X11 forwarding enabled the reconfigure will fail. The "X11 forwarding request failed on channel" error message seems to be injected into a git command (see logs below)

To Reproduce

~/.ssh/config

Host github.com
  User git
  ForwardX11 yes

main/idf_component.yml

dependencies:
  git-only-cmp:
    path: git-only-cmp
    git: ssh://git@github.com/<path>/example_components.git

NB: Need to be able to ssh clone of example_components

Expected behaviour

Pulls repo and configures correctly

Additional info

CMake Error at /home/luke.dennis/esp/esp-idf/tools/cmake/build.cmake:454 (message):
  Traceback (most recent call last):

    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/git_client.py", line 171, in run
      stderr=subprocess.STDOUT,
    File "/usr/lib/python3.6/subprocess.py", line 356, in check_output
      **kwargs).stdout
    File "/usr/lib/python3.6/subprocess.py", line 438, in run
      output=stdout, stderr=stderr)

  subprocess.CalledProcessError: Command '['git', 'rev-parse', '--verify',
  'X11 forwarding request failed on channel']' returned non-zero exit status
  128.

  During handling of the above exception, another exception occurred:

  Traceback (most recent call last):

    File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
      "__main__", mod_spec)
    File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
      exec(code, run_globals)
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_manager/prepare_components/__main__.py", line 3, in <module>
      main()
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_manager/prepare_components/prepare.py", line 126, in main
      args.func(args)
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_manager/prepare_components/prepare.py", line 42, in prepare_dep_dirs
      local_components_list_file=args.local_components_list_file,
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_manager/core.py", line 405, in prepare_dep_dirs
      project_requirements, self.lock_path, self.managed_components_path)
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_manager/dependencies.py", line 96, in download_project_dependencies
      if is_solve_required(project_requirements, solution):
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_manager/dependencies.py", line 70, in is_solve_required
      if project_requirements.manifest_hash != solution.manifest_hash\
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/manifest/manifest.py", line 287, in manifest_hash
      manifest_hashes = [manifest.manifest_hash for manifest in self.manifests]
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/manifest/manifest.py", line 287, in <listcomp>
      manifest_hashes = [manifest.manifest_hash for manifest in self.manifests]
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/manifest/manifest.py", line 133, in manifest_hash
      serialized = self.serialize()  # type: ignore
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/serialization.py", line 47, in _serialize
      return OrderedDict((prop, serialize(getattr(self, prop))) for prop in properties)
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/serialization.py", line 47, in <genexpr>
      return OrderedDict((prop, serialize(getattr(self, prop))) for prop in properties)
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/serialization.py", line 29, in serialize
      return [serialize(v) for v in value]
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/serialization.py", line 29, in <listcomp>
      return [serialize(v) for v in value]
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/serialization.py", line 31, in serialize
      return value.serialize()
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/serialization.py", line 47, in _serialize
      return OrderedDict((prop, serialize(getattr(self, prop))) for prop in properties)
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/serialization.py", line 47, in <genexpr>
      return OrderedDict((prop, serialize(getattr(self, prop))) for prop in properties)
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/manifest/manifest.py", line 172, in version_spec
      return self.source.normalize_spec(self._version_spec)
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/sources/git.py", line 193, in normalize_spec
      commit_id = self._client.get_commit_id_by_ref(self.git_repo, self.cache_path(), ref)
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/git_client.py", line 38, in wrapper
      return func(self, *args, **kwargs)
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/git_client.py", line 69, in wrapper
      return func(self, *args, **kwargs)
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/git_client.py", line 158, in get_commit_id_by_ref
      return self.run(['rev-parse', '--verify', ref], cwd=bare_path).strip()
    File "/home/luke.dennis/.espressif/python_env/idf4.4_py3.6_env/lib/python3.6/site-packages/idf_component_tools/git_client.py", line 175, in run
      "'git %s' failed with exit code %d \n%s" % (' '.join(args), e.returncode, e.output.decode('utf-8')))

  idf_component_tools.git_client.GitCommandError: 'git rev-parse --verify X11
  forwarding request failed on channel' failed with exit code 128

  fatal: Needed a single revision

Call Stack (most recent call first):
  /home/luke.dennis/esp/esp-idf/tools/cmake/project.cmake:384 (idf_build_process)
  CMakeLists.txt:8 (project)

-- Configuring incomplete, errors occurred!
See also "/home/luke.dennis/tmp/submodules/main_app/build/CMakeFiles/CMakeOutput.log".
cmake failed with exit code 1

I have checked existing issues and online Documentation

kumekay commented 1 year ago

@ljden Thank you for the issue. We will take a look