diff --git a/README.md b/README.md index 690e612b4..dd1adde3a 100644 --- a/README.md +++ b/README.md @@ -156,17 +156,17 @@ git push --no-verify There are multiple helper flags available via `local.properties` that will help speed up local development workflow when working across multiple layers of the dependency stack - specifically, with android-components, geckoview or application-services. -### android-components auto-publication workflow -Specify a relative path to your local `android-components` checkout via `autoPublish.android-components.dir`. +### Auto-publication workflow for android-components and application-services +If you're making changes to these projects and want to test them in Fenix, auto-publication workflow is the fastest, most reliable +way to do that. -If enabled, during a Fenix build android-components will be compiled and locally published if it has been modified, -and published versions of android-components modules will be automatically used instead of whatever is declared in Dependencies.kt. +In `local.properties`, specify a relative path to your local `android-components` and/or `application-services` checkouts. E.g.: +- `autoPublish.android-components.dir=../android-components` +- `autoPublish.application-services.dir=../application-services` -### application-services auto-publication workflow -Specify a relative path to your local `application-services` checkout via `autoPublish.application-services.dir`. +Once these flags are set, your Fenix builds will include any local modifications present in these projects. -If enabled, during a Fenix build application-services will be compiled and locally published, -and published versions of application-services modules will be automatically used instead of whatever is declared in Dependencies.kt. +See a [demo of auto-publication workflow in action](https://www.youtube.com/watch?v=qZKlBzVvQGc). ### GeckoView Specify a relative path to your local `mozilla-central` checkout via `dependencySubstitutions.geckoviewTopsrcdir`, diff --git a/settings.gradle b/settings.gradle index d94386cfc..ccbec8163 100644 --- a/settings.gradle +++ b/settings.gradle @@ -20,10 +20,6 @@ def runCmd(cmd, workingDir, successMessage, captureStdout=true) { return captureStdout ? standardOutput : null } -def gradlew = './gradlew' -if (System.properties['os.name'].toLowerCase().contains('windows')) { - gradlew += ".bat" -} ////////////////////////////////////////////////////////////////////////// // Local Development overrides ////////////////////////////////////////////////////////////////////////// @@ -49,7 +45,7 @@ if (localProperties != null) { if (appServicesLocalPath != null) { log("Enabling automatic publication of application-services from: $appServicesLocalPath") - def publishAppServicesCmd = ["./gradlew", "autoPublishForLocalDevelopment"] + def publishAppServicesCmd = ["./automation/publish_to_maven_local_if_modified.py"] runCmd(publishAppServicesCmd, appServicesLocalPath, "Published application-services for local development.", false) } else { log("Disabled auto-publication of application-services. Enable it by settings '$settingAppServicesPath' in local.properties") @@ -59,19 +55,8 @@ if (localProperties != null) { if (androidComponentsLocalPath != null) { log("Enabling automatic publication of android-components from: $androidComponentsLocalPath") - log("Determining if android-components are up-to-date...") - def compileAcCmd = [gradlew, "compileReleaseKotlin"] - def compileOutput = runCmd(compileAcCmd, androidComponentsLocalPath, "Compiled android-components.") - // This is somewhat brittle: parse last line of gradle output, to fish out how many tasks were executed. - // One executed task means gradle didn't do any work other than executing the top-level 'compile' task. - def compileTasksExecuted = compileOutput.toString().split('\n').last().split(':')[1].split(' ')[1] - if (compileTasksExecuted.equals("1")) { - log("android-components are up-to-date, skipping publication.") - } else { - log("android-components changed, publishing locally...") - def publishAcCmd = ["${androidComponentsLocalPath}/${gradlew}", "publishToMavenLocal", "-Plocal=true"] - runCmd(publishAcCmd, androidComponentsLocalPath, "Published android-components.", false) - } + def publishAcCmd = ["./automation/publish_to_maven_local_if_modified.py"] + runCmd(publishAcCmd, androidComponentsLocalPath, "Published android-components for local development.", false) } else { log("Disabled auto-publication of android-components. Enable it by settings '$settingAndroidComponentsPath' in local.properties") }