Skip to content

Commit

Permalink
Update to gradle 8.11, fix deprecation warnings (#227)
Browse files Browse the repository at this point in the history
* Update to gradle 8.11, fix deprecation warnings

* Fix diff
  • Loading branch information
ThadHouse authored Nov 17, 2024
1 parent f5f1051 commit d7a64d6
Show file tree
Hide file tree
Showing 18 changed files with 150 additions and 69 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import java.io.ByteArrayOutputStream;

import org.gradle.api.Project;
import org.gradle.internal.os.OperatingSystem;
import org.gradle.process.ExecOperations;

public class NativePlatforms {
public static final String desktop = desktopOS() + desktopArch();
Expand Down Expand Up @@ -34,7 +34,7 @@ public static String desktopArchDirect() {
return (arch.equals("amd64") || arch.equals("x86_64")) ? x64arch : x86arch;
}

public static String desktopPlatformArch(Project project) {
public static String desktopPlatformArch(ExecOperations operations) {
if (OperatingSystem.current().isWindows()) {
String arch = System.getenv("PROCESSOR_ARCHITECTURE");
String wow64Arch = System.getenv("PROCESSOR_ARCHITEW6432");
Expand All @@ -43,7 +43,7 @@ public static String desktopPlatformArch(Project project) {
String desktop = desktopArchDirect();
if (desktop.equals("x86-64")) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
project.exec(spec -> {
operations.exec(spec -> {
spec.commandLine("sysctl", "-in", "sysctl.proc_translated");
spec.setStandardOutput(os);
spec.setIgnoreExitValue(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
import javax.inject.Inject;

import org.gradle.api.Action;
import org.gradle.api.Project;
import org.gradle.api.Task;
import org.gradle.nativeplatform.NativeBinarySpec;
import org.gradle.nativeplatform.tasks.AbstractLinkTask;
import org.gradle.process.ExecOperations;

import edu.wpi.first.deployutils.log.ETLogger;
import edu.wpi.first.deployutils.log.ETLoggerFactory;
Expand All @@ -21,7 +21,7 @@ public class OrderedStripTask implements Action<Task> {
public final NativeBinarySpec binary;
public final AbstractLinkTask linkTask;
public final GccExtension gcc;
public final Project project;
public final ExecOperations operations;
private boolean performStripAll = false;
private boolean performDebugStrip = false;

Expand All @@ -43,11 +43,11 @@ public void setPerformDebugStrip(boolean stripDebug) {
}

@Inject
public OrderedStripTask(ToolchainExtension tcExt, NativeBinarySpec binary, AbstractLinkTask linkTask, GccExtension gcc, Project project) {
public OrderedStripTask(ToolchainExtension tcExt, NativeBinarySpec binary, AbstractLinkTask linkTask, GccExtension gcc, ExecOperations operations) {
this.tcExt = tcExt;
this.binary = binary;
this.linkTask = linkTask;
this.project = project;
this.operations = operations;
this.gcc = gcc;
}

Expand Down Expand Up @@ -79,17 +79,17 @@ public void execute(Task task) {
String objcopy = disc.tool("objcopy").get().toString();
String strip = disc.tool("strip").get().toString();

project.exec((ex) -> {
operations.exec((ex) -> {
ex.commandLine(objcopy, "--only-keep-debug", mainFileStr, debugFile);
});
project.exec((ex) -> {
operations.exec((ex) -> {
ex.commandLine(strip, "-g", mainFileStr);
});
project.exec((ex) -> {
operations.exec((ex) -> {
ex.commandLine(objcopy, "--add-gnu-debuglink=" + debugFile, mainFileStr);
});
if (performStripAll) {
project.exec((ex) -> {
operations.exec((ex) -> {
ex.commandLine(strip, "--strip-all", "--discard-all", mainFileStr);
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.gradle.nativeplatform.toolchain.internal.metadata.CompilerMetaDataProvider;
import org.gradle.nativeplatform.toolchain.internal.metadata.CompilerMetaDataProviderFactory;
import org.gradle.platform.base.internal.toolchain.SearchResult;
import org.gradle.process.ExecOperations;
import org.gradle.process.ExecSpec;
import org.gradle.util.internal.VersionNumber;

Expand All @@ -36,19 +37,24 @@ public abstract class ToolchainDiscoverer implements Named {
private final Function<String, String> composer;
private final ToolchainDescriptorBase descriptor;

public static ToolchainDiscoverer createDiscoverer(String name, ToolchainDescriptorBase descriptor, Provider<File> rootDir, Function<String, String> composer, Project project) {
public static ToolchainDiscoverer createDiscoverer(String name, ToolchainDescriptorBase descriptor,
Provider<File> rootDir, Function<String, String> composer, Project project) {
return project.getObjects().newInstance(ToolchainDiscoverer.class, name, descriptor, rootDir, composer);
}

public static ToolchainDiscovererProperty createProperty(String name, ToolchainDescriptorBase descriptor, Provider<File> rootDir, Function<String, String> composer, Project project) {
public static ToolchainDiscovererProperty createProperty(String name, ToolchainDescriptorBase descriptor,
Provider<File> rootDir, Function<String, String> composer, Project project) {
ToolchainDiscovererProperty prop = project.getObjects().newInstance(ToolchainDiscovererProperty.class, name);
Provider<ToolchainDiscoverer> disc = project.provider(() -> project.getObjects().newInstance(ToolchainDiscoverer.class, name, descriptor, rootDir, composer));
Provider<ToolchainDiscoverer> disc = project.provider(
() -> project.getObjects().newInstance(ToolchainDiscoverer.class, name, descriptor, rootDir, composer));
prop.getDiscoverers().add(disc);
return prop;
}

@Inject
public ToolchainDiscoverer(String name, ToolchainDescriptorBase descriptor, Provider<File> rootDir, Function<String, String> composer, CompilerMetaDataProviderFactory metaDataProviderFactory, ProviderFactory providers) {
public ToolchainDiscoverer(String name, ToolchainDescriptorBase descriptor, Provider<File> rootDir,
Function<String, String> composer, CompilerMetaDataProviderFactory metaDataProviderFactory,
ProviderFactory providers) {
this.name = name;
this.rootDir = rootDir;
this.composer = composer;
Expand All @@ -75,7 +81,8 @@ public boolean exists() {
}

public boolean versionValid() {
if (!exists()) return false;
if (!exists())
return false;

VersionNumber v = metadata(null).get().getVersion();
String versionLo = descriptor.getVersionLow().get();
Expand Down Expand Up @@ -200,22 +207,24 @@ public String getName() {
private Optional<GccMetadata> metadata(File file, DiagnosticsVisitor visitor) {
if (file == null || !file.exists())
return Optional.empty();
SearchResult<GccMetadata> searchresult = metadataProvider.getCompilerMetaData(new ArrayList<File>(), compilerSpec -> {
compilerSpec.executable(file);
});
SearchResult<GccMetadata> searchresult = metadataProvider.getCompilerMetaData(new ArrayList<File>(),
compilerSpec -> {
compilerSpec.executable(file);
});
if (visitor != null)
searchresult.explain(visitor);
return Optional.ofNullable(searchresult.getComponent());
}

public static List<File> systemPath(Project project, ToolchainGraphBuildService tce, Function<String, String> composer) {
public static List<File> systemPath(Project project, ToolchainGraphBuildService tce,
Function<String, String> composer, ExecOperations operations) {
String tool = composer == null ? "g++" : composer.apply("gcc");
String whichResult = tce.getWhichResult(tool);
if (whichResult == null) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
ByteArrayOutputStream errStr = new ByteArrayOutputStream();

project.exec((ExecSpec spec) -> {
operations.exec((ExecSpec spec) -> {
spec.commandLine(OperatingSystem.current().isWindows() ? "where.exe" : "which", tool);
spec.setStandardOutput(os);
spec.setErrorOutput(errStr);
Expand All @@ -228,18 +237,22 @@ public static List<File> systemPath(Project project, ToolchainGraphBuildService

return Arrays.stream(whichResult.split("\n"))
.map(String::trim)
.filter(((Predicate<String>)String::isEmpty).negate())
.map((String path) -> { return new File(path).getParentFile().getParentFile(); })
.filter(((Predicate<String>) String::isEmpty).negate())
.map((String path) -> {
return new File(path).getParentFile().getParentFile();
})
.collect(Collectors.toList());
}

public static ToolchainDiscovererProperty forSystemPath(Project project, ToolchainGraphBuildService tce, ToolchainDescriptorBase descriptor, Function<String, String> composer) {
ToolchainDiscovererProperty prop = project.getObjects().newInstance(ToolchainDiscovererProperty.class, "PathList");
public static ToolchainDiscovererProperty forSystemPath(Project project, ToolchainGraphBuildService tce,
ToolchainDescriptorBase descriptor, Function<String, String> composer, ExecOperations operations) {
ToolchainDiscovererProperty prop = project.getObjects().newInstance(ToolchainDiscovererProperty.class,
"PathList");

Provider<List<ToolchainDiscoverer>> p = project.provider(() -> {
List<ToolchainDiscoverer> disc = new ArrayList<>();
int i = 0;
for (File f : systemPath(project, tce, composer)) {
for (File f : systemPath(project, tce, composer, operations)) {
Provider<File> fp = project.provider(() -> f);
disc.add(ToolchainDiscoverer.createDiscoverer("Path" + (i++), descriptor, fp, composer, project));
}
Expand All @@ -250,7 +263,9 @@ public static ToolchainDiscovererProperty forSystemPath(Project project, Toolcha
}

private static Optional<File> join(Optional<File> f, String join) {
return optFile((File)(f.map((File file) -> { return new File(file, join); }).orElse(null)));
return optFile((File) (f.map((File file) -> {
return new File(file, join);
}).orElse(null)));
}

private static Optional<File> optFile(File f) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.gradle.internal.logging.text.DiagnosticsVisitor;
import org.gradle.internal.os.OperatingSystem;
import org.gradle.nativeplatform.toolchain.Gcc;
import org.gradle.process.ExecOperations;

import edu.wpi.first.toolchain.arm32.Arm32ToolchainPlugin;
import edu.wpi.first.toolchain.arm64.Arm64ToolchainPlugin;
Expand Down Expand Up @@ -45,7 +46,7 @@ public ToolchainGraphBuildService getToolchainGraphService() {
}

@Inject
public ToolchainExtension(Project project, ToolchainGraphBuildService rootExtension) {
public ToolchainExtension(Project project, ToolchainGraphBuildService rootExtension, ExecOperations operations) {
this.project = project;
this.rootExtension = rootExtension;

Expand All @@ -67,13 +68,15 @@ public ToolchainExtension(Project project, ToolchainGraphBuildService rootExtens
descriptor.getVersionLow().convention("0.0");
descriptor.getVersionHigh().convention("1000.0");

descriptor.getToolchainPlatform().set(project.provider(() -> config.getOperatingSystem().get() + config.getArchitecture().get()));
descriptor.getToolchainPlatform().set(
project.provider(() -> config.getOperatingSystem().get() + config.getArchitecture().get()));
toolchainDescriptors.add(descriptor);

descriptor.getDiscoverers().add(ToolchainDiscoverer.forSystemPath(project, rootExtension, descriptor, name -> {
String exeSuffix = OperatingSystem.current().isWindows() ? ".exe" : "";
return config.getCompilerPrefix().get() + name + exeSuffix;
}));
descriptor.getDiscoverers()
.add(ToolchainDiscoverer.forSystemPath(project, rootExtension, descriptor, name -> {
String exeSuffix = OperatingSystem.current().isWindows() ? ".exe" : "";
return config.getCompilerPrefix().get() + name + exeSuffix;
}, operations));

config.getToolchainDescriptor().set(descriptor);
} else {
Expand All @@ -85,9 +88,10 @@ public ToolchainExtension(Project project, ToolchainGraphBuildService rootExtens

public void setSinglePrintPerPlatform() {
rootExtension.setSinglePrintPerPlatform();
// ToolchainUtilExtension tcuExt = project.getExtensions().findByType(ToolchainUtilExtension.class);
// ToolchainUtilExtension tcuExt =
// project.getExtensions().findByType(ToolchainUtilExtension.class);
// if (tcuExt != null) {
// tcuExt.setSkipBinaryToolchainMissingWarning(true);
// tcuExt.setSkipBinaryToolchainMissingWarning(true);
// }
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,8 +241,7 @@ public static OrderedStripTask configureOrderedStrip(AbstractLinkTask link, GccE
return null;
}

strip = linkExt.getExtensions().create("orderedStrip", OrderedStripTask.class, tcExt, binary, link, gcc,
project);
strip = linkExt.getExtensions().create("orderedStrip", OrderedStripTask.class, tcExt, binary, link, gcc);
link.doLast(strip);
}
return strip;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package edu.wpi.first.toolchain.arm32;

import javax.inject.Inject;

import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.process.ExecOperations;

import edu.wpi.first.toolchain.NativePlatforms;
import edu.wpi.first.toolchain.ToolchainDescriptor;
Expand All @@ -17,6 +20,13 @@ public class Arm32ToolchainPlugin implements Plugin<Project> {
private Arm32ToolchainExtension arm32Ext;
private OpenSdkToolchainBase opensdk;

private ExecOperations operations;

@Inject
public Arm32ToolchainPlugin(ExecOperations operations) {
this.operations = operations;
}

@Override
public void apply(Project project) {

Expand All @@ -25,9 +35,11 @@ public void apply(Project project) {
ToolchainExtension toolchainExt = project.getExtensions().getByType(ToolchainExtension.class);

opensdk = new OpenSdkToolchainBase(baseToolchainName, arm32Ext, project, Arm32ToolchainExtension.INSTALL_SUBDIR,
"raspi-bullseye", project.provider(() -> "armv6-bullseye-linux-gnueabihf"), toolchainExt.getToolchainGraphService());
"raspi-bullseye", project.provider(() -> "armv6-bullseye-linux-gnueabihf"),
toolchainExt.getToolchainGraphService(), operations);

CrossCompilerConfiguration configuration = project.getObjects().newInstance(CrossCompilerConfiguration.class, NativePlatforms.linuxarm32);
CrossCompilerConfiguration configuration = project.getObjects().newInstance(CrossCompilerConfiguration.class,
NativePlatforms.linuxarm32);

configuration.getArchitecture().set("arm");
configuration.getOperatingSystem().set("linux");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package edu.wpi.first.toolchain.arm64;

import javax.inject.Inject;

import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.process.ExecOperations;

import edu.wpi.first.toolchain.NativePlatforms;
import edu.wpi.first.toolchain.ToolchainDescriptor;
Expand All @@ -16,6 +19,12 @@ public class Arm64ToolchainPlugin implements Plugin<Project> {

private Arm64ToolchainExtension arm64Ext;
private OpenSdkToolchainBase opensdk;
private ExecOperations operations;

@Inject
public Arm64ToolchainPlugin(ExecOperations operations) {
this.operations = operations;
}

@Override
public void apply(Project project) {
Expand All @@ -24,9 +33,11 @@ public void apply(Project project) {
ToolchainExtension toolchainExt = project.getExtensions().getByType(ToolchainExtension.class);

opensdk = new OpenSdkToolchainBase(baseToolchainName, arm64Ext, project, Arm64ToolchainExtension.INSTALL_SUBDIR,
"bullseye", project.provider(() -> "aarch64-bullseye-linux-gnu"), toolchainExt.getToolchainGraphService());
"bullseye", project.provider(() -> "aarch64-bullseye-linux-gnu"),
toolchainExt.getToolchainGraphService(), operations);

CrossCompilerConfiguration configuration = project.getObjects().newInstance(CrossCompilerConfiguration.class, NativePlatforms.linuxarm64);
CrossCompilerConfiguration configuration = project.getObjects().newInstance(CrossCompilerConfiguration.class,
NativePlatforms.linuxarm64);

configuration.getArchitecture().set("arm64");
configuration.getOperatingSystem().set("linux");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.gradle.api.Project;
import org.gradle.api.provider.Provider;
import org.gradle.internal.os.OperatingSystem;
import org.gradle.process.ExecOperations;

import edu.wpi.first.toolchain.AbstractToolchainInstaller;
import edu.wpi.first.toolchain.DefaultToolchainInstaller;
Expand All @@ -25,16 +26,19 @@ public class OpenSdkToolchainBase {
private final String archiveSubDir;
private final Provider<String> toolchainPrefix;
private final ToolchainGraphBuildService rootExtension;
private final ExecOperations operations;

public OpenSdkToolchainBase(String baseToolchainName, OpenSdkToolchainExtension tcExt, Project project,
String installSubdir, String archiveSubdir, Provider<String> toolchainPrefix, ToolchainGraphBuildService rootExtension) {
String installSubdir, String archiveSubdir, Provider<String> toolchainPrefix,
ToolchainGraphBuildService rootExtension, ExecOperations operations) {
this.baseToolchainName = baseToolchainName;
this.tcExt = tcExt;
this.project = project;
this.installSubdir = installSubdir;
this.archiveSubDir = archiveSubdir;
this.toolchainPrefix = toolchainPrefix;
this.rootExtension = rootExtension;
this.operations = operations;
}

private String toolchainRemoteFile() {
Expand All @@ -44,10 +48,10 @@ private String toolchainRemoteFile() {
if (OperatingSystem.current().isWindows()) {
platformId = "x86_64-w64-mingw32";
} else if (OperatingSystem.current().isMacOsX()) {
platformId = (NativePlatforms.desktopPlatformArch(project) == NativePlatforms.x64arch ? "x86_64" : "arm64")
platformId = (NativePlatforms.desktopPlatformArch(operations) == NativePlatforms.x64arch ? "x86_64" : "arm64")
+ "-apple-darwin";
} else {
String desktopPlatformArch = NativePlatforms.desktopPlatformArch(project);
String desktopPlatformArch = NativePlatforms.desktopPlatformArch(operations);
if (desktopPlatformArch.equals(NativePlatforms.arm64arch)) {
platformId = "aarch64-bullseye-linux-gnu";
} else if (desktopPlatformArch.equals(NativePlatforms.arm32arch)) {
Expand Down Expand Up @@ -94,8 +98,10 @@ public void populatePathAndDownloadDescriptors(ToolchainDescriptor descriptor) {
});

// Discoverer order matters. They will be searched from top to bottom.
descriptor.getDiscoverers().add(ToolchainDiscoverer.createProperty("GradleUserDir", descriptor, fp, this::composeTool, project));
descriptor.getDiscoverers().add(ToolchainDiscoverer.forSystemPath(project, rootExtension, descriptor, this::composeTool));
descriptor.getDiscoverers()
.add(ToolchainDiscoverer.createProperty("GradleUserDir", descriptor, fp, this::composeTool, project));
descriptor.getDiscoverers()
.add(ToolchainDiscoverer.forSystemPath(project, rootExtension, descriptor, this::composeTool, operations));

try {
descriptor.getInstallers().add(installerFor(OperatingSystem.LINUX, fp, archiveSubDir));
Expand Down
Loading

0 comments on commit d7a64d6

Please sign in to comment.