Bug 1359328 - Add a fuzzing build to taskcluster
MozReview-Commit-ID: BYbycnB5wdV
new file mode 100644
--- /dev/null
+++ b/browser/config/mozconfigs/linux64/nightly-fuzzing-asan
@@ -0,0 +1,21 @@
+# We still need to build with debug symbols
+ac_add_options --disable-debug
+ac_add_options --enable-optimize="-O2 -gline-tables-only"
+
+# ASan specific options on Linux
+ac_add_options --enable-valgrind
+
+. $topsrcdir/build/unix/mozconfig.asan
+
+ac_add_options --enable-fuzzing
+
+export PKG_CONFIG_LIBDIR=/usr/lib64/pkgconfig:/usr/share/pkgconfig
+. $topsrcdir/build/unix/mozconfig.gtk
+
+# Package js shell.
+export MOZ_PACKAGE_JSSHELL=1
+
+# Need this to prevent name conflicts with the normal nightly build packages
+export MOZ_PKG_SPECIAL=asan
+
+. "$topsrcdir/build/mozconfig.common.override"
--- a/taskcluster/ci/build/linux.yml
+++ b/taskcluster/ci/build/linux.yml
@@ -249,16 +249,41 @@ linux64-asan/opt:
- builds/releng_base_linux_64_builds.py
- balrog/production.py
script: "mozharness/scripts/fx_desktop_build.py"
secrets: true
custom-build-variant-cfg: asan-tc
tooltool-downloads: public
need-xvfb: true
+
+linux64-asan-fuzzing/opt:
+ description: "Linux64 Fuzzing Opt ASAN"
+ index:
+ product: firefox
+ job-name: linux64-fuzzing-asan-opt
+ treeherder:
+ platform: linux64/asan
+ symbol: tc(Bo)
+ worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+ worker:
+ implementation: docker-worker
+ max-run-time: 36000
+ run:
+ using: mozharness
+ actions: [get-secrets build generate-build-stats check-test update]
+ config:
+ - builds/releng_base_linux_64_builds.py
+ - balrog/production.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: fuzzing-asan-tc
+ tooltool-downloads: public
+ need-xvfb: true
+
linux64-asan/debug:
description: "Linux64 Debug ASAN"
index:
product: firefox
job-name: linux64-asan-debug
treeherder:
platform: linux64/asan
symbol: tc(Bd)
new file mode 100644
--- /dev/null
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_fuzzing_asan_tc.py
@@ -0,0 +1,48 @@
+import os
+
+MOZ_OBJDIR = 'obj-firefox'
+
+config = {
+ 'default_actions': [
+ 'clobber',
+ 'clone-tools',
+ 'checkout-sources',
+ 'setup-mock',
+ 'build',
+ # 'generate-build-stats',
+ 'upload-files',
+ 'sendchange',
+ 'check-test',
+ # 'update',
+ ],
+ 'stage_platform': 'linux64-fuzzing-asan',
+ 'publish_nightly_en_US_routes': False,
+ 'build_type': 'asan',
+ 'tooltool_manifest_src': "browser/config/tooltool-manifests/linux64/\
+asan.manifest",
+ 'platform_supports_post_upload_to_latest': False,
+ 'enable_signing': False,
+ 'enable_talos_sendchange': False,
+ #### 64 bit build specific #####
+ 'env': {
+ 'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
+ 'MOZ_AUTOMATION': '1',
+ 'DISPLAY': ':2',
+ 'HG_SHARE_BASE_DIR': '/builds/hg-shared',
+ 'MOZ_OBJDIR': 'obj-firefox',
+ 'TINDERBOX_OUTPUT': '1',
+ 'TOOLTOOL_CACHE': '/builds/tooltool_cache',
+ 'TOOLTOOL_HOME': '/builds',
+ 'MOZ_CRASHREPORTER_NO_REPORT': '1',
+ 'CCACHE_DIR': '/builds/ccache',
+ 'CCACHE_COMPRESS': '1',
+ 'CCACHE_UMASK': '002',
+ 'LC_ALL': 'C',
+ ## 64 bit specific
+ 'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib64/ccache:/bin:\
+/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:/tools/python27/bin:\
+/tools/python27-mercurial/bin:/home/cltbld/bin',
+ },
+ 'src_mozconfig': 'browser/config/mozconfigs/linux64/nightly-fuzzing-asan',
+ #######################
+}
--- a/testing/mozharness/mozharness/mozilla/building/buildbase.py
+++ b/testing/mozharness/mozharness/mozilla/building/buildbase.py
@@ -341,16 +341,17 @@ class BuildOptionParser(object):
# and the script will pull up the appropriate path for the config
# against the current platform and bits.
# *It will warn and fail if there is not a config for the current
# platform/bits
build_variants = {
'add-on-devel': 'builds/releng_sub_%s_configs/%s_add-on-devel.py',
'asan': 'builds/releng_sub_%s_configs/%s_asan.py',
'asan-tc': 'builds/releng_sub_%s_configs/%s_asan_tc.py',
+ 'fuzzing-asan-tc': 'builds/releng_sub_%s_configs/%s_fuzzing_asan_tc.py',
'tsan': 'builds/releng_sub_%s_configs/%s_tsan.py',
'cross-debug': 'builds/releng_sub_%s_configs/%s_cross_debug.py',
'cross-debug-st-an': 'builds/releng_sub_%s_configs/%s_cross_debug_st_an.py',
'cross-debug-artifact': 'builds/releng_sub_%s_configs/%s_cross_debug_artifact.py',
'cross-opt-st-an': 'builds/releng_sub_%s_configs/%s_cross_opt_st_an.py',
'cross-artifact': 'builds/releng_sub_%s_configs/%s_cross_artifact.py',
'cross-qr-debug': 'builds/releng_sub_%s_configs/%s_cross_qr_debug.py',
'cross-qr-opt': 'builds/releng_sub_%s_configs/%s_cross_qr_opt.py',