From d1d613c9e93ce69e3880728350d1cff959f6845d Mon Sep 17 00:00:00 2001 From: plf Date: Fri, 13 Jul 2018 06:39:28 -0700 Subject: C++: Implements py_wrap_cc in Skylark RELNOTES:none PiperOrigin-RevId: 204463998 --- .../lib/rules/python/PyCcLinkParamsProvider.java | 21 ++++++++++++++++++--- .../build/lib/rules/python/PythonConfiguration.java | 6 ++++++ 2 files changed, 24 insertions(+), 3 deletions(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyCcLinkParamsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyCcLinkParamsProvider.java index 68d246d6b1..67be6aeda7 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/python/PyCcLinkParamsProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyCcLinkParamsProvider.java @@ -15,29 +15,44 @@ package com.google.devtools.build.lib.rules.python; import com.google.common.base.Function; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.packages.NativeInfo; +import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.rules.cpp.AbstractCcLinkParamsStore; import com.google.devtools.build.lib.rules.cpp.CcLinkingInfo; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; +import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; /** A target that provides C++ libraries to be linked into Python targets. */ @Immutable @AutoCodec -public final class PyCcLinkParamsProvider implements TransitiveInfoProvider { +@SkylarkModule( + name = "PyCcLinkParamsProvider", + documented = false, + category = SkylarkModuleCategory.PROVIDER, + doc = "Wrapper for every C++ linking provider") +public final class PyCcLinkParamsProvider extends NativeInfo { + public static final NativeProvider PROVIDER = + new NativeProvider( + PyCcLinkParamsProvider.class, "PyCcLinkParamsProvider") {}; + private final CcLinkingInfo ccLinkingInfo; public PyCcLinkParamsProvider(CcLinkingInfo ccLinkingInfo) { + super(PROVIDER); this.ccLinkingInfo = ccLinkingInfo; } + @SkylarkCallable(name = "cc_linking_info", doc = "", documented = false) public CcLinkingInfo getCcLinkingInfo() { return ccLinkingInfo; } public static final Function TO_LINK_PARAMS = input -> { - PyCcLinkParamsProvider provider = input.getProvider(PyCcLinkParamsProvider.class); + PyCcLinkParamsProvider provider = input.get(PyCcLinkParamsProvider.PROVIDER); return provider == null ? null : provider.getCcLinkingInfo().getCcLinkParamsStore(); }; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PythonConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/python/PythonConfiguration.java index b152c7a745..4118856f1e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/python/PythonConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/python/PythonConfiguration.java @@ -21,6 +21,8 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; import com.google.devtools.build.lib.util.OS; import com.google.devtools.common.options.TriState; import java.util.Arrays; @@ -32,6 +34,10 @@ import java.util.List; */ @AutoCodec @Immutable +@SkylarkModule( + name = "py", + doc = "A configuration fragment for SWIG.", + category = SkylarkModuleCategory.CONFIGURATION_FRAGMENT) public class PythonConfiguration extends BuildConfiguration.Fragment { private final boolean ignorePythonVersionAttribute; private final PythonVersion defaultPythonVersion; -- cgit v1.2.3