--- a/configs/single_locale/ash.py
+++ b/configs/single_locale/ash.py
@@ -1,28 +1,45 @@
+# This configuration uses mozilla-central binaries (en-US, localized complete
+# mars) and urls but it generates 'ash' artifacts. With this setup, binaries
+# generated on ash are NOT overwriting mozilla-central files.
+# Using this configuration, on a successful build, artifacts will be uploaded
+# here:
+#
+# * http://dev-stage01.srv.releng.scl3.mozilla.com/pub/mozilla.org/firefox/nightly/latest-ash-l10n/
+# (in staging environment)
+# * https://ftp.mozilla.org/pub/firefox/nightly/latest-ash-l10n/
+# (in production environment)
+#
+# If you really want to have localized ash builds, use the use the following
+# values:
+# * "en_us_binary_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds/ash-%(platform)s/latest/",
+# * "mar_tools_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds/ash-%(platform)s/latest/",
+# * "repo": "https://hg.mozilla.org/projects/ash",
+#
+
config = {
"nightly_build": True,
"branch": "ash",
- "en_us_binary_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds/ash-%(platform)s/latest/",
+ "en_us_binary_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/",
"update_channel": "nightly",
# l10n
"hg_l10n_base": "https://hg.mozilla.org/l10n-central",
# mar
"enable_partials": True,
- "mar_tools_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds/ash-%(platform)s/latest/",
+ "mar_tools_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/mar-tools/%(platform)s",
"previous_mar_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central-l10n",
- "current_mar_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central",
# repositories
"mozilla_dir": "ash",
"repos": [{
"vcs": "hg",
- "repo": "https://hg.mozilla.org/projects/ash",
+ "repo": "https://hg.mozilla.org/mozilla-central",
"revision": "default",
"dest": "ash",
}, {
"vcs": "hg",
"repo": "https://hg.mozilla.org/build/tools",
"revision": "default",
"dest": "tools",
}, {
--- a/configs/single_locale/linux.py
+++ b/configs/single_locale/linux.py
@@ -13,92 +13,105 @@ config = {
"LOCALE_MERGEDIR": "%(abs_merge_dir)s/",
},
"log_name": "single_locale",
"objdir": "obj-l10n",
"js_src_dir": "js/src",
"make_dirs": ['config'],
"vcs_share_base": "/builds/hg-shared",
+ # tooltool
+ 'tooltool_url': 'http://tooltool.pvt.build.mozilla.org/build/',
+ 'tooltool_script': ["/builds/tooltool.py"],
+ 'tooltool_bootstrap': "setup.sh",
+ 'tooltool_manifest_src': 'browser/config/tooltool-manifests/linux32/releng.manifest',
# balrog credential file:
'balrog_credentials_file': 'oauth.txt',
# l10n
"ignore_locales": ["en-US"],
"l10n_dir": "l10n",
- "l10n_stage_dir": "dist/firefox/l10n-stage",
"locales_file": "%(branch)s/browser/locales/all-locales",
"locales_dir": "browser/locales",
"hg_l10n_base": "https://hg.mozilla.org/l10n-central",
"hg_l10n_tag": "default",
"merge_locales": True,
# MAR
- "previous_mar_dir": "previous",
- "current_mar_dir": "current",
+ "previous_mar_dir": "dist/previous",
+ "current_mar_dir": "dist/current",
"update_mar_dir": "dist/update", # sure?
"previous_mar_filename": "previous.mar",
"current_work_mar_dir": "current.work",
"package_base_dir": "dist/l10n-stage",
"application_ini": "application.ini",
"buildid_section": 'App',
"buildid_option": "BuildID",
"unpack_script": "tools/update-packaging/unwrap_full_update.pl",
"incremental_update_script": "tools/update-packaging/make_incremental_update.sh",
"balrog_release_pusher_script": "scripts/updates/balrog-release-pusher.py",
"update_packaging_dir": "tools/update-packaging",
"local_mar_tool_dir": "dist/host/bin",
"mar": "mar",
"mbsdiff": "mbsdiff",
- "current_mar_filename": "firefox-%(version)s.en-US.linux-i686.complete.mar",
+ "current_mar_filename": "firefox-%(version)s.%(locale)s.linux-i686.complete.mar",
"complete_mar": "firefox-%(version)s.en-US.linux-i686.complete.mar",
"localized_mar": "firefox-%(version)s.%(locale)s.linux-i686.complete.mar",
"partial_mar": "firefox-%(version)s.%(locale)s.linux-i686.partial.%(from_buildid)s-%(to_buildid)s.mar",
'installer_file': "firefox-%(version)s.en-US.linux-i686.tar.bz2",
# Mock
'mock_target': 'mozilla-centos6-i386',
- 'mock_packages':
- ['autoconf213', 'python', 'zip', 'mozilla-python27-mercurial', 'git', 'ccache',
- 'glibc-static.i686', 'libstdc++-static.i686', 'perl-Test-Simple', 'perl-Config-General',
- 'gtk2-devel.i686', 'libnotify-devel.i686', 'yasm',
- 'alsa-lib-devel.i686', 'libcurl-devel.i686',
- 'wireless-tools-devel.i686', 'libX11-devel.i686',
- 'libXt-devel.i686', 'mesa-libGL-devel.i686',
- 'gnome-vfs2-devel.i686', 'GConf2-devel.i686', 'wget',
- 'mpfr', # required for system compiler
- 'xorg-x11-font*', # fonts required for PGO
- 'imake', # required for makedepend!?!
- 'gcc45_0moz3', 'gcc454_0moz1', 'gcc472_0moz1', 'gcc473_0moz1', 'yasm', 'ccache', # <-- from releng repo
- 'valgrind',
- 'pulseaudio-libs-devel.i686',
- 'gstreamer-devel.i686', 'gstreamer-plugins-base-devel.i686',
- # Packages already installed in the mock environment, as x86_64
- # packages.
- 'glibc-devel.i686', 'libgcc.i686', 'libstdc++-devel.i686',
- # yum likes to install .x86_64 -devel packages that satisfy .i686
- # -devel packages dependencies. So manually install the dependencies
- # of the above packages.
- 'ORBit2-devel.i686', 'atk-devel.i686', 'cairo-devel.i686',
- 'check-devel.i686', 'dbus-devel.i686', 'dbus-glib-devel.i686',
- 'fontconfig-devel.i686', 'glib2-devel.i686',
- 'hal-devel.i686', 'libICE-devel.i686', 'libIDL-devel.i686',
- 'libSM-devel.i686', 'libXau-devel.i686', 'libXcomposite-devel.i686',
- 'libXcursor-devel.i686', 'libXdamage-devel.i686', 'libXdmcp-devel.i686',
- 'libXext-devel.i686', 'libXfixes-devel.i686', 'libXft-devel.i686',
- 'libXi-devel.i686', 'libXinerama-devel.i686', 'libXrandr-devel.i686',
- 'libXrender-devel.i686', 'libXxf86vm-devel.i686', 'libdrm-devel.i686',
- 'libidn-devel.i686', 'libpng-devel.i686', 'libxcb-devel.i686',
- 'libxml2-devel.i686', 'pango-devel.i686', 'perl-devel.i686',
- 'pixman-devel.i686', 'zlib-devel.i686',
- # Freetype packages need to be installed be version, because a newer
- # version is available, but we don't want it for Firefox builds.
- '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',
- ],
+ 'mock_packages': [
+ 'autoconf213', 'python', 'mozilla-python27', 'zip', 'mozilla-python27-mercurial',
+ 'git', 'ccache', 'perl-Test-Simple', 'perl-Config-General',
+ 'yasm', 'wget',
+ 'mpfr', # required for system compiler
+ 'xorg-x11-font*', # fonts required for PGO
+ 'imake', # required for makedepend!?!
+ ### <-- from releng repo
+ 'gcc45_0moz3', 'gcc454_0moz1', 'gcc472_0moz1', 'gcc473_0moz1',
+ 'yasm', 'ccache',
+ ###
+ 'valgrind',
+ ######## 32 bit specific ###########
+ 'glibc-static.i686', 'libstdc++-static.i686',
+ 'gtk2-devel.i686', 'libnotify-devel.i686',
+ 'alsa-lib-devel.i686', 'libcurl-devel.i686',
+ 'wireless-tools-devel.i686', 'libX11-devel.i686',
+ 'libXt-devel.i686', 'mesa-libGL-devel.i686',
+ 'gnome-vfs2-devel.i686', 'GConf2-devel.i686',
+ 'pulseaudio-libs-devel.i686',
+ 'gstreamer-devel.i686', 'gstreamer-plugins-base-devel.i686',
+ # Packages already installed in the mock environment, as x86_64
+ # packages.
+ 'glibc-devel.i686', 'libgcc.i686', 'libstdc++-devel.i686',
+ # yum likes to install .x86_64 -devel packages that satisfy .i686
+ # -devel packages dependencies. So manually install the dependencies
+ # of the above packages.
+ 'ORBit2-devel.i686', 'atk-devel.i686', 'cairo-devel.i686',
+ 'check-devel.i686', 'dbus-devel.i686', 'dbus-glib-devel.i686',
+ 'fontconfig-devel.i686', 'glib2-devel.i686',
+ 'hal-devel.i686', 'libICE-devel.i686', 'libIDL-devel.i686',
+ 'libSM-devel.i686', 'libXau-devel.i686', 'libXcomposite-devel.i686',
+ 'libXcursor-devel.i686', 'libXdamage-devel.i686',
+ 'libXdmcp-devel.i686', 'libXext-devel.i686', 'libXfixes-devel.i686',
+ 'libXft-devel.i686', 'libXi-devel.i686', 'libXinerama-devel.i686',
+ 'libXrandr-devel.i686', 'libXrender-devel.i686',
+ 'libXxf86vm-devel.i686', 'libdrm-devel.i686', 'libidn-devel.i686',
+ 'libpng-devel.i686', 'libxcb-devel.i686', 'libxml2-devel.i686',
+ 'pango-devel.i686', 'perl-devel.i686', 'pixman-devel.i686',
+ 'zlib-devel.i686',
+ # Freetype packages need to be installed be version, because a newer
+ # version is available, but we don't want it for Firefox builds.
+ '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 ###########
+ ],
'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'),
+ ('/tools/tooltool.py', '/builds/tooltool.py'),
],
}
--- a/configs/single_locale/linux64.py
+++ b/configs/single_locale/linux64.py
@@ -2,80 +2,94 @@ config = {
"platform": "linux64",
"update_platform": "Linux_x86_64-gcc3",
"mozconfig": "%(branch)s/browser/config/mozconfigs/linux64/l10n-mozconfig",
"repack_env": {
"MOZ_OBJDIR": "obj-l10n",
"EN_US_BINARY_URL": "%(en_us_binary_url)s",
"LOCALE_MERGEDIR": "%(abs_merge_dir)s/",
"MOZ_UPDATE_CHANNEL": "%(update_channel)s",
- "IS_NIGHTLY": "yes",
+ "DIST": "%(abs_objdir)s",
+ "LOCALE_MERGEDIR": "%(abs_merge_dir)s/",
},
"log_name": "single_locale",
"objdir": "obj-l10n",
"js_src_dir": "js/src",
"make_dirs": ['config'],
"vcs_share_base": "/builds/hg-shared",
+ # tooltool
+ 'tooltool_url': 'http://tooltool.pvt.build.mozilla.org/build/',
+ 'tooltool_script': ["/builds/tooltool.py"],
+ 'tooltool_bootstrap': "setup.sh",
+ 'tooltool_manifest_src': 'browser/config/tooltool-manifests/linux64/releng.manifest',
# balrog credential file:
'balrog_credentials_file': 'oauth.txt',
# l10n
"ignore_locales": ["en-US"],
"l10n_dir": "l10n",
- "l10n_stage_dir": "dist/firefox/l10n-stage",
"locales_file": "%(branch)s/browser/locales/all-locales",
"locales_dir": "browser/locales",
"hg_l10n_base": "https://hg.mozilla.org/l10n-central",
"hg_l10n_tag": "default",
"merge_locales": True,
# MAR
- "previous_mar_dir": "previous",
- "current_mar_dir": "current",
+ "previous_mar_dir": "dist/previous",
+ "current_mar_dir": "dist/current",
"update_mar_dir": "dist/update", # sure?
"previous_mar_filename": "previous.mar",
"current_work_mar_dir": "current.work",
"package_base_dir": "dist/l10n-stage",
"application_ini": "application.ini",
"buildid_section": 'App',
"buildid_option": "BuildID",
"unpack_script": "tools/update-packaging/unwrap_full_update.pl",
"incremental_update_script": "tools/update-packaging/make_incremental_update.sh",
"balrog_release_pusher_script": "scripts/updates/balrog-release-pusher.py",
"update_packaging_dir": "tools/update-packaging",
"local_mar_tool_dir": "dist/host/bin",
"mar": "mar",
"mbsdiff": "mbsdiff",
- # "partials_url": "%(base_url)s/latest-mozilla-central/",
- "current_mar_filename": "firefox-%(version)s.en-US.linux-x86_64.complete.mar",
+ "current_mar_filename": "firefox-%(version)s.%(locale)s.linux-x86_64.complete.mar",
"complete_mar": "firefox-%(version)s.en-US.linux-x86_64.complete.mar",
"localized_mar": "firefox-%(version)s.%(locale)s.linux-x86_64.complete.mar",
"partial_mar": "firefox-%(version)s.%(locale)s.linux-x86_64.partial.%(from_buildid)s-%(to_buildid)s.mar",
"installer_file": "firefox-%(version)s.en-US.linux-x86_64.tar.bz2",
# Mock
'mock_target': 'mozilla-centos6-x86_64',
- 'mock_packages':
- ['autoconf213', 'python', 'zip', 'mozilla-python27-mercurial', 'git', 'ccache',
- 'glibc-static', 'libstdc++-static', 'perl-Test-Simple', 'perl-Config-General',
- 'gtk2-devel', 'libnotify-devel', 'yasm',
- 'alsa-lib-devel', 'libcurl-devel',
- 'wireless-tools-devel', 'libX11-devel',
- 'libXt-devel', 'mesa-libGL-devel',
- 'gnome-vfs2-devel', 'GConf2-devel', 'wget',
- 'mpfr', # required for system compiler
- 'xorg-x11-font*', # fonts required for PGO
- 'imake', # required for makedepend!?!
- 'gcc45_0moz3', 'gcc454_0moz1', 'gcc472_0moz1', 'yasm', 'ccache', # <-- from releng repo
- 'gcc473_0moz1', 'valgrind',
- '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', ],
+
+ 'mock_packages': [
+ 'autoconf213', 'python', 'mozilla-python27', 'zip', 'mozilla-python27-mercurial',
+ 'git', 'ccache', 'perl-Test-Simple', 'perl-Config-General',
+ 'yasm', 'wget',
+ 'mpfr', # required for system compiler
+ 'xorg-x11-font*', # fonts required for PGO
+ 'imake', # required for makedepend!?!
+ ### <-- from releng repo
+ 'gcc45_0moz3', 'gcc454_0moz1', 'gcc472_0moz1', 'gcc473_0moz1',
+ 'yasm', 'ccache',
+ ###
+ 'valgrind', 'dbus-x11',
+ ######## 64 bit specific ###########
+ 'glibc-static', 'libstdc++-static',
+ 'gtk2-devel', 'libnotify-devel',
+ 'alsa-lib-devel', 'libcurl-devel', 'wireless-tools-devel',
+ 'libX11-devel', 'libXt-devel', 'mesa-libGL-devel', 'gnome-vfs2-devel',
+ 'GConf2-devel',
+ ### from releng repo
+ 'gcc45_0moz3', 'gcc454_0moz1', 'gcc472_0moz1', 'gcc473_0moz1',
+ 'yasm', 'ccache',
+ ###
+ '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'
+ ],
'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'),
],
}
--- a/configs/single_locale/macosx64.py
+++ b/configs/single_locale/macosx64.py
@@ -20,44 +20,49 @@ config = {
"js_src_dir": "js/src",
"make_dirs": ['config'],
"vcs_share_base": "/builds/hg-shared",
"upload_env_extra": {
"MOZ_PKG_PLATFORM": "mac",
},
+ # tooltool
+ 'tooltool_url': 'http://tooltool.pvt.build.mozilla.org/build/',
+ 'tooltool_script': ["/builds/tooltool.py"],
+ 'tooltool_bootstrap': "setup.sh",
+ 'tooltool_manifest_src': 'browser/config/tooltool-manifests/macosx64/releng.manifest',
+
# balrog credential file:
'balrog_credentials_file': 'oauth.txt',
# l10n
"ignore_locales": ["en-US"],
"l10n_dir": "l10n",
- "l10n_stage_dir": "dist/firefox/l10n-stage",
"locales_file": "%(branch)s/browser/locales/all-locales",
"locales_dir": "browser/locales",
"hg_l10n_base": "https://hg.mozilla.org/l10n-central",
"hg_l10n_tag": "default",
"merge_locales": True,
# MAR
- "previous_mar_dir": "previous",
- "current_mar_dir": "current",
+ "previous_mar_dir": "dist/previous",
+ "current_mar_dir": "dist/current",
"update_mar_dir": "dist/update", # sure?
"previous_mar_filename": "previous.mar",
"current_work_mar_dir": "current.work",
"package_base_dir": "dist/l10n-stage",
"application_ini": "Contents/Resources/application.ini",
"buildid_section": 'App',
"buildid_option": "BuildID",
"unpack_script": "tools/update-packaging/unwrap_full_update.pl",
"incremental_update_script": "tools/update-packaging/make_incremental_update.sh",
"balrog_release_pusher_script": "scripts/updates/balrog-release-pusher.py",
"update_packaging_dir": "tools/update-packaging",
"local_mar_tool_dir": "dist/host/bin",
"mar": "mar",
"mbsdiff": "mbsdiff",
- "current_mar_filename": "firefox-%(version)s.en-US.mac.complete.mar",
+ "current_mar_filename": "firefox-%(version)s.%(locale)s.mac.complete.mar",
"complete_mar": "firefox-%(version)s.en-US.mac.complete.mar",
"localized_mar": "firefox-%(version)s.%(locale)s.mac.complete.mar",
"partial_mar": "firefox-%(version)s.%(locale)s.mac.partial.%(from_buildid)s-%(to_buildid)s.mar",
'installer_file': "firefox-%(version)s.en-US.mac.dmg",
}
--- a/configs/single_locale/mozilla-central.py
+++ b/configs/single_locale/mozilla-central.py
@@ -1,21 +1,33 @@
config = {
+ "nightly_build": True,
"branch": "mozilla-central",
- "en_us_binary_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central",
- "branch_repo": "https://hg.mozilla.org/mozilla-central",
- "extra_upload_env": {
- "POST_UPLOAD_CMD": "post_upload.py -b %(branch)s-l10n -p firefox -i %(buildid)s --release-to-latest --release-to-dated",
- },
+ "en_us_binary_url": "https://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/",
+ "update_channel": "nightly",
# l10n
"hg_l10n_base": "https://hg.mozilla.org/l10n-central",
# mar
"enable_partials": True,
- "partials_url": "%(base_url)s/latest-mozilla-central/",
- "mar_tools_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/mar-tools/linux/",
-
- # just for testing... (patials/complete mar are not generated on ash)
+ "mar_tools_url": "https://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/",
"previous_mar_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central-l10n",
"current_mar_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central",
+ # repositories
+ "mozilla_dir": "mozilla-central",
+ "repos": [{
+ "vcs": "hg",
+ "repo": "https://hg.mozilla.org/mozilla-central",
+ "revision": "default",
+ "dest": "ash",
+ }, {
+ "vcs": "hg",
+ "repo": "https://hg.mozilla.org/build/tools",
+ "revision": "default",
+ "dest": "tools",
+ }, {
+ "vcs": "hg",
+ "repo": "https://hg.mozilla.org/build/compare-locales",
+ "revision": "RELEASE_AUTOMATION"
+ }],
}
--- a/configs/single_locale/win32.py
+++ b/configs/single_locale/win32.py
@@ -1,112 +1,67 @@
import sys
-BRANCH = "mozilla-central"
-MOZILLA_DIR = BRANCH
-HG_SHARE_BASE_DIR = "c:/builds/hg-shared"
-EN_US_BINARY_URL = "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central"
-OBJDIR = "obj-l10n"
-MOZ_UPDATE_CHANNEL = "nightly"
-STAGE_SERVER = "dev-stage01.srv.releng.scl3.mozilla.com"
-STAGE_USER = "ffxbld"
-STAGE_SSH_KEY = "~/.ssh/ffxbld_rsa"
-AUS_SERVER = "dev-stage01.srv.releng.scl3.mozilla.com"
-# AUS_SERVER = "aus2-staging.mozilla.org"
-AUS_USER = "ffxbld"
-AUS_SSH_KEY = "~/.ssh/ffxbld_rsa"
-AUS_UPLOAD_BASE_DIR = "/opt/aus2/incoming/2/Firefox"
-AUS_BASE_DIR = BRANCH + "/%(build_target)s/%(buildid)s/%(locale)s"
-CANDIDATES_URL = "http://ftp.mozilla.org/pub/mozilla.org/firefox/%s" % MOZ_UPDATE_CHANNEL
+
config = {
- 'balrog_api_root': 'https://aus4-admin-dev.allizom.org',
- "balrog_credentials_file": "oauth.txt",
- 'balrog_username': 'stage-ffxbld',
- "mozilla_dir": MOZILLA_DIR,
- "snippet_base_url": "http://example.com", # fix it
- "mozconfig": "%s/browser/config/mozconfigs/win32/l10n-mozconfig" % MOZILLA_DIR,
"platform": "win32",
"update_platform": "WINNT_x86-msvc",
- "binary_url": EN_US_BINARY_URL,
- "repos": [{
- "vcs": "hg",
- "repo": "https://hg.mozilla.org/mozilla-central",
- "revision": "default",
- "dest": MOZILLA_DIR,
- }, {
- "vcs": "hg",
- "repo": "https://hg.mozilla.org/build/tools",
- "revision": "default",
- "dest": "tools",
- }, {
- "vcs": "hg",
- "repo": "https://hg.mozilla.org/build/compare-locales",
- "revision": "RELEASE_AUTOMATION"
- }],
+ "mozilla_dir": "%(branch)s",
+ "mozconfig": "%(branch)s/browser/config/mozconfigs/win32/l10n-mozconfig",
"repack_env": {
- "MOZ_OBJDIR": OBJDIR,
- "EN_US_BINARY_URL": EN_US_BINARY_URL,
+ "MOZ_OBJDIR": "obj-l10n",
+ "EN_US_BINARY_URL": "%(en_us_binary_url)s",
"LOCALE_MERGEDIR": "%(abs_merge_dir)s/",
- "MOZ_UPDATE_CHANNEL": MOZ_UPDATE_CHANNEL,
- "DIST": "%(abs_objdir)s\\dist",
- "LOCALE_MERGEDIR": "%(abs_merge_dir)s\\",
- # "MOZ_MAKE_COMPLETE_MAR": "1",
+ "MOZ_UPDATE_CHANNEL": "%(update_channel)s",
+ "DIST": "%(abs_objdir)s",
+ "LOCALE_MERGEDIR": "%(abs_merge_dir)s/",
+ "L10NBASEDIR": "../../l10n",
+ "MAKE_COMPLETE_MAR": "1",
},
"log_name": "single_locale",
- "objdir": OBJDIR,
+ "objdir": "obj-l10n",
"js_src_dir": "js/src",
"make_dirs": ['config'],
- "vcs_share_base": HG_SHARE_BASE_DIR,
+ "vcs_share_base": "c:/builds/hg-shared",
- "upload_env": {
- "UPLOAD_USER": STAGE_USER,
- "UPLOAD_SSH_KEY": STAGE_SSH_KEY,
- "UPLOAD_HOST": STAGE_SERVER,
- # "POST_UPLOAD_CMD": "post_upload.py -b mozilla-central-android-l10n -p mobile -i %(buildid)s --release-to-latest --release-to-dated",
- "POST_UPLOAD_CMD": "post_upload.py -b mozilla-central-l10n -p firefox -i %(buildid)s --release-to-latest --release-to-dated",
- "UPLOAD_TO_TEMP": "1",
- },
+ # tooltool
+ 'tooltool_url': 'http://tooltool.pvt.build.mozilla.org/build/',
+ 'tooltool_script': [sys.executable,
+ 'C:/mozilla-build/tooltool.py'],
+ 'tooltool_bootstrap': "setup.sh",
+ 'tooltool_manifest_src': 'browser/config/tooltool-manifests/win32/releng.manifest',
+ # balrog credential file:
+ 'balrog_credentials_file': 'oauth.txt',
+
# l10n
"ignore_locales": ["en-US"],
"l10n_dir": "l10n",
- "l10n_stage_dir": "dist/firefox/l10n-stage",
- "locales_file": "%s/browser/locales/all-locales" % MOZILLA_DIR,
+ "locales_file": "%(branch)s/browser/locales/all-locales",
"locales_dir": "browser/locales",
"hg_l10n_base": "https://hg.mozilla.org/l10n-central",
"hg_l10n_tag": "default",
"merge_locales": True,
- "clobber_file": 'CLOBBER',
# MAR
- 'previous_mar_url': 'http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central-l10n',
- 'current_mar_url': 'http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central',
- "previous_mar_dir": "previous",
- "current_mar_dir": "current",
+ "previous_mar_dir": "dist\\previous",
+ "current_mar_dir": "dist\\current",
"update_mar_dir": "dist\\update", # sure?
"previous_mar_filename": "previous.mar",
"current_work_mar_dir": "current.work",
- "package_base_dir": "dist\\install\\sea",
+ "package_base_dir": "dist\\l10n-stage",
"application_ini": "application.ini",
"buildid_section": 'App',
"buildid_option": "BuildID",
"unpack_script": "tools\\update-packaging\\unwrap_full_update.pl",
"incremental_update_script": "tools\\update-packaging\\make_incremental_update.sh",
+ "balrog_release_pusher_script": "scripts\\updates\\balrog-release-pusher.py",
"update_packaging_dir": "tools\\update-packaging",
"local_mar_tool_dir": "dist\\host\\bin",
"mar": "mar.exe",
"mbsdiff": "mbsdiff.exe",
- "candidates_base_url": CANDIDATES_URL,
- "partials_url": "%(base_url)s/latest-mozilla-central/",
- "mar_tools_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/mar-tools/win32",
+ "current_mar_filename": "firefox-%(version)s.%(locale)s.win32.complete.mar",
"complete_mar": "firefox-%(version)s.en-US.win32.complete.mar",
"localized_mar": "firefox-%(version)s.%(locale)s.win32.complete.mar",
"partial_mar": "firefox-%(version)s.%(locale)s.partial.%(from_buildid)s-%(to_buildid)s.mar",
'installer_file': "firefox-%(version)s.en-US.win32.installer.exe",
- # AUS
- "aus_server": AUS_SERVER,
- "aus_user": AUS_USER,
- "aus_ssh_key": AUS_SSH_KEY,
- "aus_upload_base_dir": AUS_UPLOAD_BASE_DIR,
- "aus_base_dir": AUS_BASE_DIR,
- "exes": {
- "make": [sys.executable, "%(abs_work_dir)s\\mozilla-central\\build\\pymake\\make.py"],
- }
+ # use pymake instead of make?
+ "enable_pymake": True,
}
--- a/configs/single_locale/win64.py
+++ b/configs/single_locale/win64.py
@@ -1,112 +1,63 @@
-import sys
-BRANCH = "mozilla-central"
-MOZILLA_DIR = BRANCH
-HG_SHARE_BASE_DIR = "c:/builds/hg-shared"
-EN_US_BINARY_URL = "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central"
-OBJDIR = "obj-l10n"
-MOZ_UPDATE_CHANNEL = "nightly"
-STAGE_SERVER = "dev-stage01.srv.releng.scl3.mozilla.com"
-#STAGE_SERVER = "stage.mozilla.org"
-STAGE_USER = "ffxbld"
-STAGE_SSH_KEY = "~/.ssh/ffxbld_rsa"
-AUS_SERVER = "dev-stage01.srv.releng.scl3.mozilla.com"
-#AUS_SERVER = "aus2-staging.mozilla.org"
-AUS_USER = "ffxbld"
-AUS_SSH_KEY = "~/.ssh/ffxbld_rsa"
-AUS_UPLOAD_BASE_DIR = "/opt/aus2/incoming/2/Firefox"
-AUS_BASE_DIR = BRANCH + "/%(build_target)s/%(buildid)s/%(locale)s"
-CANDIDATES_URL = "http://ftp.mozilla.org/pub/mozilla.org/firefox/%s" % MOZ_UPDATE_CHANNEL
config = {
"platform": "win64",
"update_platform": "WINNT_x86_64-msvc",
- 'balrog_api_root': 'https://aus4-admin-dev.allizom.org',
- 'balrog_api_root': 'https://aus4-admin-dev.allizom.org',
- "balrog_credentials_file": "oauth.txt",
- 'balrog_username': 'stage-ffxbld',
- "mozilla_dir": MOZILLA_DIR,
- "snippet_base_url": "http://example.com", # fix it
- "mozconfig": "%s/browser/config/mozconfigs/win32/l10n-mozconfig" % MOZILLA_DIR,
- #"src_xulrunner_mozconfig": "xulrunner/config/mozconfigs/macosx64/xulrunner",
- "binary_url": EN_US_BINARY_URL,
- "repos": [{
- "vcs": "hg",
- "repo": "https://hg.mozilla.org/mozilla-central",
- "revision": "default",
- "dest": MOZILLA_DIR,
- }, {
- "vcs": "hg",
- "repo": "https://hg.mozilla.org/build/tools",
- "revision": "default",
- "dest": "tools",
- }, {
- "vcs": "hg",
- "repo": "https://hg.mozilla.org/build/compare-locales",
- "revision": "RELEASE_AUTOMATION"
- }],
+ "mozilla_dir": "%(branch)s",
+ "mozconfig": "%(branch)s/browser/config/mozconfigs/win64/l10n-mozconfig",
"repack_env": {
- "MOZ_OBJDIR": OBJDIR,
- "EN_US_BINARY_URL": EN_US_BINARY_URL,
- "MOZ_UPDATE_CHANNEL": MOZ_UPDATE_CHANNEL,
- "DIST": "%(abs_objdir)s\\dist",
- "LOCALE_MERGEDIR": "%(abs_merge_dir)s\\",
- "MOZ_MAKE_COMPLETE_MAR": "1",
+ "MOZ_OBJDIR": "obj-l10n",
+ "EN_US_BINARY_URL": "%(en_us_binary_url)s",
+ "LOCALE_MERGEDIR": "%(abs_merge_dir)s/",
+ "MOZ_UPDATE_CHANNEL": "%(update_channel)s",
+ "DIST": "%(abs_objdir)s",
+ "LOCALE_MERGEDIR": "%(abs_merge_dir)s/",
+ "L10NBASEDIR": "../../l10n",
},
"log_name": "single_locale",
- "objdir": OBJDIR,
+ "objdir": "obj-l10n",
"js_src_dir": "js/src",
"make_dirs": ['config'],
- "vcs_share_base": HG_SHARE_BASE_DIR,
+ "vcs_share_base": "c:/builds/hg-shared",
- "upload_env": {
- "UPLOAD_USER": STAGE_USER,
- "UPLOAD_SSH_KEY": STAGE_SSH_KEY,
- "UPLOAD_HOST": STAGE_SERVER,
- #"POST_UPLOAD_CMD": "post_upload.py -b mozilla-central-android-l10n -p mobile -i %(buildid)s --release-to-latest --release-to-dated",
- "POST_UPLOAD_CMD": "post_upload.py -b mozilla-central-l10n -p firefox -i %(buildid)s --release-to-latest --release-to-dated",
- "UPLOAD_TO_TEMP": "1",
- },
- #l10n
+ # tooltool
+ 'tooltool_url': 'http://tooltool.pvt.build.mozilla.org/build/',
+ 'tooltool_script': ["/builds/tooltool.py"],
+ 'tooltool_bootstrap': "setup.sh",
+ 'tooltool_manifest_src': 'browser/config/tooltool-manifests/win64/releng.manifest',
+ # balrog credential file:
+ 'balrog_credentials_file': 'oauth.txt',
+
+ # l10n
"ignore_locales": ["en-US"],
"l10n_dir": "l10n",
- "l10n_stage_dir": "dist/firefox/l10n-stage",
- "locales_file": "%s/browser/locales/all-locales" % MOZILLA_DIR,
+ "locales_file": "%(branch)s/browser/locales/all-locales",
"locales_dir": "browser/locales",
"hg_l10n_base": "https://hg.mozilla.org/l10n-central",
"hg_l10n_tag": "default",
"merge_locales": True,
- "clobber_file": 'CLOBBER',
- #MAR
- 'previous_mar_url': 'http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central-l10n',
- "previous_mar_dir": "previous",
- "current_mar_dir": "current",
+ # MAR
+ "previous_mar_dir": "dist\\previous",
+ "current_mar_dir": "dist\\current",
"update_mar_dir": "dist\\update", # sure?
"previous_mar_filename": "previous.mar",
"current_work_mar_dir": "current.work",
- "package_base_dir": "dist\\install\\sea",
+ "package_base_dir": "dist\\l10n-stage",
"application_ini": "application.ini",
"buildid_section": 'App',
"buildid_option": "BuildID",
"unpack_script": "tools\\update-packaging\\unwrap_full_update.pl",
"incremental_update_script": "tools\\update-packaging\\make_incremental_update.sh",
+ "balrog_release_pusher_script": "scripts\\updates\\balrog-release-pusher.py",
"update_packaging_dir": "tools\\update-packaging",
"local_mar_tool_dir": "dist\\host\\bin",
"mar": "mar.exe",
"mbsdiff": "mbsdiff.exe",
- "candidates_base_url": CANDIDATES_URL,
- "partials_url": "%(base_url)s/latest-mozilla-central/",
- "mar_tools_url": "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/mar-tools/win32/",
- "localized_mar": "firefox-%(version)s.%(locale)s.win32.complete.mar",
+ "current_mar_filename": "firefox-%(version)s.%(locale)s.win64.complete.mar",
+ "complete_mar": "firefox-%(version)s.en-US.win64.complete.mar",
+ "localized_mar": "firefox-%(version)s.%(locale)s.win64.complete.mar",
"partial_mar": "firefox-%(version)s.%(locale)s.partial.%(from_buildid)s-%(to_buildid)s.mar",
+ 'installer_file': "firefox-%(version)s.en-US.win64.installer.exe",
- # AUS
- "build_target": "Linux_x86-gcc3",
- "aus_server": AUS_SERVER,
- "aus_user": AUS_USER,
- "aus_ssh_key": AUS_SSH_KEY,
- "aus_upload_base_dir": AUS_UPLOAD_BASE_DIR,
- "aus_base_dir": AUS_BASE_DIR,
- "exes": {
- "make": [sys.executable, "%(abs_work_dir)s\\mozilla-central\\build\\pymake\\make.py"],
- }
+ # use pymake instead of make?
+ "enable_pymake": True,
}
--- a/scripts/desktop_l10n.py
+++ b/scripts/desktop_l10n.py
@@ -25,16 +25,17 @@ from mozharness.mozilla.buildbot import
from mozharness.mozilla.building.buildbase import MakeUploadOutputParser
from mozharness.mozilla.l10n.locales import LocalesMixin
from mozharness.mozilla.mar import MarMixin
from mozharness.mozilla.mock import MockMixin
from mozharness.mozilla.purge import PurgeMixin
from mozharness.mozilla.release import ReleaseMixin
from mozharness.mozilla.signing import SigningMixin
from mozharness.mozilla.updates.balrog import BalrogMixin
+from mozharness.mozilla.mock import ERROR_MSGS
try:
import simplejson as json
assert json
except ImportError:
import json
@@ -418,17 +419,19 @@ class DesktopSingleLocale(LocalesMixin,
for line in raw_output.split("\n"):
discard = False
for element in exclude_lines:
if element.match(line):
discard = True
continue
if not discard:
output.append(line.strip())
- return " ".join(output).strip()
+ output = " ".join(output).strip()
+ self.info('echo-variable-%s: %s' % (variable, output))
+ return output
def query_base_package_name(self, locale):
"""Gets the package name from the objdir.
Only valid after setup is run.
"""
# optimization:
# replace locale with %(locale)s
# and store its values.
@@ -527,16 +530,17 @@ class DesktopSingleLocale(LocalesMixin,
self.info("repositories: %s" % repos)
self.vcs_checkout_repos(repos, parent_dir=dirs['abs_work_dir'],
tag_override=config.get('tag_override'))
self.pull_locale_source()
def _setup_configure(self, buildid=None):
"""configuration setup"""
# no need to catch failures as _make() halts on failure by default
+ self._run_tooltool()
self._make_configure()
self._make_dirs()
self.make_export(buildid) # not sure we need it
def setup(self):
"""setup step"""
dirs = self.query_abs_dirs()
self._copy_mozconfig()
@@ -596,30 +600,43 @@ class DesktopSingleLocale(LocalesMixin,
out_mozconfig.write(line)
# now log
with self.opened(dst, 'r') as (mozconfig, in_error):
if in_error:
self.fatal('cannot open {0}'.format(dst))
for line in mozconfig:
self.info(line.strip())
+ def _get_make_executable(self):
+ config = self.config
+ dirs = self.query_abs_dirs()
+ if config.get('enable_pymake'): # e.g. windows
+ pymake_path = r"/".join([dirs['abs_mozilla_dir'], 'build',
+ 'pymake', 'make.py'])
+ # mysterious subprocess errors, let's try to fix this path...
+ pymake_path = pymake_path.replace('\\', '/')
+ make = ['python', pymake_path]
+ else:
+ make = ['make']
+ return make
+
def _make(self, target, cwd, env, error_list=MakefileErrorList,
halt_on_failure=True, output_parser=None):
"""Runs make. Returns the exit code"""
- make = self.query_exe("make", return_type="list")
+ make = self._get_make_executable()
return self.run_command(make + target,
cwd=cwd,
env=env,
error_list=error_list,
halt_on_failure=halt_on_failure,
output_parser=output_parser)
def _get_output_from_make(self, target, cwd, env, halt_on_failure=True):
"""runs make and returns the output of the command"""
- make = self.query_exe("make", return_type="list")
+ make = self._get_make_executable()
return self.get_output_from_command(make + target,
cwd=cwd,
env=env,
silent=True,
halt_on_failure=halt_on_failure)
def _make_configure(self):
"""calls make -f client.mk configure"""
@@ -683,19 +700,17 @@ class DesktopSingleLocale(LocalesMixin,
cwd = dirs['abs_locales_dir']
parser = MakeUploadOutputParser(config=self.config,
log_obj=self.log_obj)
retval = self._make(target=target, cwd=cwd, env=env,
halt_on_failure=False, output_parser=parser)
if locale not in self.package_urls:
self.package_urls[locale] = {}
self.package_urls[locale].update(parser.matches)
- self.info("parser: %s" % parser)
- self.info("parser matches: %s" % parser.matches)
- if retval == 0:
+ if retval == SUCCESS:
self.info('Upload successful (%s)' % (locale))
ret = SUCCESS
else:
self.error('failed to upload %s' % (locale))
ret = FAILURE
return ret
def make_installers(self, locale):
@@ -707,48 +722,86 @@ class DesktopSingleLocale(LocalesMixin,
cwd = os.path.join(dirs['abs_locales_dir'])
cmd = ["installers-%s" % locale,
"LOCALE_MERGEDIR=%s" % env["LOCALE_MERGEDIR"], ]
return self._make(target=cmd, cwd=cwd,
env=env, halt_on_failure=False)
def generate_complete_mar(self, locale):
"""creates a complete mar file"""
+ self.info('generating complete mar for locale %s' % (locale))
config = self.config
dirs = self.query_abs_dirs()
self._create_mar_dirs()
self.download_mar_tools()
package_basedir = os.path.join(dirs['abs_objdir'],
config['package_base_dir'])
+ dist_dir = os.path.join(dirs['abs_objdir'], 'dist')
env = self.query_repack_env()
cmd = os.path.join(dirs['abs_objdir'], config['update_packaging_dir'])
cmd = ['-C', cmd, 'full-update', 'AB_CD=%s' % locale,
- 'PACKAGE_BASE_DIR=%s' % package_basedir]
- return self._make(target=cmd, cwd=dirs['abs_mozilla_dir'], env=env)
+ 'PACKAGE_BASE_DIR=%s' % package_basedir,
+ 'DIST=%s' % dist_dir,
+ 'MOZ_PKG_PRETTYNAMES=']
+ return_code = self._make(target=cmd,
+ cwd=dirs['abs_mozilla_dir'],
+ env=env)
+ if return_code == SUCCESS:
+ return_code == self._copy_complete_mar(locale)
+ return return_code
+
+ def _copy_complete_mar(self, locale):
+ """copies the file generated by generate_complete_mar() into the right
+ place"""
+ # complete mar file is created in obj-l10n/dist/update
+ # but we need it in obj-l10n-dist/current, let's copy it
+ current_mar_file = self._current_mar_filename(locale)
+ src_file = self.localized_marfile(locale)
+ dst_file = os.path.join(self._current_mar_dir(), current_mar_file)
+ if os.path.exists(dst_file):
+ self.info('removing %s' % (dst_file))
+ os.remove(dst_file)
+ # copyfile returns None on success but we need 0 if the operation was
+ # successful
+ if self.copyfile(src_file, dst_file) is None:
+ # success
+ return SUCCESS
+ return FAILURE
def repack_locale(self, locale):
"""wraps the logic for comapare locale, make installers and generate
partials"""
+ config = self.config
+ dirs = self.query_abs_dirs()
+ self.download_mar_tools()
+ package_basedir = os.path.join(dirs['abs_objdir'],
+ config['package_base_dir'])
+ # remove the package basedir directory, it might contain files
+ # from a previous locale
+ self.rmtree(package_basedir)
+ # the directory is gone, recreate it
+ self.mkdir_p(package_basedir)
+ # the directory is gone, recreate it
if self.run_compare_locales(locale) != 0:
self.error("compare locale %s failed" % (locale))
return FAILURE
# compare locale succeded, let's run make installers
if self.make_installers(locale) != 0:
self.error("make installers-%s failed" % (locale))
return FAILURE
# installer succeded, generate complete mar
if self.generate_complete_mar(locale) != 0:
self.error("generate complete %s mar failed" % (locale))
return FAILURE
# do we need to generate partials?
if self.has_partials():
- if self.create_partial_updates(locale) != 0:
+ if self.generate_partial_updates(locale) != 0:
self.error("generate partials %s failed" % (locale))
return FAILURE
else:
self.info("partial updates are not enabled, skipping")
return SUCCESS
def has_partials(self):
@@ -765,36 +818,37 @@ class DesktopSingleLocale(LocalesMixin,
config = self.config
version = self.query_version()
localized_mar = config['localized_mar'] % {'version': version,
'locale': locale}
localized_mar = os.path.join(self._mar_dir('update_mar_dir'),
localized_mar)
return localized_mar
- def create_partial_updates(self, locale):
+ def generate_partial_updates(self, locale):
"""create partial updates for locale"""
# clean up any left overs from previous locales
# remove current/ current.work/ previous/ directories
- self._delete_mar_dirs()
+ self.info('creating partial update for locale: %s' % (locale))
+ # self._delete_mar_dirs()
# and recreate current/ previous/
self._create_mar_dirs()
# download mar and mbsdiff executables
self.download_mar_tools()
# get the previous mar file
previous_marfile = self._get_previous_mar(locale)
# and unpack it
previous_mar_dir = self._previous_mar_dir()
result = self._unpack_mar(previous_marfile, previous_mar_dir)
if result != 0:
self.error('failed to unpack %s to %s' % (previous_marfile,
previous_mar_dir))
return result
- current_marfile = self._get_current_mar()
+ current_marfile = self._get_current_mar(locale)
current_mar_dir = self._current_mar_dir()
result = self._unpack_mar(current_marfile, current_mar_dir)
if result != 0:
self.error('failed to unpack %s to %s' % (current_marfile,
current_mar_dir))
return result
# partial filename
config = self.config
@@ -910,17 +964,17 @@ class DesktopSingleLocale(LocalesMixin,
except Exception as error:
self.error("submit repack to balrog failed: %s" % (str(error)))
return ret
def _get_partialInfo(self, locale):
"""we can have 0, 1 or many partials, this method returns the partialInfo
needed by balrog submitter"""
- if locale not in self.partials:
+ if locale not in self.partials or not self.has_partials():
return []
# we have only a single partial for now
# MakeUploadOutputParser can match a single parser
partial_url = self.package_urls[locale]["partialMarUrl"]
self.partials[locale][0]["url"] = partial_url
return self.partials[locale]
@@ -974,66 +1028,65 @@ class DesktopSingleLocale(LocalesMixin,
def _delete_pgc_files(self):
"""deletes pgc files"""
for directory in (self._previous_mar_dir(),
self._current_mar_dir()):
for pcg_file in self._pgc_files(directory):
self.info("removing %s" % pcg_file)
self.rmtree(pcg_file)
- def _current_mar_url(self):
+ def _current_mar_url(self, locale):
"""returns current mar url"""
config = self.config
base_url = config['current_mar_url']
- return "/".join((base_url, self._current_mar_name()))
+ return "/".join((base_url, self._current_mar_name(locale)))
def _previous_mar_url(self, locale):
"""returns the url for previous mar"""
config = self.config
base_url = config['previous_mar_url']
return "/".join((base_url, self._localized_mar_name(locale)))
- def _get_current_mar(self):
- """downloads the current mar file"""
- self.mkdir_p(self._previous_mar_dir())
- if not os.path.exists(self._current_mar_filename()):
- self.download_file(self._current_mar_url(),
- self._current_mar_filename())
- else:
- self.info('%s already exists, skipping download' % (self._current_mar_filename()))
- return self._current_mar_filename()
+ def _get_current_mar(self, locale):
+ """returns the path of current mar file"""
+ # current completed mar is generated, not downloaded
+ if not os.path.exists(self._current_mar_filename(locale)):
+ self.fatal('current mar is missing, locale %s' % (locale))
+ self.fatal('did you execute generate_complete_mar() ?')
+ return self._current_mar_filename(locale)
def _get_previous_mar(self, locale):
"""downloads the previous mar file"""
self.mkdir_p(self._previous_mar_dir())
self.download_file(self._previous_mar_url(locale),
- self._previous_mar_filename())
- return self._previous_mar_filename()
+ self._previous_mar_filename(locale))
+ return self._previous_mar_filename(locale)
- def _current_mar_name(self):
+ def _current_mar_name(self, locale):
"""returns current mar file name"""
config = self.config
version = self.query_version()
- return config["current_mar_filename"] % {'version': version}
+ return config["current_mar_filename"] % {'version': version,
+ 'locale': locale, }
def _localized_mar_name(self, locale):
"""returns localized mar name"""
config = self.config
version = self.query_version()
return config["localized_mar"] % {'version': version, 'locale': locale}
- def _previous_mar_filename(self):
+ def _previous_mar_filename(self, locale):
"""returns the complete path to previous.mar"""
config = self.config
return os.path.join(self._previous_mar_dir(),
config['previous_mar_filename'])
- def _current_mar_filename(self):
+ def _current_mar_filename(self, locale):
"""returns the complete path to current.mar"""
- return os.path.join(self._current_mar_dir(), self._current_mar_name())
+ return os.path.join(self._current_mar_dir(), self._current_mar_name(locale))
def _create_mar_dirs(self):
"""creates mar directories: previous/ current/"""
for directory in (self._previous_mar_dir(),
self._current_mar_dir()):
self.info("creating: %s" % directory)
self.mkdir_p(directory)
@@ -1093,13 +1146,32 @@ class DesktopSingleLocale(LocalesMixin,
"""returns a list of .pcf files in basedir"""
pgc_files = []
for dirpath, dirnames, filenames in os.walk(basedir):
for pgc in filenames:
if pgc.endswith('.pgc'):
pgc_files.append(os.path.join(dirpath, pgc))
return pgc_files
+ def _run_tooltool(self):
+ config = self.config
+ dirs = self.query_abs_dirs()
+ if not config.get('tooltool_manifest_src'):
+ return self.warning(ERROR_MSGS['tooltool_manifest_undetermined'])
+ fetch_script_path = os.path.join(dirs['abs_tools_dir'],
+ 'scripts/tooltool/tooltool_wrapper.sh')
+ tooltool_manifest_path = os.path.join(dirs['abs_mozilla_dir'],
+ config['tooltool_manifest_src'])
+ cmd = [
+ 'sh',
+ fetch_script_path,
+ tooltool_manifest_path,
+ config['tooltool_url'],
+ config['tooltool_bootstrap'],
+ ]
+ cmd.extend(config['tooltool_script'])
+ self.info(str(cmd))
+ self.run_command(cmd, cwd=dirs['abs_mozilla_dir'], halt_on_failure=True)
# main {{{
if __name__ == '__main__':
single_locale = DesktopSingleLocale()
single_locale.run_and_exit()