From 4c1bbd705e6c40e85d571b0b5d794c21f1450a46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=B3r=C3=A1nt=20Pint=C3=A9r?= Date: Fri, 19 Apr 2024 16:16:46 +0200 Subject: [PATCH] Use InternalFlag for the internal flag to disable script compilation --- .../org/gradle/kotlin/dsl/provider/BuildServices.kt | 3 +++ .../gradle/kotlin/dsl/provider/KotlinScriptEvaluator.kt | 6 +++++- .../scripts/internal/GroovyScriptClassCompiler.java | 8 +++++++- .../BuildScriptCompilationAndInstrumentation.java | 9 +++++++-- .../internal/service/scopes/BuildScopeServices.java | 3 +++ 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/platforms/core-configuration/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/provider/BuildServices.kt b/platforms/core-configuration/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/provider/BuildServices.kt index e39942358e6d..6390e03da85e 100644 --- a/platforms/core-configuration/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/provider/BuildServices.kt +++ b/platforms/core-configuration/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/provider/BuildServices.kt @@ -26,6 +26,7 @@ import org.gradle.api.internal.initialization.loadercache.DefaultClasspathHasher import org.gradle.groovy.scripts.internal.ScriptSourceHasher import org.gradle.initialization.ClassLoaderScopeRegistry import org.gradle.initialization.GradlePropertiesController +import org.gradle.internal.buildoption.InternalOptions import org.gradle.internal.classloader.ClasspathHasher import org.gradle.internal.classpath.CachedClasspathTransformer import org.gradle.internal.classpath.transforms.ClasspathElementTransformFactoryForLegacy @@ -101,6 +102,7 @@ object BuildServices { @Suppress("UNUSED_PARAMETER") kotlinCompilerContextDisposer: KotlinCompilerContextDisposer, fileCollectionFactory: FileCollectionFactory, inputFingerprinter: InputFingerprinter, + internalOptions: InternalOptions, gradlePropertiesController: GradlePropertiesController, transformFactoryForLegacy: ClasspathElementTransformFactoryForLegacy ): KotlinScriptEvaluator = @@ -124,6 +126,7 @@ object BuildServices { workspaceProvider, fileCollectionFactory, inputFingerprinter, + internalOptions, gradlePropertiesController, transformFactoryForLegacy ) diff --git a/platforms/core-configuration/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/provider/KotlinScriptEvaluator.kt b/platforms/core-configuration/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/provider/KotlinScriptEvaluator.kt index b7d54f170e1c..cb9d3722d9bd 100644 --- a/platforms/core-configuration/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/provider/KotlinScriptEvaluator.kt +++ b/platforms/core-configuration/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/provider/KotlinScriptEvaluator.kt @@ -29,6 +29,7 @@ import org.gradle.groovy.scripts.ScriptSource import org.gradle.groovy.scripts.internal.ScriptSourceHasher import org.gradle.initialization.ClassLoaderScopeOrigin import org.gradle.initialization.GradlePropertiesController +import org.gradle.internal.buildoption.InternalOptions import org.gradle.internal.classloader.ClasspathHasher import org.gradle.internal.classpath.CachedClasspathTransformer import org.gradle.internal.classpath.ClassPath @@ -100,6 +101,7 @@ class StandardKotlinScriptEvaluator( private val workspaceProvider: KotlinDslWorkspaceProvider, private val fileCollectionFactory: FileCollectionFactory, private val inputFingerprinter: InputFingerprinter, + private val internalOptions: InternalOptions, private val gradlePropertiesController: GradlePropertiesController, private val transformFactoryForLegacy: ClasspathElementTransformFactoryForLegacy ) : KotlinScriptEvaluator { @@ -264,6 +266,7 @@ class StandardKotlinScriptEvaluator( workspaceProvider, fileCollectionFactory, inputFingerprinter, + internalOptions, transformFactoryForLegacy ) ) @@ -354,8 +357,9 @@ class StandardKotlinScriptEvaluator( workspaceProvider: KotlinDslWorkspaceProvider, fileCollectionFactory: FileCollectionFactory, inputFingerprinter: InputFingerprinter, + internalOptions: InternalOptions, transformFactory: ClasspathElementTransformFactoryForLegacy - ) : BuildScriptCompilationAndInstrumentation(workspaceProvider.scripts, fileCollectionFactory, inputFingerprinter, transformFactory) { + ) : BuildScriptCompilationAndInstrumentation(workspaceProvider.scripts, fileCollectionFactory, inputFingerprinter, internalOptions, transformFactory) { companion object { const val JVM_TARGET = "jvmTarget" diff --git a/subprojects/core/src/main/java/org/gradle/groovy/scripts/internal/GroovyScriptClassCompiler.java b/subprojects/core/src/main/java/org/gradle/groovy/scripts/internal/GroovyScriptClassCompiler.java index 960b4db09ee2..922d095a4c03 100644 --- a/subprojects/core/src/main/java/org/gradle/groovy/scripts/internal/GroovyScriptClassCompiler.java +++ b/subprojects/core/src/main/java/org/gradle/groovy/scripts/internal/GroovyScriptClassCompiler.java @@ -25,6 +25,7 @@ import org.gradle.groovy.scripts.ScriptSource; import org.gradle.groovy.scripts.internal.GroovyScriptClassCompiler.GroovyScriptCompilationAndInstrumentation.GroovyScriptCompilationOutput; import org.gradle.internal.Pair; +import org.gradle.internal.buildoption.InternalOptions; import org.gradle.internal.classanalysis.AsmConstants; import org.gradle.internal.classpath.CachedClasspathTransformer; import org.gradle.internal.classpath.ClassData; @@ -79,6 +80,7 @@ public class GroovyScriptClassCompiler implements ScriptClassCompiler, Closeable private final ExecutionEngine earlyExecutionEngine; private final FileCollectionFactory fileCollectionFactory; private final InputFingerprinter inputFingerprinter; + private final InternalOptions internalOptions; private final ImmutableWorkspaceProvider workspaceProvider; private final ClasspathElementTransformFactoryForLegacy transformFactoryForLegacy; @@ -89,6 +91,7 @@ public GroovyScriptClassCompiler( ExecutionEngine earlyExecutionEngine, FileCollectionFactory fileCollectionFactory, InputFingerprinter inputFingerprinter, + InternalOptions internalOptions, ImmutableWorkspaceProvider workspaceProvider, ClasspathElementTransformFactoryForLegacy transformFactoryForLegacy ) { @@ -98,6 +101,7 @@ public GroovyScriptClassCompiler( this.earlyExecutionEngine = earlyExecutionEngine; this.fileCollectionFactory = fileCollectionFactory; this.inputFingerprinter = inputFingerprinter; + this.internalOptions = internalOptions; this.workspaceProvider = workspaceProvider; this.transformFactoryForLegacy = transformFactoryForLegacy; } @@ -150,6 +154,7 @@ private GroovyScriptCompilationOutput doCompile( workspaceProvider, fileCollectionFactory, inputFingerprinter, + internalOptions, transformFactoryForLegacy, scriptCompilationHandler ); @@ -233,10 +238,11 @@ public GroovyScriptCompilationAndInstrumentation( ImmutableWorkspaceProvider workspaceProvider, FileCollectionFactory fileCollectionFactory, InputFingerprinter inputFingerprinter, + InternalOptions internalOptions, ClasspathElementTransformFactoryForLegacy transformFactoryForLegacy, ScriptCompilationHandler scriptCompilationHandler ) { - super(workspaceProvider, fileCollectionFactory, inputFingerprinter, transformFactoryForLegacy); + super(workspaceProvider, fileCollectionFactory, inputFingerprinter, internalOptions, transformFactoryForLegacy); this.templateId = templateId; this.sourceHashCode = sourceHashCode; this.classLoader = classLoader; diff --git a/subprojects/core/src/main/java/org/gradle/internal/scripts/BuildScriptCompilationAndInstrumentation.java b/subprojects/core/src/main/java/org/gradle/internal/scripts/BuildScriptCompilationAndInstrumentation.java index a1eea524d65e..ba2a1e8aa502 100644 --- a/subprojects/core/src/main/java/org/gradle/internal/scripts/BuildScriptCompilationAndInstrumentation.java +++ b/subprojects/core/src/main/java/org/gradle/internal/scripts/BuildScriptCompilationAndInstrumentation.java @@ -17,6 +17,8 @@ package org.gradle.internal.scripts; import org.gradle.api.internal.file.FileCollectionFactory; +import org.gradle.internal.buildoption.InternalFlag; +import org.gradle.internal.buildoption.InternalOptions; import org.gradle.internal.classpath.transforms.ClasspathElementTransform; import org.gradle.internal.classpath.transforms.ClasspathElementTransformFactoryForLegacy; import org.gradle.internal.classpath.transforms.InstrumentingClassTransform; @@ -47,29 +49,32 @@ * This work unit first compiles the build script to a directory, and then instruments the directory for configuration cache and returns instrumented output. */ public abstract class BuildScriptCompilationAndInstrumentation implements ImmutableUnitOfWork { - private static final String CACHING_DISABLED_PROPERTY = "org.gradle.internal.script-caching-disabled"; + private static final InternalFlag CACHING_DISABLED_PROPERTY = new InternalFlag("org.gradle.internal.script-caching-disabled"); private static final CachingDisabledReason CACHING_DISABLED_REASON = new CachingDisabledReason(CachingDisabledReasonCategory.NOT_CACHEABLE, "Caching of script compilation disabled by property (experimental)"); private final ImmutableWorkspaceProvider workspaceProvider; private final InputFingerprinter inputFingerprinter; private final ClasspathElementTransformFactoryForLegacy transformFactory; + private final boolean cachingDisabledByProperty; protected final FileCollectionFactory fileCollectionFactory; public BuildScriptCompilationAndInstrumentation( ImmutableWorkspaceProvider workspaceProvider, FileCollectionFactory fileCollectionFactory, InputFingerprinter inputFingerprinter, + InternalOptions internalOptions, ClasspathElementTransformFactoryForLegacy transformFactory ) { this.workspaceProvider = workspaceProvider; this.fileCollectionFactory = fileCollectionFactory; this.inputFingerprinter = inputFingerprinter; this.transformFactory = transformFactory; + this.cachingDisabledByProperty = internalOptions.getOption(CACHING_DISABLED_PROPERTY).get(); } @Override public Optional shouldDisableCaching(@Nullable OverlappingOutputs detectedOverlappingOutputs) { - if (System.getProperty(CACHING_DISABLED_PROPERTY) != null) { + if (cachingDisabledByProperty) { return Optional.of(CACHING_DISABLED_REASON); } diff --git a/subprojects/core/src/main/java/org/gradle/internal/service/scopes/BuildScopeServices.java b/subprojects/core/src/main/java/org/gradle/internal/service/scopes/BuildScopeServices.java index 5f348f946699..22aadd6e30e3 100644 --- a/subprojects/core/src/main/java/org/gradle/internal/service/scopes/BuildScopeServices.java +++ b/subprojects/core/src/main/java/org/gradle/internal/service/scopes/BuildScopeServices.java @@ -178,6 +178,7 @@ import org.gradle.internal.build.PublicBuildPath; import org.gradle.internal.buildevents.BuildStartedTime; import org.gradle.internal.buildoption.FeatureFlags; +import org.gradle.internal.buildoption.InternalOptions; import org.gradle.internal.buildtree.BuildInclusionCoordinator; import org.gradle.internal.buildtree.BuildModelParameters; import org.gradle.internal.classloader.ClassLoaderFactory; @@ -474,6 +475,7 @@ protected GroovyScriptClassCompiler createFileCacheBackedScriptClassCompiler( ExecutionEngine executionEngine, FileCollectionFactory fileCollectionFactory, InputFingerprinter inputFingerprinter, + InternalOptions internalOptions, GroovyDslWorkspaceProvider groovyDslWorkspaceProvider, ClasspathElementTransformFactoryForLegacy transformFactoryForLegacy ) { @@ -484,6 +486,7 @@ protected GroovyScriptClassCompiler createFileCacheBackedScriptClassCompiler( executionEngine, fileCollectionFactory, inputFingerprinter, + internalOptions, groovyDslWorkspaceProvider.getWorkspace(), transformFactoryForLegacy );