--- a/configs/builds/branch_specifics.py
+++ b/configs/builds/branch_specifics.py
@@ -26,18 +26,18 @@
# },
# }
# },
# }
config = {
### release branches
"mozilla-central": {
+ "repo_path": 'mozilla-central',
"update_channel": "nightly",
- "repo_path": 'mozilla-central',
"graph_server_branch_name": "Firefox",
'use_branch_in_symbols_extra_buildid': False,
},
'mozilla-release': {
'repo_path': 'releases/mozilla-release',
# TODO I think we can remove update_channel since we don't run
# nightlies for mozilla-release
'update_channel': 'release',
@@ -67,40 +67,32 @@ config = {
'mozilla-b2g28_v1_3t': {
'repo_path': 'releases/mozilla-b2g28_v1_3t',
'use_branch_in_symbols_extra_buildid': False,
},
'mozilla-b2g30_v1_4': {
'repo_path': 'releases/mozilla-b2g30_v1_4',
'use_branch_in_symbols_extra_buildid': False,
'update_channel': 'nightly-b2g30',
- 'branch_supports_partials': False,
'graph_server_branch_name': 'Mozilla-B2g30-v1.4',
},
'mozilla-b2g32_v2_0': {
'repo_path': 'releases/mozilla-b2g32_v2_0',
'use_branch_in_symbols_extra_buildid': False,
'update_channel': 'nightly-b2g32',
- 'branch_supports_partials': False,
'graph_server_branch_name': 'Mozilla-B2g32-v2.0',
},
'try': {
'repo_path': 'try',
'clone_by_revision': True,
'clone_with_purge': True,
'tinderbox_build_dir': '%(who)s-%(got_revision)s',
'to_tinderbox_dated': False,
'include_post_upload_builddir': True,
'release_to_try_builds': True,
- 'upload_env': {
- # stage_server is dictated from build_pool_specifics.py
- 'UPLOAD_USER': "trybld",
- 'UPLOAD_TO_TEMP': '1',
- 'UPLOAD_SSH_KEY': '~/.ssh/%s' % ("trybld_dsa",),
- },
'use_branch_in_symbols_extra_buildid': False,
'stage_username': 'trybld',
'stage_ssh_key': 'trybld_dsa',
},
### project branches
'b2g-inbound': {
'repo_path': 'integration/b2g-inbound',
--- a/configs/builds/releng_base_linux_32_builds.py
+++ b/configs/builds/releng_base_linux_32_builds.py
@@ -1,10 +1,9 @@
import os
-import sys
STAGE_USERNAME = 'ffxbld'
STAGE_SSH_KEY = 'ffxbld_rsa'
config = {
#########################################################################
######## LINUX GENERIC CONFIG KEYS/VAlUES
# if you are updating this with custom 32 bit keys/values please add them
@@ -12,17 +11,16 @@ config = {
# code block and also make sure this is synced with
# releng_base_linux_64_builds.py
'default_actions': [
'clobber',
'clone-tools',
'setup-mock',
'build',
- 'sendchanges',
'generate-build-stats',
'update', # decided by query_is_nightly()
],
"buildbot_json_path": "buildprops.json",
'exes': {
'hgtool.py': os.path.join(
os.getcwd(), 'build', 'tools', 'buildfarm', 'utils', 'hgtool.py'
),
@@ -39,24 +37,24 @@ config = {
'mock_files': [
('/home/cltbld/.ssh', '/home/mock_mozilla/.ssh'),
('/home/cltbld/.hgrc', '/builds/.hgrc'),
('/home/cltbld/.boto', '/builds/.boto'),
('/builds/gapi.data', '/builds/gapi.data'),
('/tools/tooltool.py', '/builds/tooltool.py'),
],
'enable_ccache': True,
+ 'enable_check_test': True,
'vcs_share_base': '/builds/hg-shared',
'objdir': 'obj-firefox',
'tooltool_script': ["/builds/tooltool.py"],
'tooltool_bootstrap': "setup.sh",
'enable_count_ctors': True,
'enable_talos_sendchange': True,
'enable_unittest_sendchange': True,
- 'platform_supports_partials': True,
#########################################################################
#########################################################################
###### 32 bit specific ######
'base_name': 'Linux_%(branch)s',
'platform': 'linux',
'stage_platform': 'linux',
@@ -83,21 +81,21 @@ config = {
'LC_ALL': 'C',
# 32 bit specific
'PATH': '/tools/buildbot/bin:/usr/local/bin:/usr/lib/ccache:\
/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/tools/git/bin:\
/tools/python27/bin:/tools/python27-mercurial/bin:/home/cltbld/bin',
'LD_LIBRARY_PATH': "/tools/gcc-4.3.3/installed/lib",
},
'upload_env': {
- # UPLOAD_HOST is set to stage_server
# stage_server is dictated from build_pool_specifics.py
- 'UPLOAD_USER': STAGE_USERNAME,
+ 'UPLOAD_HOST': '%(stage_server)s',
+ 'UPLOAD_USER': '%(stage_username)s',
+ 'UPLOAD_SSH_KEY': '/home/mock_mozilla/.ssh/%(stage_ssh_key)s',
'UPLOAD_TO_TEMP': '1',
- 'UPLOAD_SSH_KEY': '~/.ssh/%s' % (STAGE_SSH_KEY,),
},
"check_test_env": {
'MINIDUMP_STACKWALK': '%(abs_tools_dir)s/breakpad/linux/minidump_stackwalk',
'MINIDUMP_SAVE_PATH': '%(base_work_dir)s/minidumps',
},
'purge_minsize': 12,
'mock_packages': [
'autoconf213', 'python', 'mozilla-python27', 'zip', 'mozilla-python27-mercurial',
@@ -144,11 +142,10 @@ config = {
'freetype-2.3.11-6.el6_1.8.i686',
'freetype-devel-2.3.11-6.el6_1.8.i686',
'freetype-2.3.11-6.el6_1.8.x86_64',
######## 32 bit specific ###########
],
'src_mozconfig': 'browser/config/mozconfigs/linux32/nightly',
'tooltool_manifest_src': "browser/config/tooltool-manifests/linux32/\
releng.manifest",
- 'platform_ftp_name': 'linux-i686.complete.mar',
#########################################################################
}
--- a/configs/builds/releng_base_linux_64_builds.py
+++ b/configs/builds/releng_base_linux_64_builds.py
@@ -1,10 +1,9 @@
import os
-import sys
STAGE_USERNAME = 'ffxbld'
STAGE_SSH_KEY = 'ffxbld_rsa'
config = {
#########################################################################
######## LINUX GENERIC CONFIG KEYS/VAlUES
# if you are updating this with custom 64 bit keys/values please add them
@@ -12,17 +11,16 @@ config = {
# code block and also make sure this is synced with
# releng_base_linux_64_builds.py
'default_actions': [
'clobber',
'clone-tools',
'setup-mock',
'build',
- 'sendchanges',
'generate-build-stats',
'update', # decided by query_is_nightly()
],
"buildbot_json_path": "buildprops.json",
'exes': {
'hgtool.py': os.path.join(
os.getcwd(), 'build', 'tools', 'buildfarm', 'utils', 'hgtool.py'
),
@@ -39,24 +37,24 @@ config = {
'mock_files': [
('/home/cltbld/.ssh', '/home/mock_mozilla/.ssh'),
('/home/cltbld/.hgrc', '/builds/.hgrc'),
('/home/cltbld/.boto', '/builds/.boto'),
('/builds/gapi.data', '/builds/gapi.data'),
('/tools/tooltool.py', '/builds/tooltool.py'),
],
'enable_ccache': True,
+ 'enable_check_test': True,
'vcs_share_base': '/builds/hg-shared',
'objdir': 'obj-firefox',
'tooltool_script': ["/builds/tooltool.py"],
'tooltool_bootstrap': "setup.sh",
'enable_count_ctors': True,
'enable_talos_sendchange': True,
'enable_unittest_sendchange': True,
- 'platform_supports_partials': True,
#########################################################################
#########################################################################
###### 64 bit specific ######
'base_name': 'Linux_x86-64_%(branch)s',
'platform': 'linux64',
'stage_platform': 'linux64',
@@ -85,21 +83,21 @@ config = {
## 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',
'LD_LIBRARY_PATH': "/tools/gcc-4.3.3/installed/lib64",
##
},
'upload_env': {
- # UPLOAD_HOST is set to stage_server
# stage_server is dictated from build_pool_specifics.py
- 'UPLOAD_USER': STAGE_USERNAME,
+ 'UPLOAD_HOST': '%(stage_server)s',
+ 'UPLOAD_USER': '%(stage_username)s',
+ 'UPLOAD_SSH_KEY': '/home/mock_mozilla/.ssh/%(stage_ssh_key)s',
'UPLOAD_TO_TEMP': '1',
- 'UPLOAD_SSH_KEY': '~/.ssh/%s' % (STAGE_SSH_KEY,),
},
"check_test_env": {
'MINIDUMP_STACKWALK': '%(abs_tools_dir)s/breakpad/linux64/minidump_stackwalk',
'MINIDUMP_SAVE_PATH': '%(base_work_dir)s/minidumps',
},
'purge_minsize': 14,
'mock_packages': [
'autoconf213', 'python', 'mozilla-python27', 'zip', 'mozilla-python27-mercurial',
@@ -125,11 +123,10 @@ config = {
###
'pulseaudio-libs-devel', 'gstreamer-devel',
'gstreamer-plugins-base-devel', 'freetype-2.3.11-6.el6_1.8.x86_64',
'freetype-devel-2.3.11-6.el6_1.8.x86_64'
],
'src_mozconfig': 'browser/config/mozconfigs/linux64/nightly',
'tooltool_manifest_src': "browser/config/tooltool-manifests/linux64/\
releng.manifest",
- 'platform_ftp_name': 'linux-x86_64.complete.mar',
#########################################################################
}
--- a/configs/builds/releng_base_mac_64_builds.py
+++ b/configs/builds/releng_base_mac_64_builds.py
@@ -8,17 +8,16 @@ config = {
#########################################################################
######## MACOSX GENERIC CONFIG KEYS/VAlUES
'default_actions': [
'clobber',
'clone-tools',
# 'setup-mock',
'build',
- 'sendchanges',
'generate-build-stats',
'update', # decided by query_is_nightly()
],
"buildbot_json_path": "buildprops.json",
'exes': {
'python2.7': sys.executable,
'hgtool.py': os.path.join(
os.getcwd(), 'build', 'tools', 'buildfarm', 'utils', 'hgtool.py'
@@ -26,24 +25,24 @@ config = {
"buildbot": "/tools/buildbot/bin/buildbot",
},
'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
# decides whether we want to use moz_sign_cmd in env
'enable_signing': True,
'purge_skip': ['info', 'rel-*:45d', 'tb-rel-*:45d'],
'purge_basedirs': [],
'enable_ccache': True,
+ 'enable_check_test': True,
'vcs_share_base': '/builds/hg-shared',
'objdir': 'obj-firefox/i386',
'tooltool_script': ["/builds/tooltool.py"],
'tooltool_bootstrap': "setup.sh",
'enable_count_ctors': False,
'enable_talos_sendchange': True,
'enable_unittest_sendchange': True,
- 'platform_supports_partials': True,
#########################################################################
#########################################################################
###### 64 bit specific ######
'base_name': 'OS X 10.7 %(branch)s',
'platform': 'macosx64',
'stage_platform': 'macosx64',
@@ -71,24 +70,23 @@ config = {
'CCACHE_UMASK': '002',
'LC_ALL': 'C',
## 64 bit specific
'PATH': '/tools/python/bin:/tools/buildbot/bin:/opt/local/bin:/usr/bin:'
'/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin',
##
},
'upload_env': {
- # UPLOAD_HOST is set to stage_server
# stage_server is dictated from build_pool_specifics.py
- 'UPLOAD_USER': STAGE_USERNAME,
+ 'UPLOAD_HOST': '%(stage_server)s',
+ 'UPLOAD_USER': '%(stage_username)s',
+ 'UPLOAD_SSH_KEY': '/Users/cltbld/.ssh/%(stage_ssh_key)s',
'UPLOAD_TO_TEMP': '1',
- 'UPLOAD_SSH_KEY': '~/.ssh/%s' % (STAGE_SSH_KEY,),
},
"check_test_env": {
'MINIDUMP_STACKWALK': '%(abs_tools_dir)s/breakpad/osx64/minidump_stackwalk',
'MINIDUMP_SAVE_PATH': '%(base_work_dir)s/minidumps',
},
'purge_minsize': 12,
'src_mozconfig': 'browser/config/mozconfigs/macosx-universal/nightly',
'tooltool_manifest_src': 'browser/config/tooltool-manifests/macosx64/releng.manifest',
- 'platform_ftp_name': 'mac.complete.mar',
#########################################################################
}
--- a/configs/builds/releng_base_windows_32_builds.py
+++ b/configs/builds/releng_base_windows_32_builds.py
@@ -12,17 +12,16 @@ config = {
# code block and also make sure this is synced with
# releng_base_windows_64_builds.py
'default_actions': [
'clobber',
'clone-tools',
# 'setup-mock', windows do not use mock
'build',
- 'sendchanges',
'generate-build-stats',
'update', # decided by query_is_nightly()
],
"buildbot_json_path": "buildprops.json",
'exes': {
'python2.7': sys.executable,
'hgtool.py': [
sys.executable,
@@ -42,25 +41,25 @@ config = {
]
},
'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
# decides whether we want to use moz_sign_cmd in env
'enable_signing': True,
'purge_skip': ['info', 'rel-*:45d', 'tb-rel-*:45d'],
'purge_basedirs': [],
'enable_ccache': False,
+ 'enable_check_test': True,
'vcs_share_base': 'C:/builds/hg-shared',
'objdir': 'obj-firefox',
'tooltool_script': [sys.executable,
'C:/mozilla-build/tooltool.py'],
'tooltool_bootstrap': "setup.sh",
'enable_count_ctors': False,
'enable_talos_sendchange': True,
'enable_unittest_sendchange': True,
- 'platform_supports_partials': True,
#########################################################################
#########################################################################
###### 32 bit specific ######
'base_name': 'WINNT_5.2_%(branch)s',
'platform': 'win32',
'stage_platform': 'win32',
@@ -81,24 +80,24 @@ config = {
'SYMBOL_SERVER_HOST': '%(symbol_server_host)s',
'SYMBOL_SERVER_SSH_KEY': '/c/Users/cltbld/.ssh/ffxbld_rsa',
'SYMBOL_SERVER_USER': 'ffxbld',
'SYMBOL_SERVER_PATH': '/mnt/netapp/breakpad/symbols_ffx/',
'POST_SYMBOL_UPLOAD_CMD': '/usr/local/bin/post-symbol-upload.py',
'TINDERBOX_OUTPUT': '1',
},
'upload_env': {
- # UPLOAD_HOST is set to stage_server
# stage_server is dictated from build_pool_specifics.py
- 'UPLOAD_USER': STAGE_USERNAME,
+ 'UPLOAD_HOST': '%(stage_server)s',
+ 'UPLOAD_USER': '%(stage_username)s',
+ 'UPLOAD_SSH_KEY': '/c/Users/cltbld/.ssh/%(stage_ssh_key)s',
'UPLOAD_TO_TEMP': '1',
- 'UPLOAD_SSH_KEY': '~/.ssh/%s' % (STAGE_SSH_KEY,),
},
"check_test_env": {
'MINIDUMP_STACKWALK': '%(abs_tools_dir)s/breakpad/win32/minidump_stackwalk.exe',
'MINIDUMP_SAVE_PATH': '%(base_work_dir)s/minidumps',
},
+ 'enable_pymake': True,
'purge_minsize': 12,
'src_mozconfig': 'browser/config/mozconfigs/win32/nightly',
'tooltool_manifest_src': "browser/config/tooltool-manifests/win32/releng.manifest",
- 'platform_ftp_name': 'win32.complete.mar',
#########################################################################
}
--- a/configs/builds/releng_sub_linux_configs/32_debug.py
+++ b/configs/builds/releng_sub_linux_configs/32_debug.py
@@ -3,17 +3,16 @@ import os
MOZ_OBJDIR = 'obj-firefox'
config = {
'default_actions': [
'clobber',
'clone-tools',
'setup-mock',
'build',
- 'sendchanges',
# 'generate-build-stats',
'update', # decided by query_is_nightly()
],
'debug_build': True,
'stage_platform': 'linux-debug',
'purge_minsize': 15,
'enable_signing': False,
'enable_talos_sendchange': False,
--- a/configs/builds/releng_sub_linux_configs/64_asan.py
+++ b/configs/builds/releng_sub_linux_configs/64_asan.py
@@ -3,28 +3,26 @@ import os
MOZ_OBJDIR = 'obj-firefox'
config = {
'default_actions': [
'clobber',
'clone-tools',
'setup-mock',
'build',
- 'sendchanges',
# 'generate-build-stats',
# 'update',
],
'stage_platform': 'linux64-asan',
'purge_minsize': 12,
'tooltool_manifest_src': "browser/config/tooltool-manifests/linux64/\
asan.manifest",
'platform_supports_post_upload_to_latest': False,
'enable_signing': False,
'enable_talos_sendchange': False,
- 'platform_supports_partials': 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',
--- a/configs/builds/releng_sub_linux_configs/64_asan_and_debug.py
+++ b/configs/builds/releng_sub_linux_configs/64_asan_and_debug.py
@@ -3,29 +3,27 @@ import os
MOZ_OBJDIR = 'obj-firefox'
config = {
'default_actions': [
'clobber',
'clone-tools',
'setup-mock',
'build',
- 'sendchanges',
# 'generate-build-stats',
# 'update',
],
'stage_platform': 'linux64-asan-debug',
'debug_build': True,
'purge_minsize': 12,
'tooltool_manifest_src': "browser/config/tooltool-manifests/linux64/\
asan.manifest",
'platform_supports_post_upload_to_latest': False,
'enable_signing': False,
'enable_talos_sendchange': False,
- 'platform_supports_partials': 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',
--- a/configs/builds/releng_sub_linux_configs/64_code_coverage.py
+++ b/configs/builds/releng_sub_linux_configs/64_code_coverage.py
@@ -3,17 +3,16 @@ import os
MOZ_OBJDIR = 'obj-firefox'
config = {
'default_actions': [
'clobber',
'clone-tools',
'setup-mock',
'build',
- 'sendchanges',
# 'generate-build-stats',
'update', # decided by query_is_nightly()
],
'stage_platform': 'linux64-cc',
'platform_supports_post_upload_to_latest': False,
'enable_signing': False,
'enable_talos_sendchange': False,
'enable_count_ctors': False,
--- a/configs/builds/releng_sub_linux_configs/64_debug.py
+++ b/configs/builds/releng_sub_linux_configs/64_debug.py
@@ -3,17 +3,16 @@ import os
MOZ_OBJDIR = 'obj-firefox'
config = {
'default_actions': [
'clobber',
'clone-tools',
'setup-mock',
'build',
- 'sendchanges',
# 'generate-build-stats',
'update', # decided by query_is_nightly()
],
'stage_platform': 'linux64-debug',
'debug_build': True,
'enable_signing': False,
'enable_talos_sendchange': False,
#### 64 bit build specific #####
--- a/configs/builds/releng_sub_linux_configs/64_debug_and_non_unified.py
+++ b/configs/builds/releng_sub_linux_configs/64_debug_and_non_unified.py
@@ -3,25 +3,25 @@ import os
MOZ_OBJDIR = 'obj-firefox'
config = {
'default_actions': [
'clobber',
'clone-tools',
'setup-mock',
'build',
- # 'sendchanges',
# 'generate-build-stats',
'update', # decided by query_is_nightly()
],
'debug_build': True,
'stage_platform': 'linux64-debug-nonunified',
'enable_signing': False,
'enable_talos_sendchange': False,
'enable_unittest_sendchange': False,
+ 'enable_check_test': 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': MOZ_OBJDIR,
'MOZ_CRASHREPORTER_NO_REPORT': '1',
--- a/configs/builds/releng_sub_linux_configs/64_mulet.py
+++ b/configs/builds/releng_sub_linux_configs/64_mulet.py
@@ -3,17 +3,16 @@ import os
MOZ_OBJDIR = 'obj-firefox'
config = {
'default_actions': [
'clobber',
'clone-tools',
'setup-mock',
'build',
- 'sendchanges',
# 'generate-build-stats',
'update', # decided by query_is_nightly()
],
'stage_platform': 'linux64-mulet',
'tooltool_manifest_src': "browser/config/tooltool-manifests/linux64/\
asan.manifest",
'platform_supports_post_upload_to_latest': False,
'enable_signing': False,
--- a/configs/builds/releng_sub_linux_configs/64_non_unified.py
+++ b/configs/builds/releng_sub_linux_configs/64_non_unified.py
@@ -1,17 +1,17 @@
config = {
'default_actions': [
'clobber',
'clone-tools',
'setup-mock',
'build',
- # 'sendchanges',
'generate-build-stats',
'update', # decided by query_is_nightly()
],
'stage_platform': 'linux64-nonunified',
'enable_talos_sendchange': False,
'enable_unittest_sendchange': False,
+ 'enable_check_test': False,
#### 64 bit build specific #####
'src_mozconfig': 'browser/config/mozconfigs/linux64/nightly-nonunified',
#######################
}
--- a/configs/builds/releng_sub_linux_configs/64_stat_and_debug.py
+++ b/configs/builds/releng_sub_linux_configs/64_stat_and_debug.py
@@ -3,27 +3,28 @@ import os
MOZ_OBJDIR = 'obj-firefox'
config = {
'default_actions': [
'clobber',
'clone-tools',
'setup-mock',
'build',
- # 'sendchanges',
# 'generate-build-stats',
'update', # decided by query_is_nightly()
],
'debug_build': True,
'stage_platform': 'linux64-st-an-debug',
'purge_minsize': 12,
'tooltool_manifest_src': "browser/config/tooltool-manifests/linux64/\
clang.manifest",
'platform_supports_post_upload_to_latest': False,
'enable_signing': False,
+ 'enable_talos_sendchange': False,
+ 'enable_unittest_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': MOZ_OBJDIR,
'TINDERBOX_OUTPUT': '1',
--- a/configs/builds/releng_sub_mac_configs/64_debug.py
+++ b/configs/builds/releng_sub_mac_configs/64_debug.py
@@ -3,17 +3,16 @@ import os
MOZ_OBJDIR = 'obj-firefox'
config = {
'default_actions': [
'clobber',
'clone-tools',
# 'setup-mock',
'build',
- 'sendchanges',
# 'generate-build-stats',
'update', # decided by query_is_nightly()
],
'stage_platform': 'macosx64-debug',
'debug_build': True,
'objdir': 'obj-firefox',
'enable_talos_sendchange': False,
#### 64 bit build specific #####
--- a/configs/builds/releng_sub_mac_configs/64_debug_and_non_unified.py
+++ b/configs/builds/releng_sub_mac_configs/64_debug_and_non_unified.py
@@ -3,24 +3,24 @@ import os
MOZ_OBJDIR = 'obj-firefox'
config = {
'default_actions': [
'clobber',
'clone-tools',
# 'setup-mock',
'build',
- # 'sendchanges',
# 'generate-build-stats',
'update', # decided by query_is_nightly()
],
'debug_build': True,
'stage_platform': 'macosx64-debug-nonunified',
'enable_talos_sendchange': False,
'enable_unittest_sendchange': False,
+ 'enable_check_test': False,
'objdir': 'obj-firefox',
#### 64 bit build specific #####
'env': {
'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
'MOZ_AUTOMATION': '1',
'HG_SHARE_BASE_DIR': '/builds/hg-shared',
'MOZ_OBJDIR': 'obj-firefox',
'TINDERBOX_OUTPUT': '1',
--- a/configs/builds/releng_sub_mac_configs/64_non_unified.py
+++ b/configs/builds/releng_sub_mac_configs/64_non_unified.py
@@ -1,17 +1,17 @@
config = {
'default_actions': [
'clobber',
'clone-tools',
# 'setup-mock',
'build',
- # 'sendchanges',
'generate-build-stats',
'update', # decided by query_is_nightly()
],
'stage_platform': 'macosx64-nonunified',
'enable_talos_sendchange': False,
'enable_unittest_sendchange': False,
+ 'enable_check_test': False,
#### 64 bit build specific #####
'src_mozconfig': 'browser/config/mozconfigs/macosx-universal/nightly-nonunified',
#######################
}
--- a/configs/builds/releng_sub_windows_configs/32_debug.py
+++ b/configs/builds/releng_sub_windows_configs/32_debug.py
@@ -3,17 +3,16 @@ import os
MOZ_OBJDIR = 'obj-firefox'
config = {
'default_actions': [
'clobber',
'clone-tools',
# 'setup-mock', windows do not use mock
'build',
- 'sendchanges',
# 'generate-build-stats',
'update', # decided by query_is_nightly()
],
'stage_platform': 'win32-debug',
'debug_build': True,
'enable_talos_sendchange': False,
#### 32 bit build specific #####
'env': {
--- a/configs/builds/releng_sub_windows_configs/32_debug_and_non_unified.py
+++ b/configs/builds/releng_sub_windows_configs/32_debug_and_non_unified.py
@@ -3,24 +3,24 @@ import os
MOZ_OBJDIR = 'obj-firefox'
config = {
'default_actions': [
'clobber',
'clone-tools',
# 'setup-mock', windows do not use mock
'build',
- # 'sendchanges',
# 'generate-build-stats',
'update', # decided by query_is_nightly()
],
'stage_platform': 'win32-debug-nonunified',
'debug_build': True,
'enable_talos_sendchange': False,
'enable_unittest_sendchange': False,
+ 'enable_check_test': False,
#### 32 bit build specific #####
'env': {
'BINSCOPE': 'C:/Program Files (x86)/Microsoft/SDL BinScope/BinScope.exe',
'HG_SHARE_BASE_DIR': 'C:/builds/hg-shared',
'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
'MOZ_AUTOMATION': '1',
'MOZ_CRASHREPORTER_NO_REPORT': '1',
'MOZ_OBJDIR': 'obj-firefox',
--- a/configs/builds/releng_sub_windows_configs/32_non_unified.py
+++ b/configs/builds/releng_sub_windows_configs/32_non_unified.py
@@ -1,17 +1,17 @@
config = {
'default_actions': [
'clobber',
'clone-tools',
# 'setup-mock', windows do not use mock
'build',
- # 'sendchanges',
'generate-build-stats',
'update', # decided by query_is_nightly()
],
'stage_platform': 'win32-nonunified',
'enable_talos_sendchange': False,
'enable_unittest_sendchange': False,
+ 'enable_check_test': False,
#### 64 bit build specific #####
'src_mozconfig': 'browser/config/mozconfigs/win32/nightly-nonunified',
#######################
}
--- a/mozharness/mozilla/building/buildbase.py
+++ b/mozharness/mozilla/building/buildbase.py
@@ -26,21 +26,23 @@ import sys
from datetime import datetime
import re
from mozharness.base.config import BaseConfig, parse_config_file
from mozharness.base.log import ERROR, OutputParser, FATAL, WARNING
from mozharness.base.script import PostScriptRun
from mozharness.base.vcs.vcsbase import MercurialScript
from mozharness.mozilla.buildbot import BuildbotMixin, TBPL_STATUS_DICT, \
TBPL_EXCEPTION, TBPL_RETRY, EXIT_STATUS_DICT, TBPL_WARNING, TBPL_SUCCESS, \
- TBPL_WORST_LEVEL_TUPLE
+ TBPL_WORST_LEVEL_TUPLE, TBPL_FAILURE
from mozharness.mozilla.purge import PurgeMixin
from mozharness.mozilla.mock import MockMixin
from mozharness.mozilla.signing import SigningMixin
from mozharness.mozilla.mock import ERROR_MSGS as MOCK_ERROR_MSGS
+from mozharness.mozilla.testing.errors import TinderBoxPrintRe
+from mozharness.mozilla.testing.unittest import tbox_print_summary
from mozharness.mozilla.updates.balrog import BalrogMixin
AUTOMATION_EXIT_CODES = EXIT_STATUS_DICT.values()
AUTOMATION_EXIT_CODES.sort()
MISSING_CFG_KEY_MSG = "The key '%s' could not be determined \
Please add this to your config."
@@ -122,16 +124,55 @@ class MakeUploadOutputParser(OutputParse
self.tbpl_status = self.worst_level(
error_check['level'], self.tbpl_status,
levels=TBPL_WORST_LEVEL_TUPLE
)
break
else:
self.info(line)
+class CheckTestCompleteParser(OutputParser):
+ tbpl_error_list = TBPL_UPLOAD_ERRORS
+
+ def __init__(self, **kwargs):
+ self.matches = {}
+ super(CheckTestCompleteParser, self).__init__(**kwargs)
+ self.pass_count = 0
+ self.fail_count = 0
+ self.leaked = False
+ self.harness_err_re = TinderBoxPrintRe['harness_error']['full_regex']
+
+ def parse_single_line(self, line):
+ # Counts and flags.
+ # Regular expression for crash and leak detections.
+ if "TEST-PASS" in line:
+ self.pass_count += 1
+ return self.info(line)
+ if "TEST-UNEXPECTED-" in line:
+ # Set the error flags.
+ # Or set the failure count.
+ m = self.harness_err_re.match(line)
+ if m:
+ r = m.group(1)
+ if r == "missing output line for total leaks!":
+ self.leaked = None
+ else:
+ self.leaked = True
+ else:
+ self.fail_count += 1
+ return self.warning(line)
+ self.info(line) # else
+
+ def evaluate_parser(self):
+ # Return the summary.
+ summary = tbox_print_summary(self.pass_count,
+ self.fail_count,
+ self.leaked)
+ self.info("TinderboxPrint: check<br/>%s\n" % summary)
+
class BuildingConfig(BaseConfig):
# TODO add nosetests for this class
def get_cfgs_from_files(self, all_config_files, parser):
""" create a config based upon config files passed
This is class specific. It recognizes certain config files
by knowing how to combine them in an organized hierarchy
@@ -701,45 +742,73 @@ or run without that action (ie: --no-{ac
if self.query_is_nightly():
env["IS_NIGHTLY"] = "yes"
# in branch_specifics.py we might set update_channel explicitly
if c.get('update_channel'):
env["MOZ_UPDATE_CHANNEL"] = c['update_channel']
else: # let's just give the generic channel based on branch
env["MOZ_UPDATE_CHANNEL"] = "nightly-%s" % (self.branch,)
- if self.config.get('pgo_build'):
+ if self.config.get('pgo_build') or self._compile_against_pgo():
env['MOZ_PGO'] = '1'
if c.get('enable_signing'):
moz_sign_cmd = subprocess.list2cmdline(
self.query_moz_sign_cmd(formats=None)
)
# windows fix. This is passed to mach build env and we call that
# with python, not with bash so we need to fix the slashes here
env['MOZ_SIGN_CMD'] = moz_sign_cmd.replace('\\', '\\\\\\\\')
# we can't make env an attribute of self because env can change on
# every call for reasons like MOZ_SIGN_CMD
return env
- def query_build_upload_env(self):
+ def query_mach_build_env(self):
c = self.config
- upload_env = {}
+ mach_env = {}
if c.get('upload_env'):
- upload_env.update(c['upload_env'])
- if not upload_env.get("UPLOAD_HOST") and c.get('stage_server'):
- upload_env['UPLOAD_HOST'] = c['stage_server']
+ mach_env.update(c['upload_env'])
+ mach_env['UPLOAD_HOST'] = mach_env['UPLOAD_HOST'] % {
+ 'stage_server': c['stage_server']
+ }
+ mach_env['UPLOAD_USER'] = mach_env['UPLOAD_USER'] % {
+ 'stage_username': c['stage_username']
+ }
+ mach_env['UPLOAD_SSH_KEY'] = mach_env['UPLOAD_SSH_KEY'] % {
+ 'stage_ssh_key': c['stage_ssh_key']
+ }
+
+ if self.query_is_nightly():
+ mach_env['LATEST_MAR_DIR'] = c['latest_mar_dir'] % {
+ 'branch': self.branch
+ }
# _query_post_upload_cmd returns a list (a cmd list), for env sake here
# let's make it a string
pst_up_cmd = ' '.join([str(i) for i in self._query_post_upload_cmd()])
- upload_env['POST_UPLOAD_CMD'] = pst_up_cmd
+ mach_env['POST_UPLOAD_CMD'] = pst_up_cmd
+
+ return mach_env
+
+ def _compile_against_pgo(self):
+ """determines whether a build should be run with pgo even if it is
+ not a classified as a 'pgo build'.
- return upload_env
+ requirements:
+ 1) must be a platform that can run against pgo
+ 2) either:
+ a) must be a nightly build
+ b) must be on a branch that runs pgo if it can everytime
+ """
+ c = self.config
+ if self.stage_platform in c['pgo_platforms']:
+ if c.get('branch_uses_per_checkin_strategy') or self.query_is_nightly():
+ return True
+ return False
def query_check_test_env(self):
c = self.config
dirs = self.query_abs_dirs()
check_test_env = {}
if c.get('check_test_env'):
for env_var, env_value in c['check_test_env'].iteritems():
check_test_env[env_var] = env_value % dirs
@@ -804,46 +873,46 @@ or run without that action (ie: --no-{ac
tinderbox_build_dir = c['tinderbox_build_dir'] % {
'who': who,
'got_revision': revision
}
else:
# the default
tinderbox_build_dir = "%s-%s" % (self.branch, platform)
- if who:
+ if who and self.branch == 'try':
post_upload_cmd.extend(["--who", who])
if c.get('include_post_upload_builddir'):
post_upload_cmd.extend(
["--builddir", "%s-%s" % (self.branch, platform)]
)
post_upload_cmd.extend(["--tinderbox-builds-dir", tinderbox_build_dir])
post_upload_cmd.extend(["-p", c['stage_product']])
post_upload_cmd.extend(['-i', buildid])
if revision:
post_upload_cmd.extend(['--revision', revision])
if c.get('to_tinderbox_dated'):
post_upload_cmd.append('--release-to-tinderbox-dated-builds')
+ post_upload_cmd.append('--release-to-latest-tinderbox-builds')
if c.get('release_to_try_builds'):
post_upload_cmd.append('--release-to-try-builds')
if self.query_is_nightly():
post_upload_cmd.extend(['-b', self.branch])
post_upload_cmd.append('--release-to-dated')
if c['platform_supports_post_upload_to_latest']:
post_upload_cmd.append('--release-to-latest')
return post_upload_cmd
def _ccache_z(self):
"""clear ccache stats."""
dirs = self.query_abs_dirs()
env = self.query_build_env()
- if os.path.exists(dirs['abs_src_dir']):
- self.run_command(command=['ccache', '-z'],
- cwd=dirs['abs_src_dir'],
- env=env)
+ self.run_command(command=['ccache', '-z'],
+ cwd=dirs['base_work_dir'],
+ env=env)
def _ccache_s(self):
"""print ccache stats. only done for unix like platforms"""
dirs = self.query_abs_dirs()
env = self.query_build_env()
cmd = ['ccache', '-s']
self.run_command(cmd, cwd=dirs['abs_src_dir'], env=env)
@@ -1084,17 +1153,17 @@ or run without that action (ie: --no-{ac
if c.get('graph_server_branch_name'):
return c['graph_server_branch_name']
else:
# capitalize every word in between '-'
branch_list = self.branch.split('-')
branch_list = [elem.capitalize() for elem in branch_list]
return '-'.join(branch_list)
- def _query_props_set_by_mach(self, console_output, error_level):
+ def _query_props_set_by_mach(self, console_output=True, error_level=FATAL):
mach_properties_path = os.path.join(
self.query_abs_dirs()['abs_obj_dir'], 'mach_build_properties.json'
)
self.info("setting properties set by mach build. Looking in path: %s"
% mach_properties_path)
if os.path.exists(mach_properties_path):
with self.opened(mach_properties_path, error_level=error_level) as (fh, err):
build_props = json.load(fh)
@@ -1247,124 +1316,16 @@ or run without that action (ie: --no-{ac
if not previous_buildid:
self.fatal("Could not determine previous_buildid. This property"
"requires the upload action creating a partial mar.")
self.set_buildbot_property("previous_buildid",
previous_buildid,
write_to_file=True)
return previous_buildid
- def _create_partial_mar(self):
- # TODO use mar.py MIXINs and make this simpler
- self._assert_cfg_valid_for_action(
- ['update_env', 'platform_ftp_name', 'stage_server',
- 'stage_username', 'stage_ssh_key', 'latest_mar_dir'],
- 'upload'
- )
- self.info('Creating a partial mar:')
- c = self.config
- dirs = self.query_abs_dirs()
- generic_env = self.query_build_env()
- update_env = dict(chain(generic_env.items(), c['update_env'].items()))
- abs_unwrap_update_path = os.path.join(dirs['abs_src_dir'],
- 'tools',
- 'update-packaging',
- 'unwrap_full_update.pl')
- dist_update_dir = os.path.join(dirs['abs_obj_dir'],
- 'dist',
- 'update')
- self.info('removing old unpacked dirs...')
- for f in ['current', 'current.work', 'previous']:
- self.rmtree(os.path.join(dirs['abs_obj_dir'], f),
- error_level=FATAL)
- self.info('making unpacked dirs...')
- for f in ['current', 'previous']:
- self.mkdir_p(os.path.join(dirs['abs_obj_dir'], f),
- error_level=FATAL)
- self.info('unpacking current mar...')
- mar_file = self.query_buildbot_property('completeMarFilename')
- cmd = '%s %s %s' % (self.query_exe('perl'),
- abs_unwrap_update_path,
- os.path.join(dist_update_dir, mar_file))
- self.run_command_m(command=cmd,
- cwd=os.path.join(dirs['abs_obj_dir'], 'current'),
- env=update_env,
- halt_on_failure=True,
- fatal_exit_code=3)
- # The mar file name will be the same from one day to the next,
- # *except* when we do a version bump for a release. To cope with
- # this, we get the name of the previous complete mar directly
- # from staging. Version bumps can also often involve multiple mars
- # living in the latest dir, so we grab the latest one.
- self.info('getting previous mar filename...')
- latest_mar_dir = c['latest_mar_dir'] % {'branch': self.branch}
- cmd = 'ssh -l %s -i ~/.ssh/%s %s ls -1t %s | grep %s$ | head -n 1' % (
- c['stage_username'], c['stage_ssh_key'], c['stage_server'],
- latest_mar_dir, c['platform_ftp_name']
- )
- previous_mar_name = self.get_output_from_command(cmd)
- if re.search(r'\.mar$', previous_mar_name or ""):
- previous_mar_url = "http://%s%s/%s" % (c['stage_server'],
- latest_mar_dir,
- previous_mar_name)
- self.info('downloading previous mar...')
- previous_mar_file = self.download_file(previous_mar_url,
- file_name='previous.mar',
- parent_dir=dist_update_dir)
- if not previous_mar_file:
- # download_file will send error logs if this does not download
- return
- else:
- self.warning('could not determine the previous complete mar file')
- return
- self.info('unpacking previous mar...')
- cmd = '%s %s %s' % (self.query_exe('perl'),
- abs_unwrap_update_path,
- os.path.join(dist_update_dir, 'previous.mar'))
- self.run_command_m(command=cmd,
- cwd=os.path.join(dirs['abs_obj_dir'], 'previous'),
- env=update_env)
- # Extract the build ID from the unpacked previous complete mar.
- previous_buildid = self._query_previous_buildid()
- self.info('removing pgc files from previous and current dirs')
- for mar_dir in ['current', 'previous']:
- target_path = os.path.join(dirs['abs_obj_dir'], mar_dir)
- if os.path.exists(target_path):
- for root, target_dirs, file_names in os.walk(target_path):
- for file_name in file_names:
- if file_name.endswith('.pgc'):
- self.info('removing file: %s' % (file_name,))
- os.remove(file_name)
- self.info("removing existing partial mar...")
- mar_file_results = glob.glob(
- os.path.join(dist_update_dir, '*.partial.*.mar')
- )
- if not mar_file_results:
- self.warning("Could not determine an existing partial mar from "
- "%s pattern in %s dir" % ('*.partial.*.mar',
- dist_update_dir))
- for mar_file in mar_file_results:
- self.rmtree(mar_file)
-
- self.info('generating partial patch from two complete mars...')
- update_env.update({
- 'STAGE_DIR': '../../dist/update',
- 'SRC_BUILD': '../../previous',
- 'SRC_BUILD_ID': previous_buildid,
- 'DST_BUILD': '../../current',
- 'DST_BUILD_ID': self.query_buildid()
- })
- cmd = '%s -C tools/update-packaging partial-patch' % (
- self.query_exe('make', return_type='string')
- )
- self.run_command_m(command=cmd,
- cwd=dirs['abs_obj_dir'],
- env=update_env)
- self.rmtree(os.path.join(dist_update_dir, 'previous.mar'))
-
def clone_tools(self):
"""clones the tools repo."""
self._assert_cfg_valid_for_action(['tools_repo'], 'clone_tools')
c = self.config
dirs = self.query_abs_dirs()
repo = {
'repo': c['tools_repo'],
'vcs': 'hg',
@@ -1402,74 +1363,102 @@ or run without that action (ie: --no-{ac
)
if os.path.exists(mach_props):
self.info("Removing previous mach property file: %s" % mach_props)
self.rmtree(mach_props)
def build(self):
"""builds application."""
env = self.query_build_env()
- env.update(self.query_build_upload_env())
- env.update(self.query_check_test_env())
+ env.update(self.query_mach_build_env())
symbols_extra_buildid = self._query_moz_symbols_buildid()
if symbols_extra_buildid:
env['MOZ_SYMBOLS_EXTRA_BUILDID'] = symbols_extra_buildid
# XXX Bug 1037883 - mozconfigs can not find buildprops.json when builds
# are through mozharness. This is not pretty but it is a stopgap
# until an alternative solution is made or all builds that touch
# mozconfig.cache are converted to mozharness.
dirs = self.query_abs_dirs()
self.copyfile(os.path.join(dirs['base_work_dir'], 'buildprops.json'),
os.path.join(dirs['abs_work_dir'], 'buildprops.json'))
python = self.query_exe('python2.7')
return_code = self.run_command_m(
- command=[python, 'mach', 'build'],
+ command=[python, 'mach', '--log-no-times', 'build', '-v'],
cwd=self.query_abs_dirs()['abs_src_dir'],
env=env
)
if return_code:
- log_level = WARNING
- if return_code != 1:
- # if not 1 (warning/orange), set the build to 2 (failure/red)
- return_code = 2
- log_level = FATAL
- # set the return code to red, failure
self.return_code = self.worst_level(
- return_code, self.return_code, AUTOMATION_EXIT_CODES[::-1]
+ EXIT_STATUS_DICT[TBPL_FAILURE], self.return_code,
+ AUTOMATION_EXIT_CODES[::-1]
)
- self.log("'mach build' did not run successfully. Please check log "
- "for errors/warnings.", log_level)
+ self.fatal("'mach build' did not run successfully. Please check "
+ "log for errors.")
def postflight_build(self, console_output=True):
"""grabs properties from post build and calls ccache -s"""
+ c = self.config
self.generate_build_props(console_output=console_output,
halt_on_failure=True)
+
+ if c.get('enable_talos_sendchange'):
+ self._do_sendchange('talos')
+
+ if c.get('enable_unittest_sendchange'):
+ self._do_sendchange('unittest')
+
+ if self.config.get('enable_check_test'):
+ self._check_test()
+
if self.config.get('enable_ccache'):
self._ccache_s()
+ def _check_test(self):
+ c = self.config
+ dirs = self.query_abs_dirs()
+
+ env = self.query_build_env()
+ env.update(self.query_check_test_env())
+
+ if c.get('enable_pymake'): # e.g. windows
+ pymake_path = os.path.join(dirs['abs_src_dir'], 'build',
+ 'pymake', 'make.py')
+ cmd = ['python', pymake_path]
+ else:
+ cmd = ['make']
+ cmd.extend(['-k', 'check'])
+
+ parser = CheckTestCompleteParser(config=c,
+ log_obj=self.log_obj)
+ self.run_command_m(command=cmd,
+ cwd=dirs['abs_obj_dir'],
+ env=env,
+ output_parser=parser)
+ parser.evaluate_parser()
+
def generate_build_stats(self):
"""grab build stats following a compile.
This action handles all statitics from a build: 'count_ctors' and
'vsize' and then posts to graph server the results.
We only post to graph server for non nightly build
"""
c = self.config
# grab any props available from this or previous unclobbered runs
self.generate_build_props(console_output=False,
halt_on_failure=False)
# enable_max_vsize will be True for builds like pgo win32 builds
# but not for nightlies (nightlies are pgo builds too so the
# check is needed).
- enable_max_vsize = (c.get('enable_max_vsize') and c.get('pgo_build')
- and not self.query_is_nightly())
+ enable_max_vsize = c.get('enable_max_vsize') and c.get('pgo_build')
+
if enable_max_vsize or c.get('enable_count_ctors'):
if c.get('enable_count_ctors'):
self.info("counting ctors...")
self._count_ctors()
num_ctors = self.buildbot_properties.get('num_ctors', 'unknown')
self.info("TinderboxPrint: num_ctors: %s" % (num_ctors,))
if enable_max_vsize:
self.info("getting vsize...")
@@ -1478,18 +1467,17 @@ or run without that action (ie: --no-{ac
self._graph_server_post()
else:
self.info("We are not posting to graph server as this is a "
"nightly build.")
else:
self.info("Nothing to do for this action since ctors and vsize "
"counts are disabled for this build.")
- def sendchanges(self):
- # TODO rip out this logic and put it in build configs
+ def _do_sendchange(self, test_type):
c = self.config
# grab any props available from this or previous unclobbered runs
self.generate_build_props(console_output=False,
halt_on_failure=False)
installer_url = self.query_buildbot_property('packageUrl')
if not installer_url:
@@ -1497,91 +1485,75 @@ or run without that action (ie: --no-{ac
self.error("could not determine packageUrl property to use "
"against sendchange. Was it set after 'mach build'?")
self.return_code = self.worst_level(
1, self.return_code, AUTOMATION_EXIT_CODES[::-1]
)
self.return_code = 1
return
tests_url = self.query_buildbot_property('testsUrl')
+ pgo_build = c.get('pgo_build', False) or self._compile_against_pgo()
+
+ # these cmds are sent to mach through env vars. We won't know the
+ # packageUrl or testsUrl until mach runs upload target so we let mach
+ # fill in the rest of the cmd
sendchange_props = {
'buildid': self.query_buildid(),
'builduid': self.query_builduid(),
'nightly_build': self.query_is_nightly(),
- 'pgo_build': c.get('pgo_build', False),
+ 'pgo_build': pgo_build,
}
- # TODO insert check for uploadMulti factory 2526
- # if not self.uploadMulti when we introduce a platform/build that uses
- # uploadMulti
-
- if c.get('enable_talos_sendchange'):
- if c.get('pgo_build'):
+ if test_type == 'talos':
+ if pgo_build:
build_type = 'pgo-'
else: # we don't do talos sendchange for debug so no need to check
build_type = '' # leave 'opt' out of branch for talos
talos_branch = "%s-%s-%s%s" % (self.branch,
self.stage_platform,
build_type,
'talos')
self.sendchange(downloadables=[installer_url],
branch=talos_branch,
username='sendchange',
sendchange_props=sendchange_props)
-
- if c.get('enable_unittest_sendchange'):
+ elif test_type == 'unittest':
# do unittest sendchange
-
- # we need a way to make opt builds use pgo branch sendchanges.
- # if the branch supports per_checkin and this platform is in
- # pgo platforms (see branch_specifics.py), use pgo instead of opt.
- override_opt_branch = (self.stage_platform in c['pgo_platforms'] and
- c.get('branch_uses_per_checkin_strategy'))
if c.get('debug_build'):
build_type = '' # for debug builds we append nothing
- elif c.get('pgo_build') or override_opt_branch:
+ elif pgo_build:
build_type = '-pgo'
else: # generic opt build
build_type = '-opt'
if c.get('unittest_platform'):
platform = c['unittest_platform']
else:
platform = self.stage_platform
platform_and_build_type = "%s%s" % (platform, build_type)
unittest_branch = "%s-%s-%s" % (self.branch,
platform_and_build_type,
'unittest')
self.sendchange(downloadables=[installer_url, tests_url],
branch=unittest_branch,
sendchange_props=sendchange_props)
+ else:
+ self.fatal('type: "%s" is unknown for sendchange type. valid '
+ 'strings are "unittest" or "talos"' % test_type)
def update(self):
""" submit balrog update steps. """
c = self.config
if not self.query_is_nightly():
self.info("Not a nightly build, skipping balrog submission.")
return
# grab any props available from this or previous unclobbered runs
self.generate_build_props(console_output=False,
halt_on_failure=False)
-
- # platform_supports_partials: is False for things like asan
- # branch_supports_partials: is False for things like some b2g branches
- if (c.get('platform_supports_partials') and
- c.get('branch_supports_partials')):
- self._create_partial_mar()
- dist_update_dir = os.path.join(self.query_abs_dirs()['abs_obj_dir'],
- 'dist',
- 'update')
- self._set_file_properties(file_name='*.partial.*.mar',
- find_dir=dist_update_dir,
- prop_type='partialMar')
-
if not self.config.get("balrog_api_root"):
self.fatal("balrog_api_root not set; skipping balrog submission.")
return
if c['balrog_api_root']:
self.submit_balrog_updates()
def _post_fatal(self, message=None, exit_code=None):
--- a/scripts/fx_desktop_build.py
+++ b/scripts/fx_desktop_build.py
@@ -27,17 +27,16 @@ class FxDesktopBuild(BuildScript, object
def __init__(self):
buildscript_kwargs = {
'config_options': BUILD_BASE_CONFIG_OPTIONS,
'all_actions': [
'clobber',
'clone-tools',
'setup-mock',
'build',
- 'sendchanges',
'generate-build-stats',
'update',
],
'require_config_file': True,
# Default configuration
'config': {
'is_automation': True,
"pgo_build": False,
@@ -60,22 +59,17 @@ class FxDesktopBuild(BuildScript, object
"%(objdir)s/dist/fennec*",
"%(objdir)s/dist/seamonkey*",
"%(objdir)s/dist/thunderbird*",
"%(objdir)s/dist/install/sea/*.exe"
],
'stage_product': 'firefox',
'platform_supports_post_upload_to_latest': True,
'use_branch_in_symbols_extra_buildid': True,
- 'update_env': {
- 'MAR': '../dist/host/bin/mar',
- 'MBSDIFF': '../dist/host/bin/mbsdiff'
- },
'latest_mar_dir': '/pub/mozilla.org/firefox/nightly/latest-%(branch)s',
- 'branch_supports_partials': True, # check branch_specifics.py
# try will overwrite these
'clone_with_purge': False,
'clone_by_revision': False,
'tinderbox_build_dir': None,
'to_tinderbox_dated': True,
'release_to_try_builds': False,
'include_post_upload_builddir': False,