cbley
cbley

Reputation: 4608

Why does bazel fail with header not under the specified strip prefix

I am using bazel 3.7.2 (the same project works OK with bazel 3.3.1)

In my build file I use:

cc_library(
   name = "xft",
   hdrs = ["@nixpkgs_xft//:include"],                                                                                                         
   strip_include_prefix = "/external/nixpkgs_xft/include",
)

Running bazel build target, bazel complains:

BUILD:71:11: in cc_library rule //target:xft: header 'external/nixpkgs_xft/include/X11/Xft/Xft.h' is not under the specified strip prefix 'external/nixpkgs_xft/include'

Somehow bazel got a different understanding of a header's prefix... How is this supposed to work?

external/nixpkgs_xft/include/X11/Xft/Xft.h
external/nixpkgs_xft/include

Upvotes: 3

Views: 2078

Answers (1)

cbley
cbley

Reputation: 4608

OK, the error message is really confusing. I looked through the code and found that there is a different thing compared to the prefix than the header file: the repository relative path is compared to the prefix (but the error message prints the "exec path").

Seems in newer Bazel, you do no longer need to include the exernal/foo part of the path, so this works:

cc_library(
    name = "xft",
    hdrs = ["@nixpkgs_xft//:include"],
    strip_include_prefix = "/include",
)

Upvotes: 4

Related Questions