Software Update:Nightly update infrastructure: Difference between revisions

no edit summary
No edit summary
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<font color=red>'''This document is out of date. Tinderbox is no longer in use, partials are generated during nightly builds instead of on a dedicated box, and there's a var=value format for snippets.'''</font>
=Overview=
=Overview=


Updates are available for nightly builds of Firefox, Thunderbird and Sunbird. Keeping this system running requires the coordination of tinderbox configuration, partial update generation, and the AUS server that provides update information the client applications. This document describes how that all works, to the extent that publicly available information allows. Hopefully the build crew and Mike Morgan can fill out the details to make this page more complete.
Updates are available for nightly builds of Firefox, Thunderbird and Sunbird. Keeping this system running requires the coordination of tinderbox configuration, partial update generation, and the AUS server that provides update information to the client applications. This document describes how that all works, to the extent that publicly available information allows. Hopefully the build crew and Mike Morgan can fill out the details to make this page more complete.


Supported app versions:  
Supported app versions:  
* Firefox & Thunderbird on the branches for 1.5.0.x and 2.0.0.y, and on the trunk
* Firefox & Thunderbird on the branches for 1.5.0.x and 2.0.0.y, and on the trunk
* Sunbird is trunk only
* Sunbird on the Mozilla1.8 branch and trunk
Supported platforms:  
Supported platforms:  
* the three Tier-1 platforms of Windows, Linux, and Macintosh Universal (PPC+Intel)  
* the three Tier-1 platforms of Windows, Linux, and Macintosh Universal (PPC+Intel)  
Supported locales:
Supported locales:
* en-US only
* en-US only
* en-US with a language pack (ab-CD.xpi) will update the app, but not the language pack (bugs [https://bugzilla.mozilla.org/show_bug.cgi?id=334136 334136], [https://bugzilla.mozilla.org/show_bug.cgi?id=313453 313453]). Mozilla1.8 branch and trunk only


=Tinderbox=
=Tinderbox=
Line 31: Line 34:
  ac_add_options --enable-update-packaging
  ac_add_options --enable-update-packaging


This option ensures that the update-packaging and (m)bsdiff Makefile's are created. This is true for both the trunk and 1.8 branches.
This option ensures that the update-packaging and (m)bsdiff Makefile's are created.  


The mar executable (mozilla/modules/libmar/tool) is built by default and copied into $objdir/dist/host/bin.
The mar executable (mozilla/modules/libmar/tool) is built by default and copied into $objdir/dist/host/bin.
Line 41: Line 44:
A handful of variables in tinder-config.pl control the update and snippet generation on the tinderbox. The code is [http://lxr.mozilla.org/mozilla/source/tools/tinderbox/post-mozilla-rel.pl#464 mozilla/tools/post-mozilla-rel.pl::update_create_package] and runs after the successful completion of the build and any tests.
A handful of variables in tinder-config.pl control the update and snippet generation on the tinderbox. The code is [http://lxr.mozilla.org/mozilla/source/tools/tinderbox/post-mozilla-rel.pl#464 mozilla/tools/post-mozilla-rel.pl::update_create_package] and runs after the successful completion of the build and any tests.


{| border=1
{| class="fullwidth-table"
|-  
|-  
| Variable || Example value || Use
| Variable || Example value || Use
Line 82: Line 85:
  2.0a2
  2.0a2


And here is the relevant part of the tinderbox log (from almost at the very end):
And here is the relevant part of the tinderbox log (from almost the very end):
  Gathering complete update info...
  Gathering complete update info...
  Got build ID 2006051002.
  Got build ID 2006051002.
Line 140: Line 143:
From version 3.0a9 of Firefox, the preference app.update.url was changed to:
From version 3.0a9 of Firefox, the preference app.update.url was changed to:


<tt>https://aus2.mozilla.org/update/3/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml</tt>
https://aus2.mozilla.org/update/3/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml


The schema version was bumped to 3, and distribution and distribution version fields were added.  These additional fields are optional, and will be used by AUS to be able to deliver updates to customized distributions of Firefox.
The schema version was bumped to 3, and distribution and distribution version fields were added.  These additional fields are optional, and will be used by AUS to be able to deliver updates to customized distributions of Firefox.  See [https://bugzilla.mozilla.org/show_bug.cgi?id=392496 bug 392496] for details.


==AUS itself==
==AUS itself==


To provide this content, AUS maps the client version (%VERSION%) from the request to $update_version of snippet store. This was the mapping on May 15 2006:
To provide this content, AUS maps the client version (%VERSION%) from the request to $update_version of snippet store. This was the mapping on Oct 02 2007, which uses wildcard matches since [https://bugzilla.mozilla.org/show_bug.cgi?id=364628 bug 364628]:
'1.0+', '1.4', '1.4.1', '1.5' => '1.5',
    'Firefox'     => array(
'1.5.0.1' => '1.5.0.1',
        '1.5.0.*' => '1.5.0.x',
'1.5.0.2' => '1.5.0.2',
        '2.0*'   => '2.0',
'1.5.0.3' => '1.5.0.3',
        '3.0a*'   => 'trunk'
  '1.5.0.4' => '1.5.0.4',
    ),
'2.0', '2.0a1', '2.0a2', '2.0a3', '2.0b1', '2.0b2' => '2.0',
    'Thunderbird' => array(
'1.6a1', '3.0a1' => 'trunk'
        '1.5.0.*' => '1.5.0.x',
(This is a more compact form of the [http://lxr.mozilla.org/mozilla/source/webtools/aus/xml/inc/config-dist.php actual definition], each mapping should be on it's own line)
        '2.0*'   =>  '2.0',
        '3.0a*'   =>  'trunk'
    ),
    'Sunbird'     =>  array(
        '0.7*'   => 'branch',
        '0.6a1'   => 'trunk'
    )
This is an abbreviated version with only the versions still in use (except Firefox 1.5.0.x, which is beyond end-of-life), the current config is [http://lxr.mozilla.org/mozilla/source/webtools/aus/xml/inc/config-dist.php#83 here].


So there is a many to one relationship between application versions from a code branch to an AUS disk location. Eg: The Mozilla1.8 branch is being used for developement of v2.0 and will have versions 2.0a1, a2, a3, b1,b2, RC1, ... and finally 2.0. The situation with the Mozilla1.8.0 branch needs fixing up (partly [https://bugzilla.mozilla.org/show_bug.cgi?id=328497 Bug 328497]), an $update_version of "1.5.x.y" would be flexible.
There is a many-to-one relationship between application versions from a code branch to an AUS disk location. Eg: The Mozilla1.8 branch is being used for development of v2.0 and will have versions 2.0a1, a2, a3, b1,b2, RC1, 2.0 final and all the 2.0.0.x security releases.
Confirmed users
4,293

edits