Skip to content

Commit

Permalink
Add debug printing for cc-related Starlark objects
Browse files Browse the repository at this point in the history
RELNOTES: None.
PiperOrigin-RevId: 288680816
  • Loading branch information
c-parsons authored and copybara-github committed Jan 8, 2020
1 parent 8ec182a commit 38c7c61
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import com.google.devtools.build.lib.skylarkbuildapi.cpp.LinkerInputApi;
import com.google.devtools.build.lib.syntax.Depset;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Printer;
import com.google.devtools.build.lib.syntax.Sequence;
import com.google.devtools.build.lib.syntax.SkylarkType;
import com.google.devtools.build.lib.syntax.Starlark;
Expand Down Expand Up @@ -234,6 +235,26 @@ public List<Linkstamp> getLinkstamps() {
return linkstamps;
}

@Override
public void debugPrint(Printer printer) {
printer.append("<LinkerInput(owner=");
owner.debugPrint(printer);
printer.append(", libraries=[");
for (LibraryToLink libraryToLink : libraries) {
libraryToLink.debugPrint(printer);
printer.append(", ");
}
printer.append("], userLinkFlags=[");
printer.append(Joiner.on(", ").join(userLinkFlags));
printer.append("], nonCodeInputs=[");
for (Artifact nonCodeInput : nonCodeInputs) {
nonCodeInput.debugPrint(printer);
printer.append(", ");
}
// TODO(cparsons): Add debug repesentation of linkstamps.
printer.append("])>");
}

public static Builder builder() {
return new Builder();
}
Expand Down Expand Up @@ -325,6 +346,16 @@ public String toString() {
private final NestedSet<LinkerInput> linkerInputs;
private final ExtraLinkTimeLibraries extraLinkTimeLibraries;

@Override
public void debugPrint(Printer printer) {
printer.append("<CcLinkingContext([");
for (LinkerInput linkerInput : linkerInputs.toList()) {
linkerInput.debugPrint(printer);
printer.append(", ");
}
printer.append("])>");
}

public CcLinkingContext(
NestedSet<LinkerInput> linkerInputs, ExtraLinkTimeLibraries extraLinkTimeLibraries) {
this.linkerInputs = linkerInputs;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@

package com.google.devtools.build.lib.rules.cpp;

import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.FeatureConfigurationApi;
import com.google.devtools.build.lib.syntax.Printer;

/**
* Wrapper for {@link FeatureConfiguration}, {@link CppConfiguration}, and {@link BuildOptions}.
Expand Down Expand Up @@ -55,6 +57,13 @@ public FeatureConfiguration getFeatureConfiguration() {
return featureConfiguration;
}

@Override
public void debugPrint(Printer printer) {
printer.append("<FeatureConfiguration(");
printer.append(Joiner.on(", ").join(featureConfiguration.getEnabledFeatureNames()));
printer.append(")>");
}

/**
* Get {@link CppConfiguration} that is threaded along with {@link FeatureConfiguration}. Do this
* only when you're completely aware of why this method was added and hlopko@ allowed you to.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,15 @@

import com.google.auto.value.AutoValue;
import com.google.auto.value.AutoValue.CopyAnnotations;
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.LibraryToLinkApi;
import com.google.devtools.build.lib.syntax.Printer;
import com.google.devtools.build.lib.syntax.Sequence;
import com.google.devtools.build.lib.syntax.SkylarkType;
import com.google.devtools.build.lib.syntax.StarlarkList;
Expand Down Expand Up @@ -131,6 +133,34 @@ public Sequence<Artifact> getPicObjectFilesForStarlark() {

abstract boolean getDisableWholeArchive();

@Override
public void debugPrint(Printer printer) {
printer.append("<LibraryToLink(");
printer.append(
Joiner.on(", ")
.skipNulls()
.join(
mapEntry("object", getObjectFiles()),
mapEntry("pic_objects", getPicObjectFiles()),
mapEntry("static_library", getStaticLibrary()),
mapEntry("pic_static_library", getPicStaticLibrary()),
mapEntry("dynamic_library", getDynamicLibrary()),
mapEntry("resolved_symlink_dynamic_library", getResolvedSymlinkDynamicLibrary()),
mapEntry("interface_library", getInterfaceLibrary()),
mapEntry(
"resolved_symlink_interface_library", getResolvedSymlinkInterfaceLibrary()),
mapEntry("alwayslink", getAlwayslink())));
printer.append(")>");
}

private static String mapEntry(String keyName, Object value) {
if (value == null) {
return null;
} else {
return keyName + "=" + value;
}
}

public static Builder builder() {
return new AutoValue_LibraryToLink.Builder()
.setMustKeepDebug(false)
Expand Down

0 comments on commit 38c7c61

Please sign in to comment.