Fix issue with module_root when building external repo Closes #242 Closes #249 PiperOrigin-RevId: 232897910
diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml index fef6760..f587cc9 100644 --- a/.bazelci/presubmit.yml +++ b/.bazelci/presubmit.yml
@@ -19,6 +19,9 @@ build_targets: - "..." - "@disable_tsetse_for_external_test//..." + # Run some targets again, but addressed as an external repo + # TODO(alexeagle): run all of them after fixing https://github.com/bazelbuild/rules_typescript/issues/243 + - "@build_bazel_rules_typescript//examples/some_library:lib" test_flags: # TODO(gregmagolan): shared libs needed by chrome & firefox not available on ubuntu1604 - "--test_tag_filters=-browser:chromium-local,-browser:firefox-local"
diff --git a/internal/common/module_mappings.bzl b/internal/common/module_mappings.bzl index a28b327..b74e5b8 100644 --- a/internal/common/module_mappings.bzl +++ b/internal/common/module_mappings.bzl
@@ -90,9 +90,17 @@ else: for s in srcs: - if not s.short_path.startswith(mr): + short_path = s.short_path + + # Execroot paths for external repositories should start with external/ + # But the short_path property of file gives the relative path from our workspace + # instead. We must correct this to compare with the module_root which is an + # execroot path. + if short_path.startswith("../"): + short_path = "external/" + short_path[3:] + if not short_path.startswith(mr): fail(("all sources must be under module root: %s, but found: %s" % - (mr, s.short_path))) + (mr, short_path))) if mn in mappings and mappings[mn] != mr: fail(("duplicate module mapping at %s: %s maps to both %s and %s" % (label, mn, mappings[mn], mr)), "deps")