-
Notifications
You must be signed in to change notification settings - Fork 547
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Removal of PyInfo from Bazel causes semantic change #2414
Comments
Just thinking out loud.
If fib isn't importable, then it would mean sys.path is different or the
file isn't present.
If PyInfo got lost, either is likely. Our test coverage for built-in PyInfo
interop is pretty light.
~~Otherwise, the other thing might be safe path (we enable it by default) it removes the main files dir from system.path, which the example is relying on. The version of python used can affect this. That it varies by bazel version makes me doubt this cause, though.~~ edit: the example has fib in another dir using `imports=[.]`. safepath wouldn't affect tihs
|
I was able to repro. repro note: PR was updated to use a repo-root based import. Needs to be changed back to sys.path is missing the fibonacci. So yeah, something is causing the |
Ok, I think I figured it out. There's an operator precdence bug in collect_imports() that causes all imports strings to be dropped, but only if BuiltinPyInfo is none. I'll work on a fix. |
The collect_imports() function added import strings from BuiltinPyInfo if it was non-None. However, operator precedence caused the `if-else` ternary to ignore both list comprehensions (one for PyInfo and one for BuiltinPyInfo) if BuiltinPyInfo was None. To fix, I rewrote the function as a regular for loop to eliminate the ambiguous looking ternary expression. Fixes: #2414
According to the comments in bazelbuild/bazel#24180, releasing a fix for this is a Bazel 8 blocker, so I'll prepare a release |
🐞 bug report
Description
I upgraded Bazel to use rules_python 0.39.0 -> all the tests pass.
I removed python providers from Bazel -> smoke tests started failing.
🔬 Minimal Reproduction
Checkout bazelbuild/bazel#24343
bazel build //src/test/shell/bazel:bazel_example_test --test_filter=test_native_python
🔥 Exception or Error
https://storage.googleapis.com/bazel-untrusted-buildkite-artifacts/01932fe0-131a-4503-8eac-2516742f6f27/src/test/shell/bazel/bazel_example_test/shard_1_of_3/test_attempts/attempt_1.log
Example in: https://github.com/bazelbuild/bazel/blob/master/examples/py_native/bin.py
My thoughs
It looks like that part of information was in Builtin providers that now gets lost.
The text was updated successfully, but these errors were encountered: