commit d47799cfcf2ad693ec82af011bbf69d24bd90a7d
parent 7afdabb9469aff8db7b5aafc76ab8ac3c4e9a95d
Author: Alex Hochheiden <ahochheiden@mozilla.com>
Date: Sat, 15 Nov 2025 00:17:18 +0000
Bug 1947850 - Add explicit outputFile for `:verifyGleanVersion` and move dependency from `:geckoview:preBuild` to `generateSDKBindings` and `generateJNIWrappers` r=nalexander,geckoview-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D271259
Diffstat:
4 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/build.gradle b/build.gradle
@@ -54,8 +54,8 @@ abstract class VerifyGleanVersionTask extends DefaultTask {
@Input
String expectedVersion = project.ext.gleanVersion
- @OutputFiles
- FileCollection outputFiles = project.objects.fileCollection()
+ @OutputFile
+ final RegularFileProperty outputFile = project.objects.fileProperty()
@TaskAction
void verifyGleanVersion() {
@@ -66,6 +66,8 @@ abstract class VerifyGleanVersionTask extends DefaultTask {
} else {
logger.lifecycle("verifyGleanVersion> expected version matches found version '${foundVersion}'")
}
+
+ outputFile.get().asFile.text = "glean-${foundVersion}"
}
// Parses the Cargo.lock and returns the version for the given package name.
@@ -86,7 +88,9 @@ abstract class VerifyGleanVersionTask extends DefaultTask {
}
}
-tasks.register("verifyGleanVersion", VerifyGleanVersionTask)
+tasks.register("verifyGleanVersion", VerifyGleanVersionTask) {
+ outputFile.convention(layout.buildDirectory.file("glean/verifyGleanVersion.marker"))
+}
allprojects {
// Expose the per-object-directory configuration to all projects.
diff --git a/build/test/python/test_android_gradle_build.py b/build/test/python/test_android_gradle_build.py
@@ -315,5 +315,21 @@ def test_focus_build(objdir, mozconfig, run_mach):
assert_all_task_statuses(objdir, ["UP-TO-DATE", "SKIPPED"])
+def test_android_export(objdir, mozconfig, run_mach):
+ # To ensure a consistent state, we delete the marker file
+ # to force the :verifyGleanVersion task to re-run.
+ marker_file = objdir / "gradle" / "build" / "glean" / "verifyGleanVersion.marker"
+ marker_file.unlink(missing_ok=True)
+
+ bindings_dir = Path(topsrcdir) / "widget" / "android" / "bindings"
+ inputs = list(bindings_dir.glob("*-classes.txt"))
+
+ assert_success(*run_mach(["android", "export"] + [str(f) for f in inputs]))
+ assert_ordered_task_outcomes(objdir, [(":verifyGleanVersion", "EXECUTED")])
+
+ assert_success(*run_mach(["android", "export"] + [str(f) for f in inputs]))
+ assert_ordered_task_outcomes(objdir, [(":verifyGleanVersion", "UP-TO-DATE")])
+
+
if __name__ == "__main__":
mozunit.main()
diff --git a/mobile/android/geckoview/build.gradle b/mobile/android/geckoview/build.gradle
@@ -545,10 +545,9 @@ tasks.register("generateSDKBindings", JavaExec) {
outputs.dir("${topobjdir}/widget/android/bindings")
dependsOn project(':annotations').jar
+ dependsOn rootProject.verifyGleanVersion
}
-preBuild.dependsOn(":verifyGleanVersion")
-
apiLint {
// TODO: Change this to `org` after hiding org.mozilla.gecko
packageFilter = 'org.mozilla.geckoview'
diff --git a/mobile/android/gradle/with_gecko_binaries.gradle b/mobile/android/gradle/with_gecko_binaries.gradle
@@ -72,6 +72,7 @@ ext.configureLibraryVariantWithJNIWrappers = { variant, module ->
dependsOn jarTask
dependsOn annotationProcessorsJarTask
+ dependsOn rootProject.verifyGleanVersion
}
}
}