Backed out 12 changesets (bug 632954) for causing Android Bpgo(run) pending jobs CLOSED TREE
authorNoemi Erli <nerli@mozilla.com>
Wed, 20 Mar 2019 11:58:18 +0200
changeset 465176 d7e6fff52db3179219d39da39b248c8f2571c048
parent 465175 d6485b40ffd6eaed7db65f187db1898aaed273b9
child 465177 9954a61f0b3a10f972a1c5fa86860948cce31b1d
push id35735
push usershindli@mozilla.com
push dateThu, 21 Mar 2019 04:34:45 +0000
treeherdermozilla-central@ac0cd1a710f3 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs632954
milestone68.0a1
backs out429c96e4de3234447b0aaf00214422ad84e98b83
de8beacc5eb45a75087c1e9b8b69276d11888d53
c151ebf303cad175e24bcc0965c800a9d12ecb3b
b96dd954a456d8088a3ceda66f51d4106f516b4a
26031d3623333bbdedd1fb388f0867bc9f7cc23c
097f141a499d151e167c85dcb57e66aade7c28cb
6f5fc0d644dd1eb83294ce41b2b47be44c2d9783
53d3443e55d95af494d6c8bdc3d2d7a52c5eff1e
503bcac735831eea887393d4759358220bcb6d99
142ae187478da8a6c3899ef6409cafc6e60a9115
0615c775a0cf6e8f98e1c051cd574c0d602a738a
3dfc0e4f8e7c8cd48b911033222fb3c3edb9762b
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out 12 changesets (bug 632954) for causing Android Bpgo(run) pending jobs CLOSED TREE Backed out changeset 429c96e4de32 (bug 632954) Backed out changeset de8beacc5eb4 (bug 632954) Backed out changeset c151ebf303ca (bug 632954) Backed out changeset b96dd954a456 (bug 632954) Backed out changeset 26031d362333 (bug 632954) Backed out changeset 097f141a499d (bug 632954) Backed out changeset 6f5fc0d644dd (bug 632954) Backed out changeset 53d3443e55d9 (bug 632954) Backed out changeset 503bcac73583 (bug 632954) Backed out changeset 142ae187478d (bug 632954) Backed out changeset 0615c775a0cf (bug 632954) Backed out changeset 3dfc0e4f8e7c (bug 632954)
build/moz.configure/warnings.configure
mobile/android/config/mozconfigs/android-api-16/profile-generate
mobile/android/config/mozconfigs/android-api-16/profile-use
mozglue/android/APKOpen.cpp
mozglue/android/moz.build
taskcluster/ci/build/android.yml
taskcluster/ci/generate-profile/kind.yml
taskcluster/ci/instrumented-build/kind.yml
taskcluster/ci/test/compiled.yml
taskcluster/ci/test/misc.yml
taskcluster/ci/test/mochitest.yml
taskcluster/ci/test/raptor.yml
taskcluster/ci/test/reftest.yml
taskcluster/ci/test/test-platforms.yml
taskcluster/ci/test/xpcshell.yml
taskcluster/scripts/tester/test-linux.sh
taskcluster/taskgraph/transforms/job/mozharness.py
taskcluster/taskgraph/transforms/tests.py
taskcluster/taskgraph/try_option_syntax.py
testing/marionette/client/marionette_driver/geckoinstance.py
testing/mozbase/mozdevice/mozdevice/adb.py
testing/mozharness/configs/android/android_pgo.py
testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_profile_generate.py
testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_profile_use.py
testing/mozharness/mozharness/mozilla/building/buildbase.py
testing/mozharness/mozharness/mozilla/mozbase.py
testing/mozharness/scripts/android_emulator_pgo.py
toolkit/xre/Bootstrap.cpp
toolkit/xre/Bootstrap.h
toolkit/xre/moz.build
--- a/build/moz.configure/warnings.configure
+++ b/build/moz.configure/warnings.configure
@@ -118,23 +118,17 @@ check_and_add_gcc_warning('-Wno-error=ma
 # we don't want our builds held hostage when a platform-specific API
 # becomes deprecated.
 check_and_add_gcc_warning('-Wno-error=deprecated-declarations')
 
 # false positives depending on optimization
 check_and_add_gcc_warning('-Wno-error=array-bounds')
 
 # can't get rid of those PGO warnings
-check_and_add_gcc_warning('-Wno-error=coverage-mismatch')
-
-# -Wbackend-plugin warnings from Android PGO profile-use builds:
-# error: /builds/worker/workspace/build/src/mozglue/misc/AutoProfilerLabel.cpp:
-#  Function control flow change detected (hash mismatch)
-#  _ZN7mozilla17AutoProfilerLabelD2Ev [-Werror,-Wbackend-plugin]
-check_and_add_gcc_warning('-Wno-error=backend-plugin')
+check_and_add_gcc_warning('-Wno-error=coverage-mismatch', when='MOZ_PGO')
 
 # false positives depending on optimizations
 check_and_add_gcc_warning('-Wno-error=free-nonheap-object')
 
 # Would be a pain to fix all occurrences, for very little gain
 check_and_add_gcc_warning('-Wno-error=multistatement-macros')
 
 # Disable the -Werror for return-std-move because of a false positive
deleted file mode 100644
--- a/mobile/android/config/mozconfigs/android-api-16/profile-generate
+++ /dev/null
@@ -1,8 +0,0 @@
-. "$topsrcdir/mobile/android/config/mozconfigs/android-api-16/nightly"
-
-mk_add_options "export MOZ_AUTOMATION_BUILD_SYMBOLS=0"
-mk_add_options "export MOZ_AUTOMATION_PACKAGE_TESTS=0"
-mk_add_options "export MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES=0"
-
-ac_add_options --enable-profile-generate
-unset MOZ_LTO
deleted file mode 100644
--- a/mobile/android/config/mozconfigs/android-api-16/profile-use
+++ /dev/null
@@ -1,7 +0,0 @@
-. "$topsrcdir/mobile/android/config/mozconfigs/android-api-16/nightly"
-
-export LLVM_PROFDATA="$topsrcdir/clang/bin/llvm-profdata"
-
-ac_add_options --enable-profile-use
-ac_add_options --with-pgo-jarlog=/builds/worker/fetches/en-US.log
-ac_add_options --with-pgo-profile-path=/builds/worker/fetches/default.profraw
--- a/mozglue/android/APKOpen.cpp
+++ b/mozglue/android/APKOpen.cpp
@@ -374,21 +374,16 @@ Java_org_mozilla_gecko_mozglue_GeckoLoad
     gBootstrap->XRE_SetAndroidChildFds(
         jenv, {prefsFd, prefMapFd, ipcFd, crashFd, crashAnnotationFd});
     gBootstrap->XRE_SetProcessType(argv[argc - 1]);
 
     XREChildData childData;
     gBootstrap->XRE_InitChildProcess(argc - 1, argv, &childData);
   }
 
-#ifdef MOZ_WIDGET_ANDROID
-#  ifdef MOZ_PROFILE_GENERATE
-  gBootstrap->XRE_WriteLLVMProfData();
-#  endif
-#endif
   gBootstrap.reset();
   FreeArgv(argv, argc);
 }
 
 extern "C" APKOPEN_EXPORT mozglueresult ChildProcessInit(int argc,
                                                          char* argv[]) {
   if (loadNSSLibs() != SUCCESS) {
     return FAILURE;
--- a/mozglue/android/moz.build
+++ b/mozglue/android/moz.build
@@ -28,19 +28,16 @@ if CONFIG['MOZ_CRASHREPORTER']:
     ]
 
 FINAL_LIBRARY = 'mozglue'
 
 for var in ('ANDROID_PACKAGE_NAME',
             'ANDROID_CPU_ARCH'):
     DEFINES[var] = '"%s"' % CONFIG[var]
 
-if CONFIG['MOZ_PROFILE_GENERATE']:
-    DEFINES['MOZ_PROFILE_GENERATE'] = True
-
 if CONFIG['MOZ_FOLD_LIBS']:
     DEFINES['MOZ_FOLD_LIBS'] = True
 
 LOCAL_INCLUDES += [
     '!/build',
     '../linker',
     '/db/sqlite3/src',
     '/ipc/chromium/src',
--- a/taskcluster/ci/build/android.yml
+++ b/taskcluster/ci/build/android.yml
@@ -329,71 +329,16 @@ android-api-16/opt:
         - linux64-clang
         - linux64-rust-android
         - linux64-rust-size
         - linux64-cbindgen
         - linux64-sccache
         - linux64-nasm
         - linux64-node
 
-android-api-16/pgo:
-    description: "Android 4.0 api-16+ PGO"
-    use-pgo: true
-    index:
-        product: mobile
-        job-name: android-api-16-pgo
-    attributes:
-        enable-full-crashsymbols: true
-    treeherder:
-        platform: android-4-0-armv7-api16/pgo
-        symbol: Bpgo(B)
-    worker-type: aws-provisioner-v1/gecko-{level}-b-android
-    worker:
-        docker-image: {in-tree: android-build}
-        max-run-time: 7200
-        env:
-            GRADLE_USER_HOME: "/builds/worker/workspace/build/src/mobile/android/gradle/dotgradle-offline"
-            TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
-        artifacts:
-            - name: public/android/maven
-              # TODO Bug 1433198. Remove the following entry once target.maven.zip is uploaded to a maven repository
-              path: /builds/worker/workspace/build/src/obj-firefox/gradle/build/mobile/android/geckoview/maven/
-              type: directory
-            - name: public/build/target.maven.zip
-              path: /builds/worker/workspace/build/src/obj-firefox/gradle/build/mobile/android/geckoview/target.maven.zip
-              type: file
-            - name: public/build/geckoview-androidTest.apk
-              path: /builds/worker/workspace/build/src/obj-firefox/gradle/build/mobile/android/geckoview/outputs/apk/androidTest/withGeckoBinaries/debug/geckoview-withGeckoBinaries-debug-androidTest.apk
-              type: file
-            - name: public/build/geckoview_example.apk
-              path: /builds/worker/workspace/build/src/obj-firefox/gradle/build/mobile/android/geckoview_example/outputs/apk/withGeckoBinaries/debug/geckoview_example-withGeckoBinaries-debug.apk
-              type: file
-            - name: public/build
-              path: /builds/worker/artifacts/
-              type: directory
-    run:
-        using: mozharness
-        actions: [get-secrets, build]
-        config:
-            - builds/releng_base_android_64_builds.py
-        script: "mozharness/scripts/fx_desktop_build.py"
-        secrets: true
-        custom-build-variant-cfg: api-16-profile-use
-        tooltool-downloads: internal
-    toolchains:
-        - android-gradle-dependencies
-        - android-ndk-linux
-        - android-sdk-linux
-        - linux64-clang
-        - linux64-rust-android
-        - linux64-rust-size
-        - linux64-cbindgen
-        - linux64-nasm
-        - linux64-node
-
 android-api-16-without-google-play-services/opt:
     description: "Android 4.0 api-16+ (without Google Play Services) Opt"
     index:
         product: mobile
         job-name: android-api-16-without-google-play-services-opt
     treeherder:
         platform: android-4-0-armv7-api16/opt
         symbol: BnoGPS
--- a/taskcluster/ci/generate-profile/kind.yml
+++ b/taskcluster/ci/generate-profile/kind.yml
@@ -48,44 +48,8 @@ jobs:
                 - type: file
                   name: public/build/profile-run-2.log
                   path: /builds/worker/artifacts/profile-run-2.log
         run:
             using: run-task
             command: >
                 cd /builds/worker/checkouts/gecko &&
                 ./taskcluster/scripts/misc/run-profileserver.sh
-
-    android-api-16/pgo:
-        description: "Android 4.0 api-16+ Profile Generation"
-        shipping-phase: build
-        shipping-product: fennec
-        index:
-            product: mobile
-            job-name: android-api-16-profile
-        treeherder:
-            platform: android-4-0-armv7-api16/pgo
-        worker-type: t-linux-xlarge-pgo
-        worker:
-            max-run-time: 5400
-            docker-image: {in-tree: desktop1604-test}
-            env:
-                WORKSPACE: "/builds/worker/workspace"
-                WORKING_DIR: "/builds/worker"
-                MOZHARNESS_PATH: "/builds/worker/workspace/build/src/testing/mozharness"
-            artifacts:
-                - type: file
-                  name: public/build/profdata.tar.xz
-                  path: /builds/worker/artifacts/profdata.tar.xz
-                - type: directory
-                  name: public/build
-                  path: /builds/worker/artifacts/blobber_upload_dir
-        run:
-            using: mozharness
-            need-xvfb: true
-            job-script: taskcluster/scripts/tester/test-linux.sh
-            script: android_emulator_pgo.py
-            tooltool-downloads: internal
-            options: [installer-path=/builds/worker/fetches/target.apk]
-            config:
-                - android/android_common.py
-                - android/androidarm_4_3.py
-                - android/android_pgo.py
--- a/taskcluster/ci/instrumented-build/kind.yml
+++ b/taskcluster/ci/instrumented-build/kind.yml
@@ -48,55 +48,8 @@ jobs:
             - linux64-binutils
             - linux64-clang
             - linux64-rust
             - linux64-rust-size
             - linux64-cbindgen
             - linux64-sccache
             - linux64-nasm
             - linux64-node
-
-    android-api-16/pgo:
-        description: "Android 4.0 api-16+ PGO instrumented"
-        shipping-phase: build
-        shipping-product: fennec
-        attributes:
-            enable-full-crashsymbols: true
-        treeherder:
-            platform: android-4-0-armv7-api16/pgo
-        worker-type: aws-provisioner-v1/gecko-{level}-b-android
-        worker:
-            docker-image: {in-tree: android-build}
-            max-run-time: 7200
-            env:
-                GRADLE_USER_HOME: "/builds/worker/workspace/build/src/mobile/android/gradle/dotgradle-offline"
-                TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
-                PERFHERDER_EXTRA_OPTIONS: instrumented
-            artifacts:
-                - name: public/build
-                  path: /builds/worker/artifacts/
-                  type: directory
-                - name: public/build/geckoview-androidTest.apk
-                  path: /builds/worker/workspace/build/src/obj-firefox/gradle/build/mobile/android/geckoview/outputs/apk/androidTest/withGeckoBinaries/debug/geckoview-withGeckoBinaries-debug-androidTest.apk
-                  type: file
-                - name: public/build/geckoview_example.apk
-                  path: /builds/worker/workspace/build/src/obj-firefox/gradle/build/mobile/android/geckoview_example/outputs/apk/withGeckoBinaries/debug/geckoview_example-withGeckoBinaries-debug.apk
-                  type: file
-        run:
-            using: mozharness
-            actions: [get-secrets, build]
-            config:
-                - builds/releng_base_android_64_builds.py
-            script: "mozharness/scripts/fx_desktop_build.py"
-            secrets: true
-            custom-build-variant-cfg: api-16-profile-generate
-            tooltool-downloads: internal
-        toolchains:
-            - android-gradle-dependencies
-            - android-ndk-linux
-            - android-sdk-linux
-            - linux64-clang-7-android-cross
-            - linux64-rust-android
-            - linux64-rust-size
-            - linux64-cbindgen
-            - linux64-sccache
-            - linux64-nasm
-            - linux64-node
--- a/taskcluster/ci/test/compiled.yml
+++ b/taskcluster/ci/test/compiled.yml
@@ -25,20 +25,17 @@ job-defaults:
 cppunit:
     description: "CPP Unit Tests"
     suite: cppunittest
     treeherder-symbol: Cpp
     instance-size:
         by-test-platform:
             android-em.*: xlarge
             default: default
-    run-on-projects:
-        by-test-platform:
-            android-em-4.3-arm7-api-16/opt: ['try']
-            default: built-projects
+    run-on-projects: built-projects
 
 gtest:
     description: "GTests run"
     suite: gtest
     treeherder-symbol: GTest
     instance-size: xlarge
     run-on-projects:
         by-test-platform:
@@ -75,17 +72,16 @@ jittest:
             # empty string would fail to match /(?!-ccov)/ so the whole thing
             # would succeed. The beginning /?=linux/ is needed because the
             # platform "linux64" doesn't have enough characters for both the
             # beginning /linux/ and the final /...../.
             #
             # Additionally, platforms contain suffixes like "/opt" or "/debug".
             (?=linux).*(?!-ccov)...../.*: []  # redundant with SM(...)
             (?=windows).*(?!-ccov)...../.*: []  # redundant with SM(p)
-            android-hw-.*-api-16/opt: ['try']
             default: built-projects
     chunks:
         by-test-platform:
             windows.*: 1
             windows10-64-ccov/debug: 6
             macosx.*: 1
             macosx64/debug: 3
             macosx64-ccov/debug: 4
--- a/taskcluster/ci/test/misc.yml
+++ b/taskcluster/ci/test/misc.yml
@@ -11,22 +11,17 @@ geckoview-junit:
         by-test-platform:
             android-em-7.*: 3
             default: default
     chunks:
         by-test-platform:
             android-em-4.3-arm7-api-16-ccov/debug: 8
             android-em-4.3-arm7-api-16/debug: 8
             android-em-4.3-arm7-api-16/opt: 3
-            android-em-4.3-arm7-api-16-pgo/opt: 3
             default: 1
-    run-on-projects:
-        by-test-platform:
-            android-em-4.3-arm7-api-16/opt: ['try']
-            default: built-projects
     mozharness:
         script: android_emulator_unittest.py
         config:
             by-test-platform:
                 android-em-7.*:
                     - android/android_common.py
                     - android/androidx86_7_0.py
                 android-em-4.*:
@@ -40,23 +35,18 @@ robocop:
     suite: robocop
     treeherder-symbol: M(rc)
     instance-size: xlarge
     chunks:
         by-test-platform:
             # android-em-4.3-arm7-api-16/debug -- not run
             android-em-4.3-arm7-api-16-ccov/debug: 8
             android-em-4.3-arm7-api-16/opt: 4
-            android-em-4.3-arm7-api-16-pgo/opt: 4
     loopback-video: true
     e10s: false
-    run-on-projects:
-        by-test-platform:
-            android-em-4.3-arm7-api-16/opt: ['try']
-            default: built-projects
     mozharness:
         script: android_emulator_unittest.py
         config:
             - android/android_common.py
             - android/androidarm_4_3.py
         extra-options:
             - --test-suite=robocop
 
@@ -82,17 +72,16 @@ test-verify:
     instance-size:
         by-test-platform:
             android-em.*: xlarge
             default: default
     max-run-time: 10800
     allow-software-gl-layers: false
     run-on-projects:
         by-test-platform:
-            android-em-4.3-arm7-api-16/opt: ['try']
             # do not run on ccov
             .*-ccov/.*: []
             .*-asan/.*: []
             (?:windows10-64|windows7-32|linux64)(?:-qr)?/opt: ['mozilla-central', 'try']
             # do not run on beta or release: usually just confirms earlier results
             default: ['trunk', 'try']
     tier: 2
     mozharness:
--- a/taskcluster/ci/test/mochitest.yml
+++ b/taskcluster/ci/test/mochitest.yml
@@ -3,20 +3,16 @@ job-defaults:
         by-test-platform:
             android-em-7.*: geckoview-androidTest.apk
             default: null
     serviceworker-e10s:
         by-test-platform:
             linux64/debug: both
             default: false
     socketprocess-e10s: false
-    run-on-projects:
-        by-test-platform:
-            android-em-4.3-arm7-api-16/opt: ['try']
-            default: built-projects
     mozharness:
         script:
             by-test-platform:
                 android-em.*: android_emulator_unittest.py
                 android-hw.*: android_hardware_unittest.py
                 default: desktop_unittest.py
         config:
             by-test-platform:
@@ -37,16 +33,17 @@ job-defaults:
                 windows.*:
                     - unittests/win_taskcluster_unittest.py
 
 mochitest:
     description: "Mochitest plain run"
     suite: mochitest/plain-chunked
     treeherder-symbol: M()
     loopback-video: true
+    run-on-projects: built-projects
     tier:
         by-test-platform:
             android-em-7.*/opt: 2
             default: default
     instance-size:
         by-test-platform:
             android-em.*: xlarge
             default: default
@@ -255,16 +252,17 @@ mochitest-devtools-webreplay:
         by-test-platform:
             macosx64.*/opt: ['trunk', 'try']
             default: []
 
 mochitest-gpu:
     description: "Mochitest GPU run"
     suite: mochitest/gpu
     treeherder-symbol: M(gpu)
+    run-on-projects: built-projects
     loopback-video: true
     instance-size:
         by-test-platform:
             android-em.*: xlarge
             default: default
     virtualization: virtual-with-gpu
     e10s:
         by-test-platform:
@@ -284,21 +282,17 @@ mochitest-media:
     description: "Mochitest media run"
     suite: mochitest/mochitest-media
     treeherder-symbol: M(mda)
     max-run-time:
         by-test-platform:
             windows10-64-ccov/debug: 7200
             macosx64-ccov/debug: 7200
             default: 5400
-    run-on-projects:
-        by-test-platform:
-            android-hw-.*-api-16/opt: ['try']
-            android-em-4.3-arm7-api-16/opt: ['try']
-            default: built-projects
+    run-on-projects: built-projects
     socketprocess-e10s:
         by-test-platform:
             android.*: false
             default: both
     loopback-video: true
     virtualization:
         by-test-platform:
             windows10-64(?:-pgo)?-qr/.*: virtual-with-gpu
--- a/taskcluster/ci/test/raptor.yml
+++ b/taskcluster/ci/test/raptor.yml
@@ -8,17 +8,16 @@ job-defaults:
     workdir:
         by-test-platform:
             android-hw.*: /builds/worker
             default: /home/cltbld
     run-on-projects:
         by-test-platform:
             windows10-64-ux: ['try', 'mozilla-central']
             (?:windows10-64|windows7-32|linux64)(?:-qr)?/opt: ['mozilla-central', 'try']
-            android-hw-.*-api-16/opt: ['try']
             default: ['try', 'trunk', 'mozilla-beta']
     tier:
         by-test-platform:
             windows10-64-ccov/.*: 3
             linux64-ccov/.*: 3
             android-hw-g5.*: 2
             default: 1
     virtualization:
@@ -259,18 +258,17 @@ raptor-tp6-binast-1-firefox:
             - --test=raptor-tp6-binast-1
 
 raptor-tp6m-1-geckoview:
     description: "Raptor tp6m-1 on Geckoview"
     try-name: raptor-tp6m-1-geckoview
     treeherder-symbol: Rap(tp6m-1)
     run-on-projects:
         by-test-platform:
-            android-hw-p2-8-0-arm7.*-pgo/opt: ['try', 'mozilla-central']
-            android-hw-.*-api-16/opt: ['try']
+            android-hw-p2-8-0-arm7.*: ['try', 'mozilla-central']
             default: ['try', 'trunk', 'mozilla-beta']
     target: geckoview_example.apk
     tier:
         by-test-platform:
             android-hw-p2-8-0-android-aarch64.*: 1
             default: 2
     mozharness:
         extra-options:
@@ -281,19 +279,18 @@ raptor-tp6m-1-geckoview:
 
 raptor-tp6m-2-geckoview:
     description: "Raptor tp6m-2 on Geckoview"
     try-name: raptor-tp6m-2-geckoview
     treeherder-symbol: Rap(tp6m-2)
     target: geckoview_example.apk
     run-on-projects:
         by-test-platform:
-            android-hw-p2-8-0-arm7.*-pgo/opt: ['try', 'mozilla-central']
-            android-hw-g5.*-pgo/opt: ['try', 'mozilla-central']
-            android-hw-.*-api-16/opt: ['try']
+            android-hw-p2-8-0-arm7.*: ['try', 'mozilla-central']
+            android-hw-g5.*: ['try', 'mozilla-central']
             default: ['try', 'trunk', 'mozilla-beta']
     tier: 2
     mozharness:
         extra-options:
             - --test=raptor-tp6m-2
             - --app=geckoview
             - --binary=org.mozilla.geckoview_example
             - --activity=GeckoViewActivity
@@ -325,38 +322,36 @@ raptor-tp6m-4-geckoview:
             - --binary=org.mozilla.geckoview_example
 
 raptor-tp6m-5-geckoview:
     description: "Raptor tp6m-5 on Geckoview"
     try-name: raptor-tp6m-5-geckoview
     treeherder-symbol: Rap(tp6m-5)
     run-on-projects:
         by-test-platform:
-            android-hw-p2-8-0-arm7.*-pgo/opt: ['try', 'mozilla-central']
-            android-hw-g5.*-pgo/opt: ['try', 'mozilla-central']
-            android-hw-.*-api-16/opt: ['try']
+            android-hw-p2-8-0-arm7.*: ['try', 'mozilla-central']
+            android-hw-g5.*: ['try', 'mozilla-central']
             default: ['try', 'trunk', 'mozilla-beta']
     target: geckoview_example.apk
     tier: 2
     mozharness:
         extra-options:
             - --test=raptor-tp6m-5
             - --app=geckoview
             - --binary=org.mozilla.geckoview_example
             - --activity=GeckoViewActivity
 
 raptor-tp6m-6-geckoview:
     description: "Raptor tp6m-6 on Geckoview"
     try-name: raptor-tp6m-6-geckoview
     treeherder-symbol: Rap(tp6m-6)
     run-on-projects:
         by-test-platform:
-            android-hw-p2-8-0-arm7.*-pgo/opt: ['try', 'mozilla-central']
-            android-hw-g5.*-pgo/opt: ['try', 'mozilla-central']
-            android-hw-.*-api-16/opt: ['try']
+            android-hw-p2-8-0-arm7.*: ['try', 'mozilla-central']
+            android-hw-g5.*: ['try', 'mozilla-central']
             default: ['try', 'trunk', 'mozilla-beta']
     target: geckoview_example.apk
     tier: 2
     mozharness:
         extra-options:
             - --test=raptor-tp6m-6
             - --app=geckoview
             - --binary=org.mozilla.geckoview_example
@@ -376,19 +371,18 @@ raptor-tp6m-7-geckoview:
             - --activity=GeckoViewActivity
 
 raptor-tp6m-8-geckoview:
     description: "Raptor tp6m-8 on Geckoview"
     try-name: raptor-tp6m-8-geckoview
     treeherder-symbol: Rap(tp6m-8)
     run-on-projects:
         by-test-platform:
-            android-hw-p2-8-0-arm7.*-pgo/opt: ['try', 'mozilla-central']
-            android-hw-g5.*-pgo/opt: ['try', 'mozilla-central']
-            android-hw-.*-api-16/opt: ['try']
+            android-hw-p2-8-0-arm7.*: ['try', 'mozilla-central']
+            android-hw-g5.*: ['try', 'mozilla-central']
             default: ['try', 'trunk', 'mozilla-beta']
     target: geckoview_example.apk
     tier: 2
     mozharness:
         extra-options:
             - --test=raptor-tp6m-8
             - --app=geckoview
             - --binary=org.mozilla.geckoview_example
@@ -430,37 +424,34 @@ raptor-speedometer-firefox-profiling:
 
 raptor-speedometer-geckoview:
     description: "Raptor Speedometer on Geckoview"
     try-name: raptor-speedometer-geckoview
     treeherder-symbol: Rap(sp)
     target: geckoview_example.apk
     run-on-projects:
         by-test-platform:
-            android-hw-p2-8-0-arm7.*-pgo/opt: ['try', 'mozilla-central']
-            android-hw-.*-api-16/opt: ['try']
+            android-hw-p2-8-0-arm7.*: ['try', 'mozilla-central']
             default: ['try', 'trunk', 'mozilla-beta']
     max-run-time: 900
     mozharness:
         extra-options:
             - --test=raptor-speedometer
             - --app=geckoview
             - --binary=org.mozilla.geckoview_example
             - --activity=GeckoViewActivity
 
 raptor-speedometer-geckoview-power:
     description: "Raptor Speedometer Power on Geckoview"
     try-name: raptor-speedometer-geckoview-power
     treeherder-symbol: Rap-P(sp)
     target: geckoview_example.apk
     run-on-projects:
         by-test-platform:
-            android-hw.*-pgo/opt: ['try', 'mozilla-central']
-            android-hw-.*-aarch64/opt: ['try', 'mozilla-central']
-            android-hw-.*-api-16/opt: ['try']
+            android-hw.*: ['try', 'mozilla-central']
     max-run-time: 1800
     mozharness:
         extra-options:
             - --test=raptor-speedometer
             - --app=geckoview
             - --binary=org.mozilla.geckoview_example
             - --power-test
             - --page-cycles 5
@@ -469,17 +460,16 @@ raptor-speedometer-geckoview-power:
 
 raptor-speedometer-fennec:
     description: "Raptor Speedometer on Fennec"
     try-name: raptor-speedometer-fennec
     treeherder-symbol: Rap(sp)
     target: target.apk
     run-on-projects:
         by-test-platform:
-            android-hw-.*-api-16/opt: ['try']
             android-hw.*: ['try', 'trunk', 'mozilla-beta']
     tier: 2
     max-run-time: 900
     mozharness:
         extra-options:
             - --test=raptor-speedometer-fennec
             - --app=fennec
             - --binary=org.mozilla.fennec_aurora
@@ -612,18 +602,17 @@ raptor-unity-webgl-firefox-profiling:
 
 raptor-unity-webgl-geckoview:
     description: "Raptor Unity WebGL on Geckoview"
     try-name: raptor-unity-webgl-geckoview
     treeherder-symbol: Rap(ugl)
     target: geckoview_example.apk
     run-on-projects:
         by-test-platform:
-            android-hw-p2-8-0-arm7.*-pgo/opt: ['try', 'mozilla-central']
-            android-hw-.*-api-16/opt: ['try']
+            android-hw-p2-8-0-arm7.*: ['try', 'mozilla-central']
             default: ['try', 'trunk', 'mozilla-beta']
     max-run-time: 900
     tier: 3
     mozharness:
         extra-options:
             - --test=raptor-unity-webgl
             - --app=geckoview
             - --binary=org.mozilla.geckoview_example
--- a/taskcluster/ci/test/reftest.yml
+++ b/taskcluster/ci/test/reftest.yml
@@ -2,20 +2,16 @@ job-defaults:
     target:
         by-test-platform:
             android-em-7.*: geckoview-androidTest.apk
             default: null
     serviceworker-e10s:
         by-test-platform:
             linux64/debug: both
             default: false
-    run-on-projects:
-        by-test-platform:
-            android-em-4.3-arm7-api-16/opt: ['try']
-            default: built-projects
     mozharness:
         script:
             by-test-platform:
                 android-em.*: android_emulator_unittest.py
                 default: desktop_unittest.py
         config:
             by-test-platform:
                 android-em-7.*:
@@ -31,45 +27,46 @@ job-defaults:
                     - unittests/mac_unittest.py
                 windows.*:
                     - unittests/win_taskcluster_unittest.py
 
 crashtest:
     description: "Crashtest run"
     suite: reftest/crashtest
     treeherder-symbol: R(C)
+    run-on-projects: built-projects
     instance-size:
         by-test-platform:
             android-em.*: xlarge
             default: default
     virtualization:
         by-test-platform:
             windows10-64(?:-pgo)?-qr/.*: virtual-with-gpu
             default: virtual
     chunks:
         by-test-platform:
             android-em-4.3-arm7-api-16/debug: 10
             android-em-4.3-arm7-api-16/opt: 4
-            android-em-4.3-arm7-api-16-pgo/opt: 4
             android-em-7.*: 1
             default: 1
     e10s:
         by-test-platform:
             linux32/debug: both
             default: true
     max-run-time:
         by-test-platform:
             android-em.*: 7200
             default: 3600
 
 jsreftest:
     description: "JS Reftest run"
     suite: reftest/jsreftest
     schedules-component: jsreftest  # scheduling for this reftest is different from the others..
     treeherder-symbol: R(J)
+    run-on-projects: built-projects
     instance-size:
         by-test-platform:
             android-em.*: xlarge
             default: default
     chunks:
         by-test-platform:
             android-em-4.3-arm7-api-16/debug: 100
             android-em-7.0-x86_64/opt: 4
@@ -90,16 +87,17 @@ jsreftest:
             windows10-64-ccov/debug: 7200
             macosx64-ccov/debug: 7200
             default: 3600
 
 reftest:
     description: "Reftest run"
     suite: reftest/reftest
     treeherder-symbol: R(R)
+    run-on-projects: built-projects
     instance-size:
         by-test-platform:
             android-em.*: xlarge
             default: default
     virtualization: virtual-with-gpu
     chunks:
         by-test-platform:
             android-em-4.3-arm7-api-16/debug: 56
--- a/taskcluster/ci/test/test-platforms.yml
+++ b/taskcluster/ci/test/test-platforms.yml
@@ -361,22 +361,16 @@ android-em-4.3-arm7-api-16/debug:
 #         - android-ccov-tests
 
 android-em-4.3-arm7-api-16/opt:
     build-platform: android-api-16/opt
     test-sets:
         - android-common-tests
         - android-opt-tests
 
-android-em-4.3-arm7-api-16-pgo/opt:
-    build-platform: android-api-16-pgo/opt
-    test-sets:
-        - android-common-tests
-        - android-opt-tests
-
 android-em-7.0-x86/opt:
     build-platform: android-x86/opt
     test-sets:
         - android-x86-tests
 
 android-em-7.0-x86_64/opt:
     build-platform: android-x86_64/opt
     test-sets:
@@ -394,33 +388,18 @@ android-em-7.0-x86_64/debug:
 
 android-hw-g5-7-0-arm7-api-16/opt:
     build-platform: android-api-16/opt
     test-sets:
         - android-hw-arm7-raptor
         - android-hw-arm7-raptor-power
         - raptor-fetch-geckoview
 
-android-hw-g5-7-0-arm7-api-16-pgo/opt:
-    build-platform: android-api-16-pgo/opt
-    test-sets:
-        - android-hw-arm7-raptor
-        - android-hw-arm7-raptor-power
-        - raptor-fetch-geckoview
-
 # android-hw-p2-8-0 Google Pixel 2 Android 8.0
 
-android-hw-p2-8-0-arm7-api-16-pgo/opt:
-    build-platform: android-api-16-pgo/opt
-    test-sets:
-        - android-hw-arm7-opt-unittests
-        - android-hw-arm7-raptor
-        - android-hw-arm7-raptor-power
-        - raptor-fetch-geckoview
-
 android-hw-p2-8-0-arm7-api-16/opt:
     build-platform: android-api-16/opt
     test-sets:
         - android-hw-arm7-opt-unittests
         - android-hw-arm7-raptor
         - android-hw-arm7-raptor-power
         - raptor-fetch-geckoview
 
--- a/taskcluster/ci/test/xpcshell.yml
+++ b/taskcluster/ci/test/xpcshell.yml
@@ -29,17 +29,16 @@ job-defaults:
 xpcshell:
     description: "xpcshell test run"
     suite: xpcshell
     treeherder-symbol: X(X)
     run-on-projects:
         by-test-platform:
             windows10-64-asan/opt: []  # No XPCShell on ASAN yet
             windows10-aarch64/opt: ['try', 'mozilla-central']
-            android-em-4.3-arm7-api-16/opt: ['try']
             default: built-projects
     chunks:
         by-test-platform:
             linux32/debug: 12
             linux64/debug: 10
             android-em-4.3-arm7-api-16/debug: 12
             macosx.*: 1
             windows.*: 1
old mode 100755
new mode 100644
--- a/taskcluster/scripts/tester/test-linux.sh
+++ b/taskcluster/scripts/tester/test-linux.sh
@@ -18,17 +18,16 @@ fi
 ####
 
 # Inputs, with defaults
 
 : MOZHARNESS_PATH               ${MOZHARNESS_PATH}
 : MOZHARNESS_URL                ${MOZHARNESS_URL}
 : MOZHARNESS_SCRIPT             ${MOZHARNESS_SCRIPT}
 : MOZHARNESS_CONFIG             ${MOZHARNESS_CONFIG}
-: MOZHARNESS_OPTIONS            ${MOZHARNESS_OPTIONS}
 : NEED_XVFB                     ${NEED_XVFB:=true}
 : NEED_WINDOW_MANAGER           ${NEED_WINDOW_MANAGER:=false}
 : NEED_PULSEAUDIO               ${NEED_PULSEAUDIO:=false}
 : START_VNC                     ${START_VNC:=false}
 : TASKCLUSTER_INTERACTIVE       ${TASKCLUSTER_INTERACTIVE:=false}
 : mozharness args               "${@}"
 : WORKING_DIR                   ${WORKING_DIR:=$(pwd)}
 : WORKSPACE                     ${WORKSPACE:=${WORKING_DIR%/}/workspace}
@@ -171,33 +170,26 @@ export MOZ_SOURCE_REPO="${GECKO_HEAD_REP
 export MOZ_SOURCE_CHANGESET="${GECKO_HEAD_REV}"
 
 # support multiple, space delimited, config files
 config_cmds=""
 for cfg in $MOZHARNESS_CONFIG; do
   config_cmds="${config_cmds} --config-file ${MOZHARNESS_PATH}/configs/${cfg}"
 done
 
-if [ -n "$MOZHARNESS_OPTIONS" ]; then
-    options=""
-    for option in $MOZHARNESS_OPTIONS; do
-        options="$options --$option"
-    done
-fi
-
 mozharness_bin="$HOME/bin/run-mozharness"
 mkdir -p $(dirname $mozharness_bin)
 
 # Save the computed mozharness command to a binary which is useful
 # for interactive mode.
 echo -e "#!/usr/bin/env bash
 # Some mozharness scripts assume base_work_dir is in
 # the current working directory, see bug 1279237
 cd "$WORKSPACE"
-cmd=\"python2.7 ${MOZHARNESS_PATH}/scripts/${MOZHARNESS_SCRIPT} ${config_cmds} ${options} ${@} \${@}\"
+cmd=\"python2.7 ${MOZHARNESS_PATH}/scripts/${MOZHARNESS_SCRIPT} ${config_cmds} ${@} \${@}\"
 echo \"Running: \${cmd}\"
 exec \${cmd}" > ${mozharness_bin}
 chmod +x ${mozharness_bin}
 
 # In interactive mode, the user will be prompted with options for what to do.
 if ! $TASKCLUSTER_INTERACTIVE; then
   # run the given mozharness script and configs, but pass the rest of the
   # arguments in from our own invocation
--- a/taskcluster/taskgraph/transforms/job/mozharness.py
+++ b/taskcluster/taskgraph/transforms/job/mozharness.py
@@ -205,18 +205,16 @@ def mozharness_on_docker_worker_setup(co
     # not builds.
     if not run['keep-artifacts']:
         env['DIST_TARGET_UPLOADS'] = ''
         env['DIST_UPLOADS'] = ''
 
     # Xvfb
     if run['need-xvfb']:
         env['NEED_XVFB'] = 'true'
-    else:
-        env['NEED_XVFB'] = 'false'
 
     if run['tooltool-downloads']:
         internal = run['tooltool-downloads'] == 'internal'
         docker_worker_add_tooltool(config, job, taskdesc, internal=internal)
 
     # Retry if mozharness returns TBPL_RETRY
     worker['retry-exit-status'] = [4]
 
--- a/taskcluster/taskgraph/transforms/tests.py
+++ b/taskcluster/taskgraph/transforms/tests.py
@@ -608,17 +608,16 @@ def set_treeherder_machine_platform(conf
         'win64-aarch64/opt': 'windows10-aarch64/opt',
         'win32-pgo/opt': 'windows7-32/pgo',
         'win64-pgo/opt': 'windows10-64/pgo',
         # The build names for Android platforms have partially evolved over the
         # years and need to be translated.
         'android-api-16/debug': 'android-em-4-3-armv7-api16/debug',
         'android-api-16-ccov/debug': 'android-em-4-3-armv7-api16-ccov/debug',
         'android-api-16/opt': 'android-em-4-3-armv7-api16/opt',
-        'android-api-16-pgo/opt': 'android-em-4-3-armv7-api16-pgo/opt',
         'android-x86/opt': 'android-em-4-2-x86/opt',
         'android-api-16-gradle/opt': 'android-api-16-gradle/opt',
     }
     for test in tests:
         # For most desktop platforms, the above table is not used for "regular"
         # builds, so we'll always pick the test platform here.
         # On macOS though, the regular builds are in the table.  This causes a
         # conflict in `verify_task_graph_symbol` once you add a new test
@@ -682,17 +681,16 @@ def set_tier(config, tests):
                                          'macosx64/opt',
                                          'macosx64/debug',
                                          'macosx64-nightly/opt',
                                          'macosx64-devedition/opt',
                                          'macosx64-qr/opt',
                                          'macosx64-qr/debug',
                                          'android-em-4.3-arm7-api-16/opt',
                                          'android-em-4.3-arm7-api-16/debug',
-                                         'android-em-4.3-arm7-api-16-pgo/opt',
                                          'android-em-4.2-x86/opt',
                                          'android-em-7.0-x86_64/opt',
                                          'android-em-7.0-x86_64/debug',
                                          'android-em-7.0-x86/opt']:
                 test['tier'] = 1
             else:
                 test['tier'] = 2
 
--- a/taskcluster/taskgraph/try_option_syntax.py
+++ b/taskcluster/taskgraph/try_option_syntax.py
@@ -125,17 +125,16 @@ UNITTEST_PLATFORM_PRETTY_NAMES = {
         'linux64-stylo-sequential'
     ],
     'x64': [
         'linux64',
         'linux64-asan',
         'linux64-stylo-sequential'
     ],
     'Android 4.3 Emulator': ['android-em-4.3-arm7-api-16'],
-    'Android 4.3 Emulator PGO': ['android-em-4-3-armv7-api16-pgo'],
     'Android 7.0 Moto G5 32bit': ['android-hw-g5-7.0-arm7-api-16'],
     'Android 8.0 Google Pixel 2 32bit': ['android-hw-p2-8.0-arm7-api-16'],
     'Android 8.0 Google Pixel 2 64bit': ['android-hw-p2-8.0-android-aarch64'],
     '10.10': ['macosx64'],
     # other commonly-used substrings for platforms not yet supported with
     # in-tree taskgraphs:
     # '10.10.5': [..TODO..],
     # '10.6': [..TODO..],
--- a/testing/marionette/client/marionette_driver/geckoinstance.py
+++ b/testing/marionette/client/marionette_driver/geckoinstance.py
@@ -397,31 +397,30 @@ class FennecInstance(GeckoInstance):
 
         # Do not allow background tabs to be zombified, otherwise for tests that
         # open additional tabs, the test harness tab itself might get unloaded
         "browser.tabs.disableBackgroundZombification": True,
     }
 
     def __init__(self, emulator_binary=None, avd_home=None, avd=None,
                  adb_path=None, serial=None, connect_to_running_emulator=False,
-                 package_name=None, env=None, *args, **kwargs):
+                 package_name=None, *args, **kwargs):
         required_prefs = deepcopy(FennecInstance.fennec_prefs)
         required_prefs.update(kwargs.get("prefs", {}))
 
         super(FennecInstance, self).__init__(*args, **kwargs)
         self.required_prefs.update(required_prefs)
 
         self.runner_class = FennecEmulatorRunner
         # runner args
         self._package_name = package_name
         self.emulator_binary = emulator_binary
         self.avd_home = avd_home
         self.adb_path = adb_path
         self.avd = avd
-        self.env = env
         self.serial = serial
         self.connect_to_running_emulator = connect_to_running_emulator
 
     @property
     def package_name(self):
         """
         Name of app to run on emulator.
 
@@ -456,17 +455,16 @@ class FennecInstance(GeckoInstance):
             "processOutputLine": [NullOutput()],
         }
 
         runner_args = {
             "app": self.package_name,
             "avd_home": self.avd_home,
             "adb_path": self.adb_path,
             "binary": self.emulator_binary,
-            "env": self.env,
             "profile": self.profile,
             "cmdargs": ["-marionette"] + self.app_args,
             "symbols_path": self.symbols_path,
             "process_args": process_args,
             "logdir": self.workspace or os.getcwd(),
             "serial": self.serial,
         }
         if self.avd:
--- a/testing/mozbase/mozdevice/mozdevice/adb.py
+++ b/testing/mozbase/mozdevice/mozdevice/adb.py
@@ -44,17 +44,17 @@ class ADBProcess(object):
             self.stdout_file.seek(0, os.SEEK_SET)
             content = self.stdout_file.read().rstrip()
         return content
 
     def __str__(self):
         # Remove -s <serialno> from the error message to allow bug suggestions
         # to be independent of the individual failing device.
         arg_string = ' '.join(self.args)
-        arg_string = re.sub(' -s [\w-]+', '', arg_string)
+        arg_string = re.sub(' -s \w+', '', arg_string)
         return ('args: %s, exitcode: %s, stdout: %s' % (
             arg_string, self.exitcode, self.stdout))
 
 # ADBError, ADBRootError, and ADBTimeoutError are treated
 # differently in order that unhandled ADBRootErrors and
 # ADBTimeoutErrors can be handled distinctly from ADBErrors.
 
 
deleted file mode 100644
--- a/testing/mozharness/configs/android/android_pgo.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Mozharness configuration for Android PGO.
-#
-# This configuration should be combined with platform-specific mozharness
-# configuration such as androidarm_4_3.py, or similar.
-
-config = {
-    "default_actions": [
-        'setup-avds',
-        'start-emulator',
-        'download',
-        'create-virtualenv',
-        'verify-device',
-        'install',
-        'run-tests',
-    ],
-    "output_directory": "/sdcard",
-}
deleted file mode 100644
--- a/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_profile_generate.py
+++ /dev/null
@@ -1,5 +0,0 @@
-config = {
-    'stage_platform': 'android-api-16',
-    'src_mozconfig': 'mobile/android/config/mozconfigs/android-api-16/profile-generate',
-    'multi_locale_config_platform': 'android',
-}
deleted file mode 100644
--- a/testing/mozharness/configs/builds/releng_sub_android_configs/64_api_16_profile_use.py
+++ /dev/null
@@ -1,5 +0,0 @@
-config = {
-    'stage_platform': 'android-api-16',
-    'src_mozconfig': 'mobile/android/config/mozconfigs/android-api-16/profile-use',
-    'multi_locale_config_platform': 'android',
-}
--- a/testing/mozharness/mozharness/mozilla/building/buildbase.py
+++ b/testing/mozharness/mozharness/mozilla/building/buildbase.py
@@ -367,18 +367,16 @@ class BuildOptionParser(object):
         'noopt-debug': 'builds/releng_sub_%s_configs/%s_noopt_debug.py',
         'api-16-gradle-dependencies':
             'builds/releng_sub_%s_configs/%s_api_16_gradle_dependencies.py',
         'api-16': 'builds/releng_sub_%s_configs/%s_api_16.py',
         'api-16-debug': 'builds/releng_sub_%s_configs/%s_api_16_debug.py',
         'api-16-debug-ccov': 'builds/releng_sub_%s_configs/%s_api_16_debug_ccov.py',
         'api-16-debug-searchfox': 'builds/releng_sub_%s_configs/%s_api_16_debug_searchfox.py',
         'api-16-gradle': 'builds/releng_sub_%s_configs/%s_api_16_gradle.py',
-        'api-16-profile-generate': 'builds/releng_sub_%s_configs/%s_api_16_profile_generate.py',
-        'api-16-profile-use': 'builds/releng_sub_%s_configs/%s_api_16_profile_use.py',
         'api-16-without-google-play-services':
             'builds/releng_sub_%s_configs/%s_api_16_without_google_play_services.py',
         'rusttests': 'builds/releng_sub_%s_configs/%s_rusttests.py',
         'rusttests-debug': 'builds/releng_sub_%s_configs/%s_rusttests_debug.py',
         'x86': 'builds/releng_sub_%s_configs/%s_x86.py',
         'x86-fuzzing-debug': 'builds/releng_sub_%s_configs/%s_x86_fuzzing_debug.py',
         'x86_64': 'builds/releng_sub_%s_configs/%s_x86_64.py',
         'x86_64-debug': 'builds/releng_sub_%s_configs/%s_x86_64_debug.py',
--- a/testing/mozharness/mozharness/mozilla/mozbase.py
+++ b/testing/mozharness/mozharness/mozilla/mozbase.py
@@ -8,21 +8,19 @@ class MozbaseMixin(object):
     """
     def __init__(self, *args, **kwargs):
         super(MozbaseMixin, self).__init__(*args, **kwargs)
 
     @PreScriptAction('create-virtualenv')
     def _install_mozbase(self, action):
         dirs = self.query_abs_dirs()
 
-        requirements = os.path.join(
-            dirs['abs_test_install_dir'],
-            'config',
-            self.config.get('mozbase_requirements', 'mozbase_requirements.txt')
-        )
+        requirements = os.path.join(dirs['abs_test_install_dir'],
+                                    'config',
+                                    'mozbase_requirements.txt')
         if os.path.isfile(requirements):
             self.register_virtualenv_module(requirements=[requirements],
                                             two_pass=True)
             return
 
         # XXX Bug 879765: Dependent modules need to be listed before parent
         # modules, otherwise they will get installed from the pypi server.
         # XXX Bug 908356: This block can be removed as soon as the
deleted file mode 100644
--- a/testing/mozharness/scripts/android_emulator_pgo.py
+++ /dev/null
@@ -1,290 +0,0 @@
-#!/usr/bin/env python
-# ***** BEGIN LICENSE BLOCK *****
-# 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/.
-# ***** END LICENSE BLOCK *****
-
-import copy
-import json
-import time
-import os
-import sys
-import posixpath
-import subprocess
-
-# load modules from parent dir
-sys.path.insert(1, os.path.dirname(sys.path[0]))
-
-from mozharness.base.script import BaseScript, PreScriptAction
-from mozharness.mozilla.automation import EXIT_STATUS_DICT, TBPL_RETRY
-from mozharness.mozilla.mozbase import MozbaseMixin
-from mozharness.mozilla.testing.android import AndroidMixin
-from mozharness.mozilla.testing.testbase import TestingMixin, testing_config_options
-
-PAGES = [
-    "js-input/webkit/PerformanceTests/Speedometer/index.html",
-    "blueprint/sample.html",
-    "blueprint/forms.html",
-    "blueprint/grid.html",
-    "blueprint/elements.html",
-    "js-input/3d-thingy.html",
-    "js-input/crypto-otp.html",
-    "js-input/sunspider/3d-cube.html",
-    "js-input/sunspider/3d-morph.html",
-    "js-input/sunspider/3d-raytrace.html",
-    "js-input/sunspider/access-binary-trees.html",
-    "js-input/sunspider/access-fannkuch.html",
-    "js-input/sunspider/access-nbody.html",
-    "js-input/sunspider/access-nsieve.html",
-    "js-input/sunspider/bitops-3bit-bits-in-byte.html",
-    "js-input/sunspider/bitops-bits-in-byte.html",
-    "js-input/sunspider/bitops-bitwise-and.html",
-    "js-input/sunspider/bitops-nsieve-bits.html",
-    "js-input/sunspider/controlflow-recursive.html",
-    "js-input/sunspider/crypto-aes.html",
-    "js-input/sunspider/crypto-md5.html",
-    "js-input/sunspider/crypto-sha1.html",
-    "js-input/sunspider/date-format-tofte.html",
-    "js-input/sunspider/date-format-xparb.html",
-    "js-input/sunspider/math-cordic.html",
-    "js-input/sunspider/math-partial-sums.html",
-    "js-input/sunspider/math-spectral-norm.html",
-    "js-input/sunspider/regexp-dna.html",
-    "js-input/sunspider/string-base64.html",
-    "js-input/sunspider/string-fasta.html",
-    "js-input/sunspider/string-tagcloud.html",
-    "js-input/sunspider/string-unpack-code.html",
-    "js-input/sunspider/string-validate-input.html",
-]
-
-
-class AndroidProfileRun(TestingMixin, BaseScript, MozbaseMixin,
-                        AndroidMixin):
-    """
-    Mozharness script to generate an android PGO profile using the emulator
-    """
-    config_options = copy.deepcopy(testing_config_options)
-
-    def __init__(self, require_config_file=False):
-        super(AndroidProfileRun, self).__init__(
-            config_options=self.config_options,
-            all_actions=['setup-avds',
-                         'start-emulator',
-                         'download',
-                         'create-virtualenv',
-                         'verify-device',
-                         'install',
-                         'run-tests',
-                         ],
-            require_config_file=require_config_file,
-            config={
-                'virtualenv_modules': [],
-                'virtualenv_requirements': [],
-                'require_test_zip': True,
-                'mozbase_requirements': 'mozbase_source_requirements.txt',
-            }
-        )
-
-        # these are necessary since self.config is read only
-        c = self.config
-        self.installer_path = c.get('installer_path')
-        self.device_serial = 'emulator-5554'
-
-    def query_abs_dirs(self):
-        if self.abs_dirs:
-            return self.abs_dirs
-        abs_dirs = super(AndroidProfileRun, self).query_abs_dirs()
-        dirs = {}
-
-        dirs['abs_test_install_dir'] = os.path.join(
-            abs_dirs['abs_work_dir'], 'src', 'testing')
-        dirs['abs_xre_dir'] = os.path.join(
-            abs_dirs['abs_work_dir'], 'hostutils')
-        dirs['abs_blob_upload_dir'] = '/builds/worker/artifacts/blobber_upload_dir'
-        dirs['abs_avds_dir'] = self.config.get("avds_dir", "/home/cltbld/.android")
-
-        for key in dirs.keys():
-            if key not in abs_dirs:
-                abs_dirs[key] = dirs[key]
-        self.abs_dirs = abs_dirs
-        return self.abs_dirs
-
-    ##########################################
-    # Actions for AndroidProfileRun        #
-    ##########################################
-
-    def preflight_install(self):
-        # in the base class, this checks for mozinstall, but we don't use it
-        pass
-
-    @PreScriptAction('create-virtualenv')
-    def pre_create_virtualenv(self, action):
-        dirs = self.query_abs_dirs()
-        self.register_virtualenv_module(
-            'marionette',
-            os.path.join(dirs['abs_work_dir'], 'src', 'testing', 'marionette', 'client')
-        )
-
-    def download(self):
-        """
-        Download host utilities
-        """
-        dirs = self.query_abs_dirs()
-        self.xre_path = self.download_hostutils(dirs['abs_xre_dir'])
-
-    def install(self):
-        """
-        Install APKs on the device.
-        """
-        assert self.installer_path is not None, \
-            "Either add installer_path to the config or use --installer-path."
-        self.install_apk(self.installer_path)
-        self.info("Finished installing apps for %s" % self.device_serial)
-
-    def run_tests(self):
-        """
-        Generate the PGO profile data
-        """
-        from mozhttpd import MozHttpd
-        from mozprofile import Preferences
-        from mozdevice import ADBDevice, ADBProcessError, ADBTimeoutError
-        from six import string_types
-        from marionette_driver.marionette import Marionette
-
-        app = self.query_package_name()
-
-        IP = '10.0.2.2'
-        PORT = 8888
-
-        PATH_MAPPINGS = {
-            '/js-input/webkit/PerformanceTests': 'third_party/webkit/PerformanceTests',
-        }
-
-        dirs = self.query_abs_dirs()
-        topsrcdir = os.path.join(dirs['abs_work_dir'], 'src')
-        adb = self.query_exe('adb')
-
-        path_mappings = {
-            k: os.path.join(topsrcdir, v)
-            for k, v in PATH_MAPPINGS.items()
-        }
-        httpd = MozHttpd(
-            port=PORT,
-            docroot=os.path.join(topsrcdir, "build", "pgo"),
-            path_mappings=path_mappings)
-        httpd.start(block=False)
-
-        profile_data_dir = os.path.join(topsrcdir, 'testing', 'profiles')
-        with open(os.path.join(profile_data_dir, 'profiles.json'), 'r') as fh:
-            base_profiles = json.load(fh)['profileserver']
-
-        prefpaths = [
-            os.path.join(profile_data_dir, profile, 'user.js')
-            for profile in base_profiles
-        ]
-
-        prefs = {}
-        for path in prefpaths:
-            prefs.update(Preferences.read_prefs(path))
-
-        interpolation = {"server": "%s:%d" % httpd.httpd.server_address,
-                         "OOP": "false"}
-        for k, v in prefs.items():
-            if isinstance(v, string_types):
-                v = v.format(**interpolation)
-            prefs[k] = Preferences.cast(v)
-
-        outputdir = self.config.get('output_directory', '/sdcard')
-        jarlog = posixpath.join(outputdir, 'en-US.log')
-        profdata = posixpath.join(outputdir, 'default.profraw')
-
-        env = {}
-        env["XPCOM_DEBUG_BREAK"] = "warn"
-        env["MOZ_IN_AUTOMATION"] = "1"
-        env["MOZ_JAR_LOG_FILE"] = jarlog
-        env["LLVM_PROFILE_FILE"] = profdata
-
-        adbdevice = ADBDevice(adb=adb,
-                              device='emulator-5554')
-
-        try:
-            # Run Fennec a first time to initialize its profile
-            driver = Marionette(
-                app='fennec',
-                package_name=app,
-                adb_path=adb,
-                bin="target.apk",
-                prefs=prefs,
-                connect_to_running_emulator=True,
-                startup_timeout=1000,
-                env=env,
-            )
-            driver.start_session()
-
-            # Now generate the profile and wait for it to complete
-            for page in PAGES:
-                driver.navigate("http://%s:%d/%s" % (IP, PORT, page))
-                timeout = 2
-                if 'Speedometer/index.html' in page:
-                    # The Speedometer test actually runs many tests internally in
-                    # javascript, so it needs extra time to run through them. The
-                    # emulator doesn't get very far through the whole suite, but
-                    # this extra time at least lets some of them process.
-                    timeout = 360
-                time.sleep(timeout)
-
-            driver.set_context("chrome")
-            driver.execute_script("""
-                Components.utils.import("resource://gre/modules/Services.jsm");
-                let cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"]
-                    .createInstance(Components.interfaces.nsISupportsPRBool);
-                Services.obs.notifyObservers(cancelQuit, "quit-application-requested", null);
-                return cancelQuit.data;
-            """)
-            driver.execute_script("""
-                Components.utils.import("resource://gre/modules/Services.jsm");
-                Services.startup.quit(Ci.nsIAppStartup.eAttemptQuit)
-            """)
-
-            # There is a delay between execute_script() returning and the profile data
-            # actually getting written out, so poll the device until we get a profile.
-            for i in range(50):
-                try:
-                    localprof = '/builds/worker/workspace/default.profraw'
-                    adbdevice.pull(profdata, localprof)
-                    stats = os.stat(localprof)
-                    if stats.st_size == 0:
-                        # The file may not have been fully written yet, so retry until we
-                        # get actual data.
-                        time.sleep(2)
-                    else:
-                        break
-                except ADBProcessError:
-                    # The file may not exist at all yet, which would raise an
-                    # ADBProcessError, so retry.
-                    time.sleep(2)
-            else:
-                raise Exception("Unable to pull default.profraw")
-            adbdevice.pull(jarlog, '/builds/worker/workspace/en-US.log')
-        except ADBTimeoutError:
-            self.fatal('INFRA-ERROR: Failed with an ADBTimeoutError',
-                       EXIT_STATUS_DICT[TBPL_RETRY])
-
-        # tarfile doesn't support xz in this version of Python
-        tar_cmd = [
-            'tar',
-            '-acvf',
-            '/builds/worker/artifacts/profdata.tar.xz',
-            '-C', '/builds/worker/workspace',
-            'default.profraw',
-            'en-US.log',
-        ]
-        subprocess.check_call(tar_cmd)
-
-        httpd.stop()
-
-
-if __name__ == '__main__':
-    test = AndroidProfileRun()
-    test.run_and_exit()
--- a/toolkit/xre/Bootstrap.cpp
+++ b/toolkit/xre/Bootstrap.cpp
@@ -3,22 +3,16 @@
  * 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/. */
 
 #include "mozilla/Bootstrap.h"
 #include "nsXPCOM.h"
 
 #include "AutoSQLiteLifetime.h"
 
-#ifdef MOZ_WIDGET_ANDROID
-#  ifdef MOZ_PROFILE_GENERATE
-extern "C" int __llvm_profile_dump(void);
-#  endif
-#endif
-
 namespace mozilla {
 
 class BootstrapImpl final : public Bootstrap {
  protected:
   AutoSQLiteLifetime mSQLLT;
 
   virtual void Dispose() override { delete this; }
 
@@ -76,24 +70,16 @@ class BootstrapImpl final : public Boots
                           const StaticXREAppData& aAppData) override {
     ::GeckoStart(aEnv, argv, argc, aAppData);
   }
 
   virtual void XRE_SetAndroidChildFds(
       JNIEnv* aEnv, const XRE_AndroidChildFds& aFds) override {
     ::XRE_SetAndroidChildFds(aEnv, aFds);
   }
-
-#  ifdef MOZ_PROFILE_GENERATE
-  virtual void XRE_WriteLLVMProfData() override {
-    __android_log_print(ANDROID_LOG_INFO, "GeckoLibLoad",
-                        "Calling __llvm_profile_dump()");
-    __llvm_profile_dump();
-  }
-#  endif
 #endif
 
 #ifdef LIBFUZZER
   virtual void XRE_LibFuzzerSetDriver(LibFuzzerDriver aDriver) override {
     ::XRE_LibFuzzerSetDriver(aDriver);
   }
 #endif
 
--- a/toolkit/xre/Bootstrap.h
+++ b/toolkit/xre/Bootstrap.h
@@ -109,19 +109,16 @@ class Bootstrap {
   virtual void XRE_EnableSameExecutableForContentProc() = 0;
 
 #ifdef MOZ_WIDGET_ANDROID
   virtual void GeckoStart(JNIEnv* aEnv, char** argv, int argc,
                           const StaticXREAppData& aAppData) = 0;
 
   virtual void XRE_SetAndroidChildFds(JNIEnv* aEnv,
                                       const XRE_AndroidChildFds& fds) = 0;
-#  ifdef MOZ_PROFILE_GENERATE
-  virtual void XRE_WriteLLVMProfData() = 0;
-#  endif
 #endif
 
 #ifdef LIBFUZZER
   virtual void XRE_LibFuzzerSetDriver(LibFuzzerDriver aDriver) = 0;
 #endif
 
 #ifdef MOZ_IPDL_TESTS
   virtual int XRE_RunIPDLTest(int argc, char** argv) = 0;
--- a/toolkit/xre/moz.build
+++ b/toolkit/xre/moz.build
@@ -252,11 +252,8 @@ FINAL_TARGET_PP_FILES += [
     'platform.ini'
 ]
 
 if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
     CXXFLAGS += ['-Wno-error=shadow']
 
 if CONFIG['MOZ_IPDL_TESTS']:
     DEFINES['MOZ_IPDL_TESTS'] = True
-
-if CONFIG['MOZ_PROFILE_GENERATE']:
-    DEFINES['MOZ_PROFILE_GENERATE'] = True