forked from bazelbuild/bazel
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
The new provider marks runfiles libraries as such and will be used by both Bazel itself and language rules to emit additional information required for executable targets to find their runfiles in the presence of repository mappings. Work towards bazelbuild#16124 Closes bazelbuild#16125. PiperOrigin-RevId: 470966227 Change-Id: Ie9b4dc69bdd4d8f85485fa04efa347ebbd07b8b5
- Loading branch information
1 parent
a71ebc1
commit 2a28909
Showing
6 changed files
with
148 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
56 changes: 56 additions & 0 deletions
56
src/main/java/com/google/devtools/build/lib/analysis/RunfilesLibraryInfo.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
// Copyright 2022 The Bazel Authors. All rights reserved. | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
package com.google.devtools.build.lib.analysis; | ||
|
||
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; | ||
import com.google.devtools.build.lib.packages.BuiltinProvider; | ||
import com.google.devtools.build.lib.packages.NativeInfo; | ||
import com.google.devtools.build.lib.starlarkbuildapi.RunfilesLibraryInfoApi; | ||
|
||
/** | ||
* Data-less provider that signals to direct dependents that this target is a runfiles library. | ||
* | ||
* <p>Rules that find this provider advertised by a dependency may use this as a signal to generate | ||
* code that helps with runfiles discovery, e.g., by providing a constant containing the name of the | ||
* repository that defines the rule. | ||
* | ||
* <p>Bazel itself uses the presence of this provider on a rule as a sign that it should include the | ||
* repository mapping of the repository containing the rule in the repository mapping manifest of | ||
* executable transitive dependents. | ||
*/ | ||
@Immutable | ||
public final class RunfilesLibraryInfo extends NativeInfo implements RunfilesLibraryInfoApi { | ||
|
||
public static final RunfilesLibraryInfoProvider PROVIDER = new RunfilesLibraryInfoProvider(); | ||
|
||
@Override | ||
public RunfilesLibraryInfoProvider getProvider() { | ||
return PROVIDER; | ||
} | ||
|
||
/** Provider for {@link RunfilesLibraryInfo}. */ | ||
public static class RunfilesLibraryInfoProvider extends BuiltinProvider<RunfilesLibraryInfo> | ||
implements RunfilesLibraryInfoApi.RunfilesLibraryInfoApiProvider { | ||
|
||
private RunfilesLibraryInfoProvider() { | ||
super("RunfilesLibraryInfo", RunfilesLibraryInfo.class); | ||
} | ||
|
||
@Override | ||
public RunfilesLibraryInfoApi constructor() { | ||
return new RunfilesLibraryInfo(); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
47 changes: 47 additions & 0 deletions
47
src/main/java/com/google/devtools/build/lib/starlarkbuildapi/RunfilesLibraryInfoApi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
// Copyright 2022 The Bazel Authors. All rights reserved. | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
package com.google.devtools.build.lib.starlarkbuildapi; | ||
|
||
import com.google.devtools.build.docgen.annot.DocCategory; | ||
import com.google.devtools.build.docgen.annot.StarlarkConstructor; | ||
import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi; | ||
import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi; | ||
import net.starlark.java.annot.StarlarkBuiltin; | ||
import net.starlark.java.annot.StarlarkMethod; | ||
|
||
/** Interface for runfiles library info. */ | ||
@StarlarkBuiltin( | ||
name = "RunfilesLibraryInfo", | ||
category = DocCategory.PROVIDER, | ||
doc = | ||
"Signals to direct dependents as well as Bazel itself that this target is a runfiles" | ||
+ " library. For example, rules for compiled languages may choose to generate and" | ||
+ " compile additional code that gives access to the name of the repository defining" | ||
+ " the current target if they find this provider advertised by a direct" | ||
+ " dependency.<p>This provider carries no data.") | ||
public interface RunfilesLibraryInfoApi extends StructApi { | ||
|
||
/** Interface for runfiles library info provider. */ | ||
@StarlarkBuiltin(name = "Provider", category = DocCategory.PROVIDER, documented = false) | ||
interface RunfilesLibraryInfoApiProvider extends ProviderApi { | ||
|
||
@StarlarkMethod( | ||
name = "RunfilesLibraryInfo", | ||
doc = "The <code>RunfilesLibraryInfo</code> constructor.", | ||
selfCall = true) | ||
@StarlarkConstructor | ||
RunfilesLibraryInfoApi constructor(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters