diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/bazel/rules/python')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java | 8 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/bazel/rules/python/stub_template.txt | 17 |
2 files changed, 11 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java index 5b72cbd473..f82c9fef76 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/python/BazelPythonSemantics.java @@ -72,7 +72,11 @@ public class BazelPythonSemantics implements PythonSemantics { @Override public List<PathFragment> getImports(RuleContext ruleContext) { List<PathFragment> result = new ArrayList<>(); - PathFragment packageFragment = ruleContext.getLabel().getPackageIdentifier().getPathFragment(); + PathFragment packageFragment = ruleContext.getLabel().getPackageIdentifier().getRunfilesPath(); + // Python scripts start with x.runfiles/ as the module space, so everything must be manually + // adjusted to be relative to the workspace name. + packageFragment = new PathFragment(ruleContext.getWorkspaceName()) + .getRelative(packageFragment); for (String importsAttr : ruleContext.attributes().get("imports", Type.STRING_LIST)) { importsAttr = ruleContext.expandMakeVariables("includes", importsAttr); if (importsAttr.startsWith("/")) { @@ -83,7 +87,7 @@ public class BazelPythonSemantics implements PythonSemantics { PathFragment importsPath = packageFragment.getRelative(importsAttr).normalize(); if (!importsPath.isNormalized()) { ruleContext.attributeError("imports", - "Path references a path above the execution root."); + "Path " + importsAttr + " references a path above the execution root"); } result.add(importsPath); } diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/python/stub_template.txt b/src/main/java/com/google/devtools/build/lib/bazel/rules/python/stub_template.txt index bdce83eebe..29e373c2ac 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/python/stub_template.txt +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/python/stub_template.txt @@ -73,18 +73,11 @@ def Main(): sys.argv[0]) python_imports = '%imports%' - module_space_with_workspace_name = module_space - if '%workspace_name%' != '': - module_space_with_workspace_name = os.path.join(module_space, '%workspace_name%') - - python_path_entries = CreatePythonPathEntries( - python_imports, module_space_with_workspace_name) - - external_dir = os.path.join(module_space_with_workspace_name, 'external') - if os.path.isdir(external_dir): - external_entries = [os.path.join(external_dir, d) for d in os.listdir(external_dir)] - repositories = [d for d in external_entries if os.path.isdir(d)] - python_path_entries += repositories + python_path_entries = CreatePythonPathEntries(python_imports, module_space) + + repo_dirs = [os.path.join(module_space, d) for d in os.listdir(module_space)] + repositories = [d for d in repo_dirs if os.path.isdir(d)] + python_path_entries += repositories old_python_path = os.environ.get('PYTHONPATH') separator = ';' if IsWindows() else ':' |