bazel-contrib / rules_fuzzing

Bazel Starlark extensions for defining fuzz tests in Bazel projects
Apache License 2.0
87 stars 20 forks source link

Bazel examples failing to build due to obscure python deps error #228

Open xansec opened 1 year ago

xansec commented 1 year ago

Expected Behavior

rules_fuzzing examples work "out of the box" (after installing dependencies of course)

Actual Behavior

Examples are not working and are failing due to some strange python error.

Steps to Reproduce the Problem

  1. git clone git@github.com:bazelbuild/rules_fuzzing.git && cd rules_fuzzing
  2. Try to run bazel build //examples:empty_fuzz_target

This results in the following error:

INFO: Repository fuzzing_py_deps_absl_py instantiated at:
  /home/xansec/rules_fuzzing/WORKSPACE:31:13: in <toplevel>
  /home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/fuzzing_py_deps/requirements.bzl:47:20: in install_deps
Repository rule whl_library defined at:
  /home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/rules_python/python/pip_install/pip_repository.bzl:712:30: in <toplevel>
ERROR: An error occurred during the fetch of repository 'fuzzing_py_deps_absl_py':
   Traceback (most recent call last):
        File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/rules_python/python/pip_install/pip_repository.bzl", line 688, column 13, in _whl_library_impl
                fail("whl_library %s failed: %s (%s)" % (rctx.attr.name, result.stdout, result.stderr))
Error in fail: whl_library fuzzing_py_deps_absl_py failed:  (ERROR: Exception:
Traceback (most recent call last):
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/base_command.py", line 160, in exc_logging_wrapper
    status = run_func(*args)
             ^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 247, in wrapper
    return func(self, options, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/commands/wheel.py", line 108, in run
    session = self.get_default_session(options)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 98, in get_default_session
    self._session = self.enter_context(self._build_session(options))
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 125, in _build_session
    session = PipSession(
              ^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/network/session.py", line 343, in __init__
    self.headers["User-Agent"] = user_agent()
                                 ^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/network/session.py", line 175, in user_agent
    setuptools_dist = get_default_environment().get_distribution("setuptools")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 188, in get_distribution
    return next(matches, None)
           ^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 183, in <genexpr>
    matches = (
              ^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/base.py", line 612, in iter_all_distributions
    for dist in self._iter_distributions():
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 175, in _iter_distributions
    yield from finder.find(location)
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 79, in find
    for dist, info_location in self._find_impl(location):
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 64, in _find_impl
    raw_name = get_dist_name(dist)
               ^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_compat.py", line 52, in get_dist_name
    name = cast(Any, dist).name
           ^^^^^^^^^^^^^^^^^^^^
AttributeError: 'PathDistribution' object has no attribute 'name'
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/__main__.py", line 31, in <module>
    sys.exit(_main())
             ^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/main.py", line 70, in main
    return command.main(cmd_args)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/base_command.py", line 101, in main
    return self._main(args)
           ^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/base_command.py", line 216, in _main
    self.handle_pip_version_check(options)
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 179, in handle_pip_version_check
    session = self._build_session(
              ^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 125, in _build_session
    session = PipSession(
              ^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/network/session.py", line 343, in __init__
    self.headers["User-Agent"] = user_agent()
                                 ^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/network/session.py", line 175, in user_agent
    setuptools_dist = get_default_environment().get_distribution("setuptools")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 188, in get_distribution
    return next(matches, None)
           ^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 183, in <genexpr>
    matches = (
              ^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/base.py", line 612, in iter_all_distributions
    for dist in self._iter_distributions():
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 175, in _iter_distributions
    yield from finder.find(location)
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 79, in find
    for dist, info_location in self._find_impl(location):
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 64, in _find_impl
    raw_name = get_dist_name(dist)
               ^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_compat.py", line 52, in get_dist_name
    name = cast(Any, dist).name
           ^^^^^^^^^^^^^^^^^^^^
AttributeError: 'PathDistribution' object has no attribute 'name'
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/rules_python/python/pip_install/tools/wheel_installer/wheel_installer.py", line 450, in <module>
    main()
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/rules_python/python/pip_install/tools/wheel_installer/wheel_installer.py", line 427, in main
    subprocess.run(pip_args, check=True, env=env)
  File "/usr/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/usr/bin/python3', '-m', 'pip', '--isolated', 'wheel', '--no-deps', '--require-hashes', '-r', '/tmp/tmp2tuw44f9']' returned non-zero exit status 1.
)
ERROR: /home/xansec/rules_fuzzing/WORKSPACE:31:13: fetching whl_library rule //external:fuzzing_py_deps_absl_py: Traceback (most recent call last):
        File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/rules_python/python/pip_install/pip_repository.bzl", line 688, column 13, in _whl_library_impl
                fail("whl_library %s failed: %s (%s)" % (rctx.attr.name, result.stdout, result.stderr))
Error in fail: whl_library fuzzing_py_deps_absl_py failed:  (ERROR: Exception:
Traceback (most recent call last):
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/base_command.py", line 160, in exc_logging_wrapper
    status = run_func(*args)
             ^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 247, in wrapper
    return func(self, options, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/commands/wheel.py", line 108, in run
    session = self.get_default_session(options)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 98, in get_default_session
    self._session = self.enter_context(self._build_session(options))
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 125, in _build_session
    session = PipSession(
              ^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/network/session.py", line 343, in __init__
    self.headers["User-Agent"] = user_agent()
                                 ^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/network/session.py", line 175, in user_agent
    setuptools_dist = get_default_environment().get_distribution("setuptools")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 188, in get_distribution
    return next(matches, None)
           ^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 183, in <genexpr>
    matches = (
              ^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/base.py", line 612, in iter_all_distributions
    for dist in self._iter_distributions():
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 175, in _iter_distributions
    yield from finder.find(location)
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 79, in find
    for dist, info_location in self._find_impl(location):
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 64, in _find_impl
    raw_name = get_dist_name(dist)
               ^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_compat.py", line 52, in get_dist_name
    name = cast(Any, dist).name
           ^^^^^^^^^^^^^^^^^^^^
AttributeError: 'PathDistribution' object has no attribute 'name'
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/__main__.py", line 31, in <module>
    sys.exit(_main())
             ^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/main.py", line 70, in main
    return command.main(cmd_args)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/base_command.py", line 101, in main
    return self._main(args)
           ^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/base_command.py", line 216, in _main
    self.handle_pip_version_check(options)
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 179, in handle_pip_version_check
    session = self._build_session(
              ^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 125, in _build_session
    session = PipSession(
              ^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/network/session.py", line 343, in __init__
    self.headers["User-Agent"] = user_agent()
                                 ^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/network/session.py", line 175, in user_agent
    setuptools_dist = get_default_environment().get_distribution("setuptools")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 188, in get_distribution
    return next(matches, None)
           ^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 183, in <genexpr>
    matches = (
              ^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/base.py", line 612, in iter_all_distributions
    for dist in self._iter_distributions():
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 175, in _iter_distributions
    yield from finder.find(location)
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 79, in find
    for dist, info_location in self._find_impl(location):
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 64, in _find_impl
    raw_name = get_dist_name(dist)
               ^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_compat.py", line 52, in get_dist_name
    name = cast(Any, dist).name
           ^^^^^^^^^^^^^^^^^^^^
AttributeError: 'PathDistribution' object has no attribute 'name'
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/rules_python/python/pip_install/tools/wheel_installer/wheel_installer.py", line 450, in <module>
    main()
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/rules_python/python/pip_install/tools/wheel_installer/wheel_installer.py", line 427, in main
    subprocess.run(pip_args, check=True, env=env)
  File "/usr/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/usr/bin/python3', '-m', 'pip', '--isolated', 'wheel', '--no-deps', '--require-hashes', '-r', '/tmp/tmp2tuw44f9']' returned non-zero exit status 1.
)
ERROR: /home/xansec/rules_fuzzing/fuzzing/tools/BUILD:31:10: //fuzzing/tools:make_corpus_dir depends on @fuzzing_py_deps_absl_py//:pkg in repository @fuzzing_py_deps_absl_py which failed to fetch. no such package '@fuzzing_py_deps_absl_py//': whl_library fuzzing_py_deps_absl_py failed:  (ERROR: Exception:
Traceback (most recent call last):
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/base_command.py", line 160, in exc_logging_wrapper
    status = run_func(*args)
             ^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 247, in wrapper
    return func(self, options, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/commands/wheel.py", line 108, in run
    session = self.get_default_session(options)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 98, in get_default_session
    self._session = self.enter_context(self._build_session(options))
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 125, in _build_session
    session = PipSession(
              ^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/network/session.py", line 343, in __init__
    self.headers["User-Agent"] = user_agent()
                                 ^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/network/session.py", line 175, in user_agent
    setuptools_dist = get_default_environment().get_distribution("setuptools")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 188, in get_distribution
    return next(matches, None)
           ^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 183, in <genexpr>
    matches = (
              ^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/base.py", line 612, in iter_all_distributions
    for dist in self._iter_distributions():
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 175, in _iter_distributions
    yield from finder.find(location)
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 79, in find
    for dist, info_location in self._find_impl(location):
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 64, in _find_impl
    raw_name = get_dist_name(dist)
               ^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_compat.py", line 52, in get_dist_name
    name = cast(Any, dist).name
           ^^^^^^^^^^^^^^^^^^^^
AttributeError: 'PathDistribution' object has no attribute 'name'
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/__main__.py", line 31, in <module>
    sys.exit(_main())
             ^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/main.py", line 70, in main
    return command.main(cmd_args)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/base_command.py", line 101, in main
    return self._main(args)
           ^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/base_command.py", line 216, in _main
    self.handle_pip_version_check(options)
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 179, in handle_pip_version_check
    session = self._build_session(
              ^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/cli/req_command.py", line 125, in _build_session
    session = PipSession(
              ^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/network/session.py", line 343, in __init__
    self.headers["User-Agent"] = user_agent()
                                 ^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/network/session.py", line 175, in user_agent
    setuptools_dist = get_default_environment().get_distribution("setuptools")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 188, in get_distribution
    return next(matches, None)
           ^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 183, in <genexpr>
    matches = (
              ^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/base.py", line 612, in iter_all_distributions
    for dist in self._iter_distributions():
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 175, in _iter_distributions
    yield from finder.find(location)
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 79, in find
    for dist, info_location in self._find_impl(location):
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_envs.py", line 64, in _find_impl
    raw_name = get_dist_name(dist)
               ^^^^^^^^^^^^^^^^^^^
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/pypi__pip/pip/_internal/metadata/importlib/_compat.py", line 52, in get_dist_name
    name = cast(Any, dist).name
           ^^^^^^^^^^^^^^^^^^^^
AttributeError: 'PathDistribution' object has no attribute 'name'
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/rules_python/python/pip_install/tools/wheel_installer/wheel_installer.py", line 450, in <module>
    main()
  File "/home/xansec/.cache/bazel/_bazel_xansec/3c1ff63d7ec3e40e9da6884ef889497c/external/rules_python/python/pip_install/tools/wheel_installer/wheel_installer.py", line 427, in main
    subprocess.run(pip_args, check=True, env=env)
  File "/usr/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/usr/bin/python3', '-m', 'pip', '--isolated', 'wheel', '--no-deps', '--require-hashes', '-r', '/tmp/tmp2tuw44f9']' returned non-zero exit status 1.
)
ERROR: Analysis of target '//examples:empty_fuzz_test' failed; build aborted: 
INFO: Elapsed time: 0.920s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded, 0 targets configured)
    Fetching @local_config_cc; fetching

This seems to be a pip issue? For the record, I also forked and created a release from HEAD since I saw that rules_python and installation steps were updated, however following the latest commit did not resolve the problem either.

Things I've tried

Specifications

stefanbucur commented 1 year ago

Thanks for reporting this issue! Can you confirm it is still happening at the repository HEAD? There were some fixes checked in past v0.3.2, but they haven't yet been incorporated in a new release.

xansec commented 1 year ago

Yes, I can confirm. I created my own release here pointing to HEAD: https://github.com/xansec/rules_fuzzing/releases/tag/rules_fuzzing-0.3.3

And received the same issue. Only thing I changed was default clang toolchain because I didn't want to install clang10, but this should be unrelated to the problem.

xansec commented 1 year ago

Also of note, this command (referenced in the above error output):

subprocess.CalledProcessError: Command '['/usr/bin/python3', '-m', 'pip', '--isolated', 'wheel', '--no-deps', 
'--require-hashes', '-r', '/tmp/tmp2tuw44f9']' returned non-zero exit status 1.

when I run manually succeeds, so this must be failing in the bazel environment somewhere.

FreezyLemon commented 1 year ago

I hit this too. The relevant error seems to be: AttributeError: 'PathDistribution' object has no attribute 'name'

Which seems to be a problem with python 3.11 and the importlib_metadata package.

FreezyLemon commented 1 year ago

The following is a workaround that worked for me:

  1. Install Python 3.9
  2. Symlink python3 to be Python 3.9
  3. Rerun the bazel command
xansec commented 11 months ago

Thanks! As an aside, I was also able to workaround this with pyenv:

pyenv global 3.9.0

I'm sure local will work if you use conda or venvs.

florianGla commented 5 months ago

Any plans to support python 3.10 or later? Ubuntu 24.04 ships with python 3.12 by default and throws a similar dependency error (cc @fmeum).

fmeum commented 5 months ago

@florianGla What is the exact error you are seeing and what's the command you ran to get it? I just verified that I can run all the examples just fine in a Docker container with Ubuntu 24.04, clang 18 and Python 3.12.