# 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

linux64/opt:
    description: "Linux64 Opt"
    index:
        product: firefox
        job-name: linux64-opt
    attributes:
        enable-build-signing: true
        enable-full-crashsymbols: true
    treeherder:
        platform: linux64/opt
        symbol: B
    worker:
        max-run-time: 7200
        env:
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
            # bug 1690154 - enable full symbols on all branches, but only
            # upload them on the official set. In conjunction with
            # `enable-full-crashsymbols`.
            MOZ_ENABLE_FULL_SYMBOLS: "1"
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        tooltool-downloads: public
    run-on-projects: ['integration']
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-x11/opt:
    description: "Linux64 Opt (X11-only)"
    index:
        product: firefox
        job-name: linux64-x11-opt
    treeherder:
        platform: linux64/opt
        symbol: Bx
        tier: 2
    worker:
        max-run-time: 7200
        env:
            PERFHERDER_EXTRA_OPTIONS: x11
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
    run-on-projects: ['integration']
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu-x11
            - sysroot-wasm32-wasi

linux64-plain/opt:
    description: "Linux64 Opt Plain"
    index:
        product: firefox
        job-name: linux64-plain-opt
    treeherder:
        platform: linux64/opt
        symbol: Bp
        tier: 1
    worker:
        max-run-time: 5400
        env:
            PERFHERDER_EXTRA_OPTIONS: plain
    run:
        using: mozharness
        actions: [build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: mozharness/scripts/fx_desktop_build.py
        tooltool-downloads: public
        extra-config:
            disable_package_metrics: true
        mozconfig-variant: plain-opt
    run-on-projects: ['mozilla-central']
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-nasm
            - linux64-node
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null

linux64-non-unified/plain:
    description: "Linux64 Plain Hybrid"
    index:
        product: firefox
        job-name: linux64-non-unified-plain
    treeherder:
        platform: linux64/plain
        symbol: Bp-nu
        tier: 1
    worker:
        max-run-time: 5400
        env:
            PERFHERDER_EXTRA_OPTIONS: non-unified
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: mozharness/scripts/fx_desktop_build.py
        secrets: true
        tooltool-downloads: public
        extra-config:
            disable_package_metrics: true
        mozconfig-variant: non-unified
    run-on-projects: ['integration']
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-nasm
            - linux64-node
            - linux64-cbindgen
            - linux64-sccache
            - linux64-dump_syms
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-gcc/opt:
    description: "Linux64 GCC Opt"
    index:
        product: firefox
        job-name: linux64-gcc-opt
    treeherder:
        platform: linux64/opt
        symbol: Bgcc
        tier: 2
    run-on-projects: ['mozilla-central']
    worker:
        max-run-time: 7200
        env:
            PERFHERDER_EXTRA_OPTIONS: gcc
            FORCE_GCC: '1'
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        tooltool-downloads: public
    use-sccache: true
    fetches:
        toolchain:
            - linux64-binutils
            - linux64-clang
            - linux64-gcc-11
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-plain-clang-trunk/opt:
    description: "Linux64 Opt Plain with clang trunk"
    index:
        product: firefox
        job-name: linux64-plain-opt-ct
    treeherder:
        platform: linux64/opt
        symbol: Bp-clang-trunk
        tier: 2
    worker:
        max-run-time: 5400
        env:
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
            PERFHERDER_EXTRA_OPTIONS: plain-clang-trunk
    run:
        using: mozharness
        actions: [build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: mozharness/scripts/fx_desktop_build.py
        tooltool-downloads: public
        extra-config:
            disable_package_metrics: true
        mozconfig-variant: plain-opt-trunk
    run-on-projects: []
    fetches:
        toolchain:
            - linux64-clang-trunk
            - linux64-rust
            - linux64-nasm
            - linux64-node
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-toolchain-sysroot
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null

linux64-fuzzing/debug:
    description: "Linux64 Fuzzing Debug"
    index:
        product: firefox
        job-name: linux64-fuzzing-debug
    attributes:
        # The gtest libxul contains libFuzzer targets
        skip-verify-test-packaging: true
    treeherder:
        platform: linux64/debug
        symbol: Bf
    worker:
        max-run-time: 5400
        env:
            PERFHERDER_EXTRA_OPTIONS: fuzzing
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: fuzzing-debug
        mozconfig-variant: debug-fuzzing
        tooltool-downloads: public
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-llvm-symbolizer
            - linux64-sccache
            - linux64-rust
            - linux64-rust-size
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null

linux64-fuzzing-noopt/debug:
    description: "Linux64 Fuzzing No-optimize Debug"
    index:
        product: firefox
        job-name: linux64-fuzzing-noopt-debug
    attributes:
        # The gtest libxul contains libFuzzer targets
        skip-verify-test-packaging: true
    treeherder:
        platform: linux64-noopt/debug
        symbol: Bf
    worker:
        max-run-time: 5400
        env:
            PERFHERDER_EXTRA_OPTIONS: fuzzing-noopt-debug
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: fuzzing-debug
        mozconfig-variant: debug-fuzzing-noopt
        tooltool-downloads: public
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-llvm-symbolizer
            - linux64-sccache
            - linux64-rust
            - linux64-rust-size
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null

linux64/debug:
    description: "Linux64 Debug"
    index:
        product: firefox
        job-name: linux64-debug
    attributes:
        enable-full-crashsymbols: true
    treeherder:
        platform: linux64/debug
        symbol: B
    worker:
        max-run-time: 5400
        env:
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
            # bug 1690154 - enable full symbols on all branches, but only
            # upload them on the official set. In conjunction with
            # `enable-full-crashsymbols`.
            MOZ_ENABLE_FULL_SYMBOLS: "1"
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: debug
        mozconfig-variant: debug
        tooltool-downloads: public
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-rust
            - linux64-rust-size
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-plain/debug:
    description: "Linux64 Debug Plain"
    index:
        product: firefox
        job-name: linux64-plain-debug
    treeherder:
        platform: linux64/debug
        symbol: Bp
        tier: 1
    worker:
        max-run-time: 5400
        env:
            PERFHERDER_EXTRA_OPTIONS: plain
    run:
        using: mozharness
        actions: [build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        extra-config:
            disable_package_metrics: true
        mozconfig-variant: plain-debug
        script: mozharness/scripts/fx_desktop_build.py
        tooltool-downloads: public
    run-on-projects: [trunk]
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-nasm
            - linux64-node
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null

linux64-devedition/opt:
    description: "Linux64 devedition (shippable)"
    use-pgo: linux64-shippable/opt
    attributes:
        shippable: true
        enable-full-crashsymbols: true
    shipping-phase: build
    shipping-product: devedition
    index:
        product: devedition
        job-name: linux64-opt
        type: shippable
    treeherder:
        platform: linux64-devedition/opt
        symbol: B
    worker-type: b-linux-xlarge-gcp
    worker:
        max-run-time: 7200
        env:
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
            # bug 1690154 - enable full symbols on all branches, but only
            # upload them on the official set. In conjunction with
            # `enable-full-crashsymbols`.
            MOZ_ENABLE_FULL_SYMBOLS: "1"
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
            - taskcluster_nightly.py
        extra-config:
            stage_platform: 'linux64-devedition'
            max_build_output_timeout: 3600
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        tooltool-downloads: public
        mozconfig-variant: devedition
    run-on-projects: ['mozilla-beta']
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux/opt:
    description: "Linux32 Opt"
    index:
        product: firefox
        job-name: linux-opt
    attributes:
        enable-build-signing: true
        enable-full-crashsymbols: true
    treeherder:
        platform: linux32/opt
        symbol: B
    worker:
        max-run-time: 7200
        env:
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_32_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        tooltool-downloads: public
    run-on-projects:
        - 'mozilla-beta'
        - 'mozilla-release'
        - 'mozilla-esr128'
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-i686-linux-gnu
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux-fuzzing/debug:
    description: "Linux32 Fuzzing Debug"
    index:
        product: firefox
        job-name: linux-fuzzing-debug
    attributes:
        # The gtest libxul contains libFuzzer targets
        skip-verify-test-packaging: true
    treeherder:
        platform: linux32/debug
        symbol: Bf
    worker:
        max-run-time: 5400
        env:
            PERFHERDER_EXTRA_OPTIONS: fuzzing
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_32_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: fuzzing-debug
        mozconfig-variant: debug-fuzzing
        tooltool-downloads: public
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-cbindgen
            - linux64-dump_syms
            - linux32-llvm-symbolizer
            - linux64-sccache
            - linux64-rust
            - linux64-rust-size
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-i686-linux-gnu
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null

linux/debug:
    description: "Linux32 Debug"
    index:
        product: firefox
        job-name: linux-debug
    attributes:
        enable-full-crashsymbols: true
    treeherder:
        platform: linux32/debug
        symbol: B
    worker:
        max-run-time: 5400
        env:
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_32_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: debug
        mozconfig-variant: debug
        tooltool-downloads: public
    run-on-projects: ['release']
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-i686-linux-gnu
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux-rusttests/opt:
    description: "Linux32 Rust Tests Opt"
    index:
        product: firefox
        job-name: linux-rusttests-opt
    treeherder:
        platform: linux32/opt
        symbol: BR
        tier: 1
    worker:
        max-run-time: 2700
        env:
            PERFHERDER_EXTRA_OPTIONS: rusttests
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_32_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: rusttests
        mozconfig-variant: rusttests
        tooltool-downloads: public
        keep-artifacts: false
    run-on-projects: ['mozilla-central']
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-i686-linux-gnu
            - sysroot-x86_64-linux-gnu
    optimization:
        test-inclusive: [rusttests]

linux-rusttests/debug:
    description: "Linux32 Rust Tests Debug"
    index:
        product: firefox
        job-name: linux-rusttests-debug
    treeherder:
        platform: linux32/debug
        symbol: BR
        tier: 1
    worker:
        max-run-time: 2700
        env:
            PERFHERDER_EXTRA_OPTIONS: rusttests
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_32_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: rusttests-debug
        mozconfig-variant: rusttests-debug
        tooltool-downloads: public
        keep-artifacts: false
    run-on-projects: ['mozilla-central']
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-i686-linux-gnu
            - sysroot-x86_64-linux-gnu
    optimization:
        test-inclusive: [rusttests]

linux-devedition/opt:
    description: "Linux32 devedition (shippable)"
    use-pgo: linux-shippable/opt
    attributes:
        shippable: true
        enable-full-crashsymbols: true
    shipping-phase: build
    shipping-product: devedition
    index:
        product: devedition
        job-name: linux-opt
        type: shippable
    treeherder:
        platform: linux32-devedition/opt
        symbol: B
    worker-type: b-linux-gcp
    worker:
        max-run-time: 7200
        env:
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_32_builds.py
            - taskcluster_nightly.py
        extra-config:
            stage_platform: linux-devedition
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        tooltool-downloads: public
        mozconfig-variant: devedition
    run-on-projects: ['mozilla-beta']
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-i686-linux-gnu
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux-shippable/opt:
    description: "Linux32 Shippable"
    use-pgo: true
    attributes:
        shippable: true
        enable-full-crashsymbols: true
    shipping-phase: build
    shipping-product: firefox
    index:
        product: firefox
        job-name: linux-opt
        type: shippable
    treeherder:
        platform: linux32-shippable/opt
        symbol: Bpgo(B)
    worker-type: b-linux-gcp
    worker:
        max-run-time: 9000
        env:
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_32_builds.py
            - taskcluster_nightly.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        tooltool-downloads: public
    run-on-projects: ['release']
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-i686-linux-gnu
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux-reproduced/opt:
    description: "Linux32 Reproduced"
    use-pgo: linux-shippable/opt
    shipping-phase: build
    shipping-product: firefox
    index:
        product: firefox
        job-name: linux-reproduced-opt
    treeherder:
        platform: linux32-shippable/opt
        symbol: Bpgo(repr)
    worker-type: b-linux-gcp
    worker:
        max-run-time: 9000
        env:
            PERFHERDER_EXTRA_OPTIONS: repr
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_32_builds.py
            - taskcluster_nightly.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        tooltool-downloads: public
    # Original comment: Limited to trunk until bug 1596350 is fixed.
    # Addendum: Do not run on autoland, Bug 1599197
    run-on-projects: ['mozilla-central', 'comm-central']
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-i686-linux-gnu
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux-asan-fuzzing/opt:
    description: "Linux32 Fuzzing Opt ASAN"
    index:
        product: firefox
        job-name: linux-fuzzing-asan-opt
    attributes:
        # The gtest libxul contains libFuzzer targets
        skip-verify-test-packaging: true
    treeherder:
        platform: linux32/asan
        symbol: Bof
    worker:
        env:
            PERFHERDER_EXTRA_OPTIONS: asan-fuzzing
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
        max-run-time: 5400
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_32_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: fuzzing-asan-tc
        mozconfig-variant: nightly-fuzzing-asan
        tooltool-downloads: public
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux32-llvm-symbolizer
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-i686-linux-gnu
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null

linux64-reproduced/opt:
    description: "Linux64 Reproduced"
    use-pgo: linux64-shippable/opt
    shipping-phase: build
    shipping-product: firefox
    index:
        product: firefox
        job-name: linux64-reproduced-opt
    treeherder:
        platform: linux64-shippable/opt
        symbol: Bpgo(repr)
    worker-type: b-linux-xlarge-gcp
    worker:
        max-run-time: 9000
        env:
            PERFHERDER_EXTRA_OPTIONS: repr
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
            - taskcluster_nightly.py
        extra-config:
            max_build_output_timeout: 3600
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        tooltool-downloads: public
    # Original comment: Limited to trunk until bug 1596350 is fixed.
    # Addendum: Do not run on autoland, Bug 1599197
    run-on-projects: ['mozilla-central', 'comm-central']
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-asan/opt:
    description: "Linux64 Opt ASAN"
    index:
        product: firefox
        job-name: linux64-asan-opt
    treeherder:
        platform: linux64/asan
        symbol: Bo
    worker:
        env:
            PERFHERDER_EXTRA_OPTIONS: "opt asan"
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
        max-run-time: 5400
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: asan-tc
        mozconfig-variant: nightly-asan
        tooltool-downloads: public
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust-dev
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-llvm-symbolizer
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-tsan/opt:
    description: "Linux64 Opt TSAN"
    index:
        product: firefox
        job-name: linux64-tsan-opt
    treeherder:
        platform: linux64/tsan
        symbol: Bo
    worker:
        env:
            PERFHERDER_EXTRA_OPTIONS: "opt tsan"
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
        max-run-time: 5400
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: tsan-tc
        mozconfig-variant: tsan
        tooltool-downloads: public
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust-dev
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-llvm-symbolizer
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-tsan-fuzzing/opt:
    description: "Linux64 Fuzzing Opt TSAN"
    index:
        product: firefox
        job-name: linux64-fuzzing-tsan-opt
    attributes:
        # The gtest libxul contains libFuzzer targets
        skip-verify-test-packaging: true
    treeherder:
        platform: linux64/tsan
        symbol: Bof
    worker:
        env:
            PERFHERDER_EXTRA_OPTIONS: tsan-fuzzing
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
        max-run-time: 5400
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: fuzzing-tsan-tc
        mozconfig-variant: tsan-fuzzing
        tooltool-downloads: public
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust-dev
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-llvm-symbolizer
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null

linux64-asan-fuzzing/noopt:
    description: "Linux64 Fuzzing No-optimize ASAN"
    index:
        product: firefox
        job-name: linux64-fuzzing-asan-noopt
    attributes:
        # The gtest libxul contains libFuzzer targets
        skip-verify-test-packaging: true
    treeherder:
        platform: linux64-noopt/asan
        symbol: Bf
    worker:
        env:
            PERFHERDER_EXTRA_OPTIONS: asan-fuzzing-noopt
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
        max-run-time: 5400
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: fuzzing-asan-tc
        mozconfig-variant: nightly-fuzzing-asan-noopt
        tooltool-downloads: public
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust-dev
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-llvm-symbolizer
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null

linux64-asan-fuzzing-afl/opt:
    description: "Linux64 Fuzzing Opt ASAN AFL"
    index:
        product: firefox
        job-name: linux64-fuzzing-asan-afl-opt
    attributes:
        # The gtest libxul contains libFuzzer targets
        skip-verify-test-packaging: true
    treeherder:
        platform: linux64/asan
        symbol: Boaf
    worker:
        env:
            PERFHERDER_EXTRA_OPTIONS: asan-fuzzing-afl
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
            AFL_CC: /builds/worker/fetches/clang/bin/clang
            AFL_CXX: /builds/worker/fetches/clang/bin/clang++
            AFL_LLVM_INSTRUMENT: llvmnative
            AFL_LLVM_NO_RPATH: "1"
        max-run-time: 7200
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: fuzzing-asan-tc
        mozconfig-variant: nightly-fuzzing-asan-afl
        tooltool-downloads: public
    use-sccache: true
    fetches:
        toolchain:
            - linux64-afl-instrumentation
            - linux64-clang
            - linux64-rust-dev
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-llvm-symbolizer
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null

linux64-asan-fuzzing-nyx/opt:
    description: "Linux64 Fuzzing Opt ASAN NYX"
    index:
        product: firefox
        job-name: linux64-fuzzing-asan-nyx-opt
    attributes:
        # The gtest libxul contains libFuzzer targets
        skip-verify-test-packaging: true
    treeherder:
        platform: linux64/asan
        symbol: Bonf
    worker:
        env:
            PERFHERDER_EXTRA_OPTIONS: asan-fuzzing-nyx
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
            AFL_CC: /builds/worker/fetches/clang/bin/clang
            AFL_CXX: /builds/worker/fetches/clang/bin/clang++
            AFL_LLVM_INSTRUMENT: llvmnative
            AFL_LLVM_NO_RPATH: "1"
        max-run-time: 7200
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: fuzzing-asan-tc
        mozconfig-variant: nightly-fuzzing-asan-nyx
        tooltool-downloads: public
    use-sccache: true
    fetches:
        toolchain:
            - linux64-afl-instrumentation
            - linux64-clang
            - linux64-rust-dev
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-llvm-symbolizer
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null

linux64-asan-fuzzing-nyx-ccov/opt:
    description: "Linux64 Fuzzing Opt ASAN NYX w/ Coverage"
    index:
        product: firefox
        job-name: linux64-ccov-fuzzing-asan-nyx-opt
    attributes:
        # The gtest libxul contains libFuzzer targets
        skip-verify-test-packaging: true
    treeherder:
        platform: linux64/asan
        symbol: Bncf
    worker:
        env:
            PERFHERDER_EXTRA_OPTIONS: asan-fuzzing-ccov-nyx
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
            AFL_CC: /builds/worker/fetches/clang/bin/clang
            AFL_CXX: /builds/worker/fetches/clang/bin/clang++
            AFL_LLVM_INSTRUMENT: llvmcodecov
            AFL_LLVM_NO_RPATH: "1"
        max-run-time: 7200
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: fuzzing-asan-tc
        mozconfig-variant: nightly-fuzzing-asan-nyx
        tooltool-downloads: public
    run-on-projects: ['mozilla-central']
    use-sccache: true
    fetches:
        toolchain:
            - linux64-afl-instrumentation
            - linux64-clang
            - linux64-rust-dev
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-llvm-symbolizer
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null


linux64-asan-fuzzing/opt:
    description: "Linux64 Fuzzing Opt ASAN"
    index:
        product: firefox
        job-name: linux64-fuzzing-asan-opt
    attributes:
        # The gtest libxul contains libFuzzer targets
        skip-verify-test-packaging: true
    treeherder:
        platform: linux64/asan
        symbol: Bof
    worker:
        env:
            PERFHERDER_EXTRA_OPTIONS: asan-fuzzing
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
        max-run-time: 5400
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: fuzzing-asan-tc
        mozconfig-variant: nightly-fuzzing-asan
        tooltool-downloads: public
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust-dev
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-llvm-symbolizer
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null

linux64-asan-fuzzing-ccov/opt:
    description: "Linux64 Fuzzing Opt ASAN w/ Coverage"
    index:
        product: firefox
        job-name: linux64-ccov-fuzzing-asan-opt
    attributes:
        # The gtest libxul contains libFuzzer targets
        skip-verify-test-packaging: true
    treeherder:
        platform: linux64/asan
        symbol: Bocf
    run-on-projects: ['mozilla-central']
    worker:
        env:
            PERFHERDER_EXTRA_OPTIONS: asan-fuzzing-ccov
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
        max-run-time: 5400
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        mozconfig-variant: asan-fuzzing-ccov
        tooltool-downloads: public
    use-sccache: false
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust-dev
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-llvm-symbolizer
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-fuzzing-ccov/opt:
    description: "Linux64 Fuzzing Opt w/ Coverage"
    index:
        product: firefox
        job-name: linux64-ccov-fuzzing-opt
    treeherder:
        platform: linux64/opt
        symbol: Bocf
    run-on-projects: ['mozilla-central']
    worker:
        max-run-time: 5400
        env:
            PERFHERDER_EXTRA_OPTIONS: fuzzing-ccov
            RUSTC_BOOTSTRAP: '1'
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        mozconfig-variant: fuzzing-ccov
        tooltool-downloads: public
    use-sccache: false
    fetches:
        toolchain:
            - linux64-clang
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-llvm-symbolizer
            - linux64-rust
            - linux64-rust-size
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null

linux64-asan-reporter-shippable/opt:
    description: "Linux64 Opt ASAN Reporter (Shippable)"
    attributes:
        shippable: true
    shipping-product:
        by-release-type:
            nightly: firefox
            default: null
    index:
        product: firefox
        job-name: linux64-asan-reporter-opt
        type: shippable
    treeherder:
        platform: linux64-asan-reporter/opt
        symbol: BoR
    run-on-projects: ['mozilla-central']
    worker-type: b-linux-xlarge-gcp
    worker:
        env:
            PERFHERDER_EXTRA_OPTIONS: asan-reporter
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
        max-run-time: 3600
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
            - taskcluster_nightly.py
        extra-config:
            max_build_output_timeout: 3600
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: asan-reporter-tc
        mozconfig-variant: nightly-asan-reporter
        tooltool-downloads: public
        mar-channel-id:
            firefox-mozilla-central-asan
        accepted-mar-channel-ids:
            firefox-mozilla-central-asan
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-llvm-symbolizer
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-asan/debug:
    description: "Linux64 Debug ASAN"
    index:
        product: firefox
        job-name: linux64-asan-debug
    treeherder:
        platform: linux64/asan
        symbol: Bd
    worker:
        env:
            PERFHERDER_EXTRA_OPTIONS: "debug asan"
        max-run-time: 5400
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: asan-tc-and-debug
        mozconfig-variant: debug-asan
        tooltool-downloads: public
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust-dev
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-llvm-symbolizer
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
    optimization:
        skip-unless-expanded: null

linux64-shippable/opt:
    description: "Linux64 Shippable"
    use-pgo: true
    attributes:
        shippable: true
        enable-full-crashsymbols: true
    shipping-phase: build
    shipping-product: firefox
    index:
        product: firefox
        job-name: linux64-opt
        type: shippable
    treeherder:
        platform: linux64-shippable/opt
        symbol: Bpgo(B)
    run-on-projects: ['release']
    worker-type: b-linux-xlarge-gcp
    worker:
        max-run-time: 9000
        env:
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
            # bug 1690154 - enable full symbols on all branches, but only
            # upload them on the official set. In conjunction with
            # `enable-full-crashsymbols`.
            MOZ_ENABLE_FULL_SYMBOLS: "1"
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
            - taskcluster_nightly.py
        extra-config:
            max_build_output_timeout: 3600
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        tooltool-downloads: public
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-nightlyasrelease/opt:
    description: "Linux64 Nightly-As-Release"
    use-pgo: linux64-shippable/opt
    attributes:
        enable-full-crashsymbols: true
    index:
        product: firefox
        job-name: linux64-nightlyasrelease-opt
    treeherder:
        platform: linux64-nightlyasrelease/opt
        symbol: Bpgo(Bnar)
    run-on-projects: [trunk-only]
    worker-type: b-linux-xlarge-gcp
    worker:
        max-run-time: 9000
        env:
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
            # bug 1690154 - enable full symbols on all branches, but only
            # upload them on the official set. In conjunction with
            # `enable-full-crashsymbols`.
            MOZ_ENABLE_FULL_SYMBOLS: "1"
            PERFHERDER_EXTRA_OPTIONS: nightly-as-release
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
            - taskcluster_nightly.py
        extra-config:
            max_build_output_timeout: 3600
        script: "mozharness/scripts/fx_desktop_build.py"
        mozconfig-variant: nightly-as-release
        secrets: true
        tooltool-downloads: public
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-noopt/debug:
    description: "Linux64 No-optimize Debug"
    index:
        product: firefox
        job-name: linux64-noopt-debug
    treeherder:
        platform: linux64-noopt/debug
        symbol: B
        tier: 2
    attributes:
        enable-full-crashsymbols: true
    worker:
        max-run-time: 5400
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: noopt-debug
        mozconfig-variant: noopt-debug
        tooltool-downloads: public
        keep-artifacts: false
    run-on-projects: ['mozilla-central']
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-rusttests/opt:
    description: "Linux64 Rust Tests Opt"
    index:
        product: firefox
        job-name: linux64-rusttests-opt
    treeherder:
        platform: linux64/opt
        symbol: BR
        tier: 1
    worker:
        max-run-time: 2700
        env:
            PERFHERDER_EXTRA_OPTIONS: rusttests
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: rusttests
        mozconfig-variant: rusttests
        tooltool-downloads: public
        keep-artifacts: false
    run-on-projects: ['mozilla-central']
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
    optimization:
        test-inclusive: [rusttests]

linux64-rusttests/debug:
    description: "Linux64 Rust Tests Debug"
    index:
        product: firefox
        job-name: linux64-rusttests-debug
    treeherder:
        platform: linux64/debug
        symbol: BR
        tier: 1
    worker:
        max-run-time: 2700
        env:
            PERFHERDER_EXTRA_OPTIONS: rusttests
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: rusttests-debug
        mozconfig-variant: rusttests-debug
        tooltool-downloads: public
        keep-artifacts: false
    run-on-projects: ['trunk']
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
    optimization:
        test-inclusive: [rusttests]

linux64-ccov/opt:
    description: "Linux64-CCov Opt"
    index:
        product: firefox
        job-name: linux64-ccov-opt
    treeherder:
        platform: linux64-ccov/opt
        symbol: B
        tier: 2
    run-on-projects: ['mozilla-central']
    worker:
        artifacts:
            - name: public/code-coverage-grcov.zip
              path: /builds/worker/workspace/obj-build/code-coverage-grcov.zip
              type: file
        max-run-time: 7200
        env:
            RUSTC_BOOTSTRAP: '1'
            MOZ_AUTOMATION_PACKAGE_TESTS: "1"
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: code-coverage-opt
        mozconfig-variant: code-coverage-opt
        tooltool-downloads: public
    use-sccache: false
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-grcov
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-ccov/debug:
    description: "Linux64-CCov Debug"
    index:
        product: firefox
        job-name: linux64-ccov-debug
    treeherder:
        platform: linux64-ccov/debug
        symbol: B
        tier: 2
    run-on-projects: []
    worker:
        max-run-time: 7200
        env:
            RUSTC_BOOTSTRAP: '1'
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: code-coverage-debug
        mozconfig-variant: code-coverage-debug
        tooltool-downloads: public
    use-sccache: false
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-grcov
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-add-on-devel/opt:
    description: "Linux64 add-on-devel"
    index:
        product: firefox
        job-name: linux64-add-on-devel
    treeherder:
        platform: linux64-add-on-devel/opt
        symbol: B
        tier: 2
    worker:
        max-run-time: 3600
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: add-on-devel
        mozconfig-variant: add-on-devel
        tooltool-downloads: public
    run-on-projects: ['mozilla-beta', 'mozilla-release']
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-nasm
            - linux64-node
            - linux64-pkgconf
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-aarch64/opt:
    description: "Linux AArch64 (a.k.a. ARM64) Opt"
    index:
        product: firefox
        job-name: linux64-aarch64-opt
    attributes:
        enable-full-crashsymbols: true
    treeherder:
        platform: linux64-aarch64/opt
        symbol: B
    worker:
        max-run-time: 7200
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
        extra-config:
            extra_mozconfig_content:
                - ac_add_options --target=aarch64
                - unset MOZ_STDCXX_COMPAT
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        tooltool-downloads: public
    run-on-projects: ['integration']
    use-sccache: true
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-sccache
            - linux64-node
            - linux64-pkgconf
            - sysroot-aarch64-linux-gnu
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi

linux64-aarch64-shippable/opt:
    description: "Linux AArch64 (a.k.a. ARM64) Shippable"
    use-pgo: linux64-shippable/opt
    index:
        product: firefox
        job-name: linux64-aarch64-opt
        type: shippable
    attributes:
        shippable: true
        enable-full-crashsymbols: true
        skip-verify-test-packaging: true
    shipping-phase: build
    shipping-product: firefox
    treeherder:
        platform: linux64-aarch64-shippable/opt
        symbol: Bpgo(B)
    worker-type: b-linux-xlarge-gcp
    worker:
        max-run-time: 9000
        env:
            # bug 1690154 - enable full symbols on all branches, but only
            # upload them on the official set. In conjunction with
            # `enable-full-crashsymbols`.
            MOZ_ENABLE_FULL_SYMBOLS: "1"
    run:
        using: mozharness
        actions: [get-secrets, build]
        config:
            - builds/releng_base_firefox.py
            - builds/releng_base_linux_64_builds.py
            - taskcluster_nightly.py
        extra-config:
            extra_mozconfig_content:
                - ac_add_options --target=aarch64
                - unset MOZ_STDCXX_COMPAT
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        tooltool-downloads: public
    run-on-projects: ['mozilla-central']
    run-on-releases: ['nightly']
    fetches:
        toolchain:
            - linux64-clang
            - linux64-rust
            - linux64-rust-size
            - linux64-cbindgen
            - linux64-dump_syms
            - linux64-node
            - linux64-pkgconf
            - sysroot-aarch64-linux-gnu
            - sysroot-x86_64-linux-gnu
            - sysroot-wasm32-wasi
