mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 09:49:23 +02:00
GP-3111: Enforcing maximum supported Gradle version
This commit is contained in:
parent
8242c31c4a
commit
50a3bc30d2
5 changed files with 88 additions and 15 deletions
|
@ -58,14 +58,23 @@ public class ApplicationProperties extends Properties {
|
||||||
public static final String APPLICATION_GRADLE_MIN_PROPERTY = "application.gradle.min";
|
public static final String APPLICATION_GRADLE_MIN_PROPERTY = "application.gradle.min";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The minimum major version of Java required to run the application. For example, "8".
|
* The earliest version of gradle after {@link #APPLICATION_GRADLE_MIN_PROPERTY} that is
|
||||||
|
* unsupported.
|
||||||
|
* <p>
|
||||||
|
* If all versions of Gradle greater than or equal to {@link #APPLICATION_GRADLE_MIN_PROPERTY}
|
||||||
|
* are supported, this property should not be set.
|
||||||
|
*/
|
||||||
|
public static final String APPLICATION_GRADLE_MAX_PROPERTY = "application.gradle.max";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The minimum major version of Java required to run the application.
|
||||||
*/
|
*/
|
||||||
public static final String APPLICATION_JAVA_MIN_PROPERTY = "application.java.min";
|
public static final String APPLICATION_JAVA_MIN_PROPERTY = "application.java.min";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The maximum major version of Java the application will run under. For example, "8".
|
* The maximum major version of Java the application will run under.
|
||||||
* <p>
|
* <p>
|
||||||
* If all versions of Java greater than {@link #APPLICATION_JAVA_MIN_PROPERTY} are
|
* If all versions of Java greater than or equal to {@link #APPLICATION_JAVA_MIN_PROPERTY} are
|
||||||
* supported, this property should not be set.
|
* supported, this property should not be set.
|
||||||
*/
|
*/
|
||||||
public static final String APPLICATION_JAVA_MAX_PROPERTY = "application.java.max";
|
public static final String APPLICATION_JAVA_MAX_PROPERTY = "application.java.max";
|
||||||
|
|
|
@ -33,17 +33,14 @@ file(ghidraDir + "/application.properties").withReader { reader ->
|
||||||
project.ext.ghidra_version = ghidraProps.getProperty('application.version')
|
project.ext.ghidra_version = ghidraProps.getProperty('application.version')
|
||||||
project.ext.RELEASE_NAME = ghidraProps.getProperty('application.release.name')
|
project.ext.RELEASE_NAME = ghidraProps.getProperty('application.release.name')
|
||||||
project.ext.DISTRO_PREFIX = "ghidra_${ghidra_version}"
|
project.ext.DISTRO_PREFIX = "ghidra_${ghidra_version}"
|
||||||
project.ext.GRADLE_MINIMUM_VERSION = ghidraProps.getProperty('application.gradle.min')
|
project.ext.GRADLE_MIN = ghidraProps.getProperty('application.gradle.min')
|
||||||
|
project.ext.GRADLE_MAX = ghidraProps.getProperty('application.gradle.max')
|
||||||
}
|
}
|
||||||
|
|
||||||
/***************************************************************************************
|
/***************************************************************************************
|
||||||
* Make sure the correct version of gradle is being used
|
* Make sure a supported version of Gradle is being used
|
||||||
***************************************************************************************/
|
***************************************************************************************/
|
||||||
import org.gradle.util.GradleVersion;
|
checkGradleVersion()
|
||||||
final GradleVersion minimum_version = GradleVersion.version("${GRADLE_MINIMUM_VERSION}")
|
|
||||||
if (GradleVersion.current() < minimum_version) {
|
|
||||||
throw new GradleException("Requires at least $minimum_version, but was run with $gradle.gradleVersion")
|
|
||||||
}
|
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
helpPath
|
helpPath
|
||||||
|
@ -331,3 +328,36 @@ def getCurrentDate() {
|
||||||
return formattedDate
|
return formattedDate
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************************
|
||||||
|
* Throws a GradleException if the current Gradle version is outside of the supported
|
||||||
|
* Gradle version range defined in application.properties
|
||||||
|
*********************************************************************************/
|
||||||
|
import org.gradle.util.GradleVersion;
|
||||||
|
def checkGradleVersion() {
|
||||||
|
GradleVersion min = null;
|
||||||
|
GradleVersion max = null;
|
||||||
|
try {
|
||||||
|
min = GradleVersion.version("${rootProject.GRADLE_MIN}")
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException e) {
|
||||||
|
String defaultMin = "1.0"
|
||||||
|
println "Invalid minimum Gradle version specified in application.properties...using ${defaultMin}"
|
||||||
|
min = GradleVersion.version(defaultMin)
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if (rootProject.GRADLE_MAX) {
|
||||||
|
max = GradleVersion.version("${rootProject.GRADLE_MAX}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException e) {
|
||||||
|
println "Invalid maximum Gradle version specified in application.properties...ignoring"
|
||||||
|
}
|
||||||
|
String gradleRange = "at least ${min}"
|
||||||
|
if (max) {
|
||||||
|
gradleRange += " and less than ${max}"
|
||||||
|
}
|
||||||
|
if (GradleVersion.current() < min || (max && GradleVersion.current() >= max)) {
|
||||||
|
throw new GradleException("Requires ${gradleRange}, but was run with $gradle.gradleVersion")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ application.version=10.3
|
||||||
application.release.name=DEV
|
application.release.name=DEV
|
||||||
application.layout.version=1
|
application.layout.version=1
|
||||||
application.gradle.min=7.3
|
application.gradle.min=7.3
|
||||||
|
application.gradle.max=
|
||||||
application.java.min=17
|
application.java.min=17
|
||||||
application.java.max=
|
application.java.max=
|
||||||
application.java.compiler=17
|
application.java.compiler=17
|
||||||
|
|
40
build.gradle
40
build.gradle
|
@ -25,10 +25,7 @@ apply from: "gradle/support/loadApplicationProperties.gradle"
|
||||||
***************************************************************************************/
|
***************************************************************************************/
|
||||||
import org.gradle.util.GradleVersion;
|
import org.gradle.util.GradleVersion;
|
||||||
println "Gradle: " + GradleVersion.current().version
|
println "Gradle: " + GradleVersion.current().version
|
||||||
final GradleVersion minimum_version = GradleVersion.version("${rootProject.GRADLE_MINIMUM_VERSION}")
|
checkGradleVersion()
|
||||||
if (GradleVersion.current() < minimum_version) {
|
|
||||||
throw new GradleException("Requires at least $minimum_version, but was run with $gradle.gradleVersion")
|
|
||||||
}
|
|
||||||
|
|
||||||
/***************************************************************************************
|
/***************************************************************************************
|
||||||
* Define the location of JAVA_HOME
|
* Define the location of JAVA_HOME
|
||||||
|
@ -113,6 +110,41 @@ clean {
|
||||||
delete "$buildDir"
|
delete "$buildDir"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************************
|
||||||
|
* Throws a GradleException if the current Gradle version is outside of the supported
|
||||||
|
* Gradle version range defined in application.properties.
|
||||||
|
*
|
||||||
|
* NOTE: This function is duplicated in buildExtension.gradle
|
||||||
|
*********************************************************************************/
|
||||||
|
import org.gradle.util.GradleVersion;
|
||||||
|
def checkGradleVersion() {
|
||||||
|
GradleVersion min = null;
|
||||||
|
GradleVersion max = null;
|
||||||
|
try {
|
||||||
|
min = GradleVersion.version("${rootProject.GRADLE_MIN}")
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException e) {
|
||||||
|
String defaultMin = "1.0"
|
||||||
|
println "Invalid minimum Gradle version specified in application.properties...using ${defaultMin}"
|
||||||
|
min = GradleVersion.version(defaultMin)
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if (rootProject.GRADLE_MAX) {
|
||||||
|
max = GradleVersion.version("${rootProject.GRADLE_MAX}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (IllegalArgumentException e) {
|
||||||
|
println "Invalid maximum Gradle version specified in application.properties...ignoring"
|
||||||
|
}
|
||||||
|
String gradleRange = "at least ${min}"
|
||||||
|
if (max) {
|
||||||
|
gradleRange += " and less than ${max}"
|
||||||
|
}
|
||||||
|
if (GradleVersion.current() < min || (max && GradleVersion.current() >= max)) {
|
||||||
|
throw new GradleException("Requires ${gradleRange}, but was run with $gradle.gradleVersion")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************************************************************
|
/******************************************************************************************
|
||||||
*
|
*
|
||||||
* Utility methods used by multiple build.gradle files
|
* Utility methods used by multiple build.gradle files
|
||||||
|
|
|
@ -26,7 +26,8 @@ file("Ghidra/application.properties").withReader { reader ->
|
||||||
project.ext.RELEASE_VERSION = version
|
project.ext.RELEASE_VERSION = version
|
||||||
project.ext.RELEASE_NAME = ghidraProps.getProperty('application.release.name')
|
project.ext.RELEASE_NAME = ghidraProps.getProperty('application.release.name')
|
||||||
project.ext.JAVA_COMPILER = ghidraProps.getProperty('application.java.compiler')
|
project.ext.JAVA_COMPILER = ghidraProps.getProperty('application.java.compiler')
|
||||||
project.ext.GRADLE_MINIMUM_VERSION = ghidraProps.getProperty('application.gradle.min')
|
project.ext.GRADLE_MIN = ghidraProps.getProperty('application.gradle.min')
|
||||||
|
project.ext.GRADLE_MAX = ghidraProps.getProperty('application.gradle.max')
|
||||||
project.ext.DISTRO_PREFIX = "ghidra_${version}_${RELEASE_NAME}"
|
project.ext.DISTRO_PREFIX = "ghidra_${version}_${RELEASE_NAME}"
|
||||||
|
|
||||||
// Build dates may or may not be already present in the application.properties file.
|
// Build dates may or may not be already present in the application.properties file.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue