# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
---
task-defaults:
    worker-type: b-linux-gcp
    worker:
        docker-image: {in-tree: android-build}
        max-run-time: 1800

# In automation, we generate the AVD using the linux64-android-avd jobs. On
# developers' machines, bootstrap will download the artifact from the avd job
# instead of generating it.
#
# The Android AVD needs the corresponding system image generated in the
# linux64-android-system-image TL job. System images are not redistributable,
# so locally bootstrap will use sdkmanager to download the corresponding system
# images.
linux64-android-avd-x86_64-repack:
    attributes:
        local-toolchain: true
    description: "Android AVD (Linux) repack toolchain build"
    treeherder:
        symbol: TL(avd-x86_64-linux)
    run:
        script: repack-android-avd-linux.sh
        arguments:
            - 'python/mozboot/mozboot/android-avds/x86_64.json'
        resources:
            - 'python/mozboot/**/*android*'
        toolchain-artifact: public/build/android-avd-linux.tar.zst
        toolchain-alias: android-avd-x86_64-linux
    fetches:
        toolchain:
            # Aliases aren't allowed for toolchains depending on toolchains.
            - linux64-jdk-repack

linux64-android31-avd-x86_64-repack:
    description: "Android AVD (Linux) repack toolchain build"
    treeherder:
        symbol: TL(avd31-x86_64-linux)
    worker-type: b-linux-kvm-gcp
    worker:
        kvm: true
    run:
        script: repack-android-avd-linux.sh
        arguments:
            - 'python/mozboot/mozboot/android-avds/android31-x86_64.json'
        resources:
            - 'python/mozboot/**/*android*'
        toolchain-artifact: public/build/android-avd-linux.tar.zst
        toolchain-alias: android31-avd-x86_64-linux
    fetches:
        toolchain:
            # Aliases aren't allowed for toolchains depending on toolchains.
            - linux64-jdk-repack


linux64-android-avd-arm-repack:
    attributes:
        local-toolchain: true
    description: "Android AVD (Linux) repack toolchain build"
    treeherder:
        symbol: TL(avd-arm-linux)
    run:
        script: repack-android-avd-linux.sh
        arguments:
            - 'python/mozboot/mozboot/android-avds/arm.json'
        resources:
            - 'python/mozboot/**/*android*'
        toolchain-artifact: public/build/android-avd-linux.tar.zst
        toolchain-alias: android-avd-arm-linux
    fetches:
        toolchain:
            # Aliases aren't allowed for toolchains depending on toolchains.
            - linux64-jdk-repack

linux64-android-avd-arm64-repack:
    attributes:
        local-toolchain: true
    description: "Android AVD (Linux) repack toolchain build"
    treeherder:
        symbol: TL(avd-arm64-linux)
    run:
        script: repack-android-avd-linux.sh
        arguments:
            - 'python/mozboot/mozboot/android-avds/arm64.json'
        resources:
            - 'python/mozboot/**/*android*'
        toolchain-artifact: public/build/android-avd-linux.tar.zst
        toolchain-alias: android-avd-arm64-linux
    fetches:
        toolchain:
            # Aliases aren't allowed for toolchains depending on toolchains.
            - linux64-jdk-repack

linux64-android-system-image-x86_64-repack:
    description: "Android System Images (Linux) repack toolchain build"
    treeherder:
        symbol: TL(x86_64-avd-img-linux)
    run:
        script: repack-android-system-images-linux.sh
        arguments:
            - 'python/mozboot/mozboot/android-avds/x86_64.json'
        resources:
            - 'python/mozboot/**/*android*'
        toolchain-artifact: project/gecko/android-system-images/android-system-images-linux.tar.zst
        toolchain-alias: android-system-image-x86_64-linux
    fetches:
        toolchain:
            # Aliases aren't allowed for toolchains depending on toolchains.
            - linux64-jdk-repack

linux64-android31-system-image-x86_64-repack:
    description: "Android System Images (Linux) repack toolchain build"
    treeherder:
        symbol: TL(x86_64-avd31-img-linux)
    run:
        script: repack-android-system-images-linux.sh
        arguments:
            - 'python/mozboot/mozboot/android-avds/android31-x86_64.json'
        resources:
            - 'python/mozboot/**/*android*'
        toolchain-artifact: project/gecko/android-system-images/android-system-images-linux.tar.zst
        toolchain-alias: android31-system-image-x86_64-linux
    fetches:
        toolchain:
            # Aliases aren't allowed for toolchains depending on toolchains.
            - linux64-jdk-repack


linux64-jdk-repack:
    description: "Java JDK (Linux) repack toolchain build"
    treeherder:
        symbol: TL(jdk)
    run:
        script: repack-jdk-linux.sh
        resources:
            - 'python/mozboot/**/*android*'
        toolchain-artifact: project/gecko/jdk/jdk-linux.tar.zst
        toolchain-alias: linux64-jdk
        toolchain-env:
            JAVA_HOME: "/builds/worker/fetches/jdk/jdk-17.0.11+9"

linux64-android-sdk-linux-repack:
    description: "Android SDK (Linux) repack toolchain build"
    treeherder:
        symbol: TL(android-sdk-linux)
    run:
        script: repack-android-sdk-linux.sh
        resources:
            - 'python/mozboot/**/*android*'
        toolchain-artifact: project/gecko/android-sdk/android-sdk-linux.tar.zst
        toolchain-alias: android-sdk-linux
    fetches:
        toolchain:
            # Aliases aren't allowed for toolchains depending on toolchains.
            - linux64-jdk-repack

linux64-android-emulator-linux-repack:
    description: "Android Emulator (Linux) repack toolchain build"
    treeherder:
        symbol: TL(android-emulator-linux)
    run:
        script: repack-android-emulator-linux.sh
        resources:
            - 'python/mozboot/**/*android*'
        toolchain-artifact: project/gecko/android-emulator/android-emulator-linux.tar.zst
        toolchain-alias: android-emulator-linux
    fetches:
        toolchain:
            # Aliases aren't allowed for toolchains depending on toolchains.
            - linux64-jdk-repack

linux64-android-ndk-linux-repack:
    description: "Android NDK (Linux) repack toolchain build"
    treeherder:
        symbol: TL(android-ndk-linux)
    run:
        script: repack-android-ndk-linux.sh
        resources:
            - 'python/mozboot/**/*android*'
        toolchain-artifact: project/gecko/android-ndk/android-ndk.tar.zst
        toolchain-alias: android-ndk-linux

linux64-android-gradle-dependencies:
    description: "Android Gradle dependencies toolchain task"
    treeherder:
        symbol: TL(gradle-dependencies)
    worker:
        env:
            GRADLE_USER_HOME: "/builds/worker/workspace/build/src/mobile/android/gradle/dotgradle-online"
            ANDROID_SDK_ROOT: "/builds/worker/fetches/android-sdk-linux"
        max-run-time: 2700
    run:
        script: android-gradle-dependencies.sh
        sparse-profile: null
        resources:
            - 'taskcluster/scripts/misc/android-gradle-dependencies/**'
            - '*.gradle'
            - 'mobile/android/**/*.gradle'
            - 'mobile/android/config/mozconfigs/android-arm-gradle-dependencies/**'
            - 'mobile/android/config/mozconfigs/common*'
            - 'mobile/android/gradle.configure'
            - 'mobile/android/android-components/plugins/dependencies/src/main/java/DependenciesPlugin.kt'
            - 'mobile/android/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt'
            - 'mobile/android/fenix/plugins/fenixdependencies/src/main/java/FenixDependenciesPlugin.kt'
            - 'mobile/android/focus-android/plugins/focusdependencies/src/main/java/FocusDependenciesPlugin.kt'
        toolchain-artifact: public/build/android-gradle-dependencies.tar.zst
        toolchain-alias: android-gradle-dependencies
    fetches:
        fetch:
            - sonatype-nexus
            # Nexus needs Java 8
            - jdk-8-linux64
        toolchain:
            # Aliases aren't allowed for toolchains depending on toolchains.
            - linux64-android-sdk-linux-repack
            - linux64-jdk-repack
            - linux64-node

linux64-android-gradle-dependencies-lite:
    description: "Android Lite Gradle dependencies toolchain task"
    treeherder:
        symbol: TL(gradle-dependencies-lite)
    worker:
        env:
            GRADLE_USER_HOME: "/builds/worker/workspace/build/src/mobile/android/gradle/dotgradle-online"
    run:
        script: android-gradle-dependencies-lite.sh
        sparse-profile: null
        resources:
            - 'taskcluster/scripts/misc/android-gradle-dependencies/**'
            - '*.gradle'
            - 'mobile/android/**/*.gradle'
            - 'mobile/android/config/mozconfigs/android-arm-gradle-dependencies/**'
            - 'mobile/android/config/mozconfigs/common*'
            - 'mobile/android/gradle.configure'
            - 'mobile/android/android-components/plugins/dependencies/src/main/java/DependenciesPlugin.kt'
            - 'mobile/android/android-components/plugins/dependencies/src/main/java/ApplicationServices.kt'
        toolchain-artifact: public/build/android-gradle-dependencies.tar.zst
        toolchain-alias: android-gradle-dependencies-lite
    fetches:
        fetch:
            - sonatype-nexus
            # Nexus needs Java 8
            - jdk-8-linux64
        toolchain:
            # Aliases aren't allowed for toolchains depending on toolchains.
            - linux64-android-sdk-linux-repack
            - linux64-jdk-repack
            - linux64-node
