From f455b3fa0365d66b265c2e2e908e03ba67d07732 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 8 Dec 2023 13:47:25 -0800 Subject: [PATCH] Fix `external process started 'uname -a'` warnings (part of #167). --- gradle.properties | 2 +- .../dev/equo/ide/gradle/GradleCommon.java | 37 +++++++++++++++++-- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index 6b3fec7f..97f1c72b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -25,5 +25,5 @@ changelog_per_project=true VER_JUNIT=5.10.1 VER_ASSERTJ=3.24.2 VER_SNAPSHOT_TESTING=4.0.1 -VER_DURIAN_SWT=4.2.2 +VER_DURIAN_SWT=4.3.0 VER_EQUO_CHROMIUM=106.0.8 diff --git a/plugin-gradle/src/main/java/dev/equo/ide/gradle/GradleCommon.java b/plugin-gradle/src/main/java/dev/equo/ide/gradle/GradleCommon.java index ebc55520..f2d2610d 100644 --- a/plugin-gradle/src/main/java/dev/equo/ide/gradle/GradleCommon.java +++ b/plugin-gradle/src/main/java/dev/equo/ide/gradle/GradleCommon.java @@ -13,6 +13,7 @@ *******************************************************************************/ package dev.equo.ide.gradle; +import com.diffplug.common.swt.os.OS; import dev.equo.solstice.p2.CacheLocations; import java.io.File; import java.lang.reflect.Field; @@ -21,6 +22,7 @@ import java.util.regex.Pattern; import org.gradle.api.GradleException; import org.gradle.api.Project; +import org.gradle.api.provider.Provider; class GradleCommon { static final String MINIMUM_GRADLE = "6.0"; @@ -29,6 +31,7 @@ static void initialize(Project project, String name) { if (gradleIsTooOld(project)) { throw new GradleException(name + " requires Gradle " + MINIMUM_GRADLE + " or later"); } + platformSpecificBuild(project); setCacheLocations(project); } @@ -70,12 +73,40 @@ private static int badSemver(int major, int minor) { static boolean anyArgMatching(Project project, Predicate predicate) { return project.getGradle().getStartParameter().getTaskRequests().stream() .flatMap(taskReq -> taskReq.getArgs().stream()) - .filter(predicate) - .findAny() - .isPresent(); + .anyMatch(predicate); } static boolean anyArgEquals(Project project, String arg) { return anyArgMatching(project, a -> a.equals(arg)); } + + // copied from + // https://github.com/diffplug/goomph/blob/main/src/main/java/com/diffplug/gradle/swt/PlatformSpecificBuildPlugin.java + private static void platformSpecificBuild(Project settings) { + OS.detectPlatform( + systemProp -> get(settings, settings.getProviders().systemProperty(systemProp)), + envVar -> get(settings, settings.getProviders().environmentVariable(envVar)), + cmds -> + get( + settings, + settings + .getProviders() + .exec( + e -> { + e.commandLine(cmds.toArray()); + }) + .getStandardOutput() + .getAsText())); + } + + private static T get(Project settings, Provider provider) { + if (badSemver(settings.getGradle().getGradleVersion()) + >= badSemver(STOP_FORUSE_AT_CONFIGURATION_TIME)) { + return provider.get(); + } else { + return provider.forUseAtConfigurationTime().get(); + } + } + + private static final String STOP_FORUSE_AT_CONFIGURATION_TIME = "7.4"; }