Releases/Firefox 3.6/BuildNotes
Until we're about to ship this page will serve as a spot to put down a rough checklist of what needs to be done to ship.
Release Engineers
Tracking Bug
Notes
Stage and Rename files
Much the same as Firefox 3.5.
# ffxbld@stage mkdir firefox-3.6 cd firefox-3.6 rsync -av --exclude='*partial.mar' --exclude=source --exclude=*SUMS /pub/mozilla.org/firefox/releases/3.6rc2/ . find contrib linux-i686 update -type f | perl -nle '$nf = $_; if ( $nf =~ s/rc2// ) { system("mv","-v",$_,$nf)}' find mac win32 -type f | perl -nle '$nf = $_; if ( $nf =~ s/\ RC\ 2// ) { system("mv","-v",$_,$nf)};' wget -O../firefox-3.6-shipped-locales http://hg.mozilla.org/releases/mozilla-1.9.2/raw-file/FIREFOX_3_6rc2_RELEASE/browser/locales/shipped-locales ~cltbld/bin/verify-locales.pl -m ~/firefox-3.6-shipped-locales -l bz2 ~cltbld/bin/checksum-files . chown -R ffxbld:firefox linux-i686 mac update win32 chmod 644 *SUMS
Content verification
find /pub/mozilla.org/firefox/releases/3.6rc2/ -type f | perl -nle '$a = substr($_,41); $a =~ s/rc2//; $a =~ s/\ RC\ 2//; system("diff","-q",$_,$a);'
Output:
diff: contrib/solaris_tarball/firefox-3.6rc1-3.6.en-US.solaris-10-fcs-sparc.partial.mar: No such file or directory diff: contrib/solaris_tarball/firefox-3.6rc1-3.6.en-US.solaris-10-fcs-i386.partial.mar: No such file or directory diff: contrib/solaris_tarball/firefox-3.6rc1-3.6.en-US.opensolaris-i386.partial.mar: No such file or directory diff: contrib/solaris_tarball/firefox-3.6rc1-3.6.en-US.opensolaris-sparc.partial.mar: No such file or directory diff: source/firefox-3.6.bundle.asc: No such file or directory diff: source/firefox-3.6.bundle: No such file or directory diff: source/firefox-3.6.source.tar.bz2.asc: No such file or directory diff: source/firefox-3.6.source.tar.bz2: No such file or directory diff: update/linux-i686/af/firefox-3.6rc1-3.6.partial.mar: No such file or directory diff: update/linux-i686/ar/firefox-3.6rc1-3.6.partial.mar: No such file or directory ... diff: update/win32/zh-CN/firefox-3.6rc1-3.6.partial.mar: No such file or directory diff: update/win32/zh-TW/firefox-3.6rc1-3.6.partial.mar: No such file or directory Files /pub/mozilla.org/firefox/releases/3.6rc2/MD5SUMS and MD5SUMS differ Files /pub/mozilla.org/firefox/releases/3.6rc2/SHA1SUMS and SHA1SUMS differ
Everything above is expected: We don't want the partials, we regenerated *SUMS because of filename changes, and we haven't yet regenerated source packages yet.
Ownernship/permission verification
find . ! -user ffxbld find . ! -group firefox find . -type f ! -perm 644 find . -mindepth 1 -type d ! -perm 755 ! -name 'contrib*' find . -maxdepth 1 -type d ! -perm 2775 -name 'contrib*'
Virus check
This will have been done for 3.6rc2 and background scans but double check
clamscan -r --quiet -i .
No problems found.
Add index files
curl -sL https://bugzilla.mozilla.org/attachment.cgi?id=422468 > index.html for dir in `find . -type d -mindepth 1`; do cp -pv index.html $dir/; done
Generate major update
We currently have majortest snippets pointing at 3.6rc2 in bouncer but we should point at the 3.6 files for tracking purposes. Also need to have a releasetest channel for QA to check. Updated config.
Snippet generation
On fx-linux-1.9-slave2:
mkdir -p /builds/3.5.7-3.6-major-update cd /builds/3.5.7-3.6-major-update export CVSROOT=:ext:cltbld@cvs.mozilla.org:/cvsroot cvs co -d patcher-configs mozilla/tools/patcher-configs cvs co -r UPDATE_PACKAGING_R10 -d patcher mozilla/tools/patcher cd patcher cvs co -r UPDATE_PACKAGING_R10 -d MozBuild mozilla/tools/release/MozBuild # build tools ./patcher2.pl --build-tools --app=firefox --tools-rev=UPDATE_PACKAGING_R10 --config=../patcher-configs/moz191-branch-major-update-patcher2.cfg 2>&1 | tee ../firefox_build-tools.log # fake 3.5.7 mars, which aren't used for anything but take time to d/l mkdir -p temp/firefox/3.5.7/ftp/ for l in af ar as be bg bn-BD bn-IN ca cs cy da de el en-GB en-US eo es-AR es-CL es-ES es-MX et eu fa fi fr fy-NL ga-IE gl gu-IN he hi-IN hr hu id is it ja ja-JP-mac ka kk kn ko ku lt lv mk ml mn mr nb-NO nl nn-NO oc or pa-IN pl pt-BR pt-PT rm ro ru si sk sl sq sr sv-SE ta ta-LK te th tr uk vi zh-CN zh-TW; do touch temp/firefox/3.5.7/ftp/firefox-3.5.7.${l}.{linux-i686,mac,win32}.complete.mar done # download mars ./patcher2.pl --download --app=firefox --config=../patcher-configs/moz191-branch-major-update-patcher2.cfg 2>&1 | tee ../firefox_download.log # FIXME - patcher needs to see that the MARs that it thinks are partials # are there or else it will not attempt to generate patchinfo cd temp/firefox mkdir 3.5.7-3.6rc2 ln -s ../3.6rc2/ftp 3.5.7-3.6rc2/ftp cd ../.. # Create partial patches and snippets ./patcher2.pl --create-patches --app=firefox --config=../patcher-configs/moz191-branch-major-update-patcher2.cfg 2>&1 | tee ../firefox-create-patches.log
Quick verify
Check that releasetest = beta = release.
cd temp/firefox/3.5.7-3.6rc2 # releasetest == beta find aus2.test -type d -iregex '.*/releasetest$' | perl -nle '$a = $_; $a =~ s/releasetest/beta/; $a =~ s/aus2\.test/aus2/; system("diff -r -u $_ $a");' find aus2 -type d -iregex '.*/beta$' | perl -nle '$a = $_; $a =~ s/beta$/releasetest/; $a =~ s/aus2/aus2.test/; system("diff -r -u $_ $a");' # beta == release find aus2 -type d -iregex '.*/beta$' | perl -nle '$a = $_; $a =~ s/beta/release/; system("diff -r -u $_ $a");' find aus2 -type d -iregex '.*/release$' | perl -nle '$a = $_; $a =~ s/release$/beta/; system("diff -r -u $_ $a");'
No output, as expected. Also verified that the only changes from what QA has tested are
-url=http://download.mozilla.org/?product=firefox-3.6-complete&os=linux&lang=bg +url=http://download.mozilla.org/?product=firefox-3.6rc2-complete&os=linux&lang=bg ... -appv=3.6 +appv=3.6 RC 2
We'll run update verify to confirm that bouncer is doing the right thing.
Push to AUS
rsync -e 'ssh -i /home/cltbld/.ssh/aus' -av aus2.test/ cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20100120-Firefox-3.5.7-3.6final-MU-test rsync -e 'ssh -i /home/cltbld/.ssh/aus' -av aus2/ cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20100120-Firefox-3.5.7-3.6final-MU
Enable test snippets
# cltbld@aus2-staging ~/bin/backupsnip 20100120-Firefox-3.5.7-3.6final-MU-test ~/bin/pushsnip 20100120-Firefox-3.5.7-3.6final-MU-test
Update verify
Ran update verify on fx-{linux,mac,win32}-1.9-slave2 as follows:
mkdir -p /builds/verify/firefox-357-36final-major/ cd /builds/verify/firefox-357-36final-major/ hg clone http://hg.mozilla.org/build/tools # get patch to trawl "Only in" directories cd tools/release/common # on mac & linux curl -sL https://bugzilla.mozilla.org/attachment.cgi?id=367544 | patch -p3 # on win32 wget --no-check-certificate -O patch https://bugzilla.mozilla.org/attachment.cgi?id=367544 patch -p3 < patch # everyone ... cd ../updates ## get un-checked in configs wget --no-check-certificate -O patch https://bug540666.bugzilla.mozilla.org/attachment.cgi?id=422695 patch -p3 < patch ## end of config get platform=linux # or mac or win32 ./verify.sh -c moz191-firefox-$platform-major.cfg 2>&1 | tee $platform.log
Results:
Locale specific (all platforms)
- No update found for mn because that's not available for 3.6
- bug 538570 needs to land in a point release to fix this issue with Italian
Only in source/firefox/searchplugins: demauro.xml
- Linux: No other differences
- Mac: Leftover empty directories
Only in source/Firefox.app/Contents: Plug-Ins Contents of source/Firefox.app/Contents/Plug-Ins dir only in source or target 1756043387 0 drwxr-xr-x 3 cltbld cltbld 102 Dec 21 17:24 source/Firefox.app/Contents/Plug-Ins/PrintPDE.plugin 1756043388 0 drwxr-xr-x 4 cltbld cltbld 136 Jan 21 03:27 source/Firefox.app/Contents/Plug-Ins/PrintPDE.plugin/Contents 1756043389 0 drwxr-xr-x 2 cltbld cltbld 68 Jan 21 03:27 source/Firefox.app/Contents/Plug-Ins/PrintPDE.plugin/Contents/MacOS 1756043390 0 drwxr-xr-x 3 cltbld cltbld 102 Dec 21 17:24 source/Firefox.app/Contents/Plug-Ins/PrintPDE.plugin/Contents/Resources 1756043391 0 drwxr-xr-x 3 cltbld cltbld 102 Jan 21 03:27 source/Firefox.app/Contents/Plug-Ins/PrintPDE.plugin/Contents/Resources/English.lproj 1756043392 0 drwxr-xr-x 2 cltbld cltbld 68 Jan 21 03:27 source/Firefox.app/Contents/Plug-Ins/PrintPDE.plugin/Contents/Resources/English.lproj/PrintPDE.nib
- Windows: All the normal suspects, no problems
Only in source/bin: .autoreg Binary files source/bin/freebl3.chk and target/bin/freebl3.chk differ Binary files source/bin/nssdbm3.chk and target/bin/nssdbm3.chk differ Only in source/bin: removed-files Binary files source/bin/softokn3.chk and target/bin/softokn3.chk differ
Mirror related
- turned ftp.ankara.edu.tr down from 1350 to 300 as I was getting 1KB/s from them. Later down to 100 to try to ensure users don't get poor transfer rates
Bouncer Setup
win32, linux, mac + 4 solaris for installer, and again for complete update. ie no WinCE done.
Tag and Source package regeneration
Used the automation to add the FIREFOX_3_6_RELEASE tag on mozilla-1.9.2 and l10n repositories. Two patches needed
Landed and reconfig master. Backout buildbotcustom patch. Set clobbers on mozilla-1.9.2, tag & source, any master. (bug 500473 is open to support this properly.)
Forced the tag step, which worked for l10n but took the top of the relbranch instead of the FIREFOX_3_6rc2_RELEASE revision. Setting 'build = 2' would have avoided this. Fix:
# cltbld@moz2-linux-slave20 cd /builds/slave/tag/mozilla-1.9.2 hg tag -f -u ffxbld -f -r 448d0d2d310c -m "Moved tag FIREFOX_3_6_RELEASE to changeset 448d0d2d310c (as release automation incorrectly chose the tip of the relbranch). CLOSED TREE" FIREFOX_3_6_RELEASE hg push -e "ssh -l ffxbld -i ~cltbld/.ssh/ffxbld_dsa" -f ssh://hg.mozilla.org/releases/mozilla-1.9.2
Then force the source step and then moved firefox/nightly/3.6-candidates/ away
# ffxbld @ stage rsync -av /pub/mozilla.org/firefox/nightly/3.6-candidates/ ~/3.6-candidates/ && rm -rf /pub/mozilla.org/firefox/nightly/3.6-candidates cd ~/firefox-3.6 rsync -av ~/3.6-candidates/build1/source/ source/ ~cltbld/bin/checksum-files .
NB: This actually includes revision 4289e7a61d2f, which is not part of the release build. We can't assume the tip of the relbranch
Then, pull the source/ dir and SUMS files onto the signing machine and generate a sigs for them:
mkdir -p ~/signing-work/firefox-3.6 cd ~/signing-work/firefox-3.6 cvs -d:ext:cltbld@cvs.mozilla.org:/mofo co -d signing release/signing/tools rsync -av -e 'ssh -i /home/cltsign/.ssh/ffxbld_dsa' ffxbld@stage.mozilla.org:~/firefox-3.6/source stage-unsigned/ rsync -av -e 'ssh -i /home/cltsign/.ssh/ffxbld_dsa' ffxbld@stage.mozilla.org:~/firefox-3.6/*SUMS stage-unsigned/ rsync -av stage-unsigned/ stage-signed/ cd stage-signed/ ../signing/sign-files . cd .. # should only push 4 x asc here, two for source files, 2 for SUMS rsync -nav -e 'ssh -i /home/cltsign/.ssh/ffxbld_dsa' stage-signed/ ffxbld@stage.mozilla.org:~/firefox-3.6/ rsync -av -e 'ssh -i /home/cltsign/.ssh/ffxbld_dsa' stage-signed/ ffxbld@stage.mozilla.org:~/firefox-3.6/
Push to Mirrors
Push the covering index.html to mirrors ahead of the main push:
rsync -av --exclude 'contrib*' --exclude '*.exe' --exclude '*.dmg' \ --exclude '*.bz2' --exclude '*.asc' --exclude '*.mar' --exclude '*.xpi' \ --exclude '*.bundle' --exclude '*SUMS' --exclude KEY \ /home/ffxbld/firefox-3.6/ /pub/mozilla.org/firefox/releases/3.6/
Redid 'Ownernship/permission verification', then pushed the files (complete Jan 22 20:22 PST):
rsync -av /home/ffxbld/firefox-3.6/ /pub/mozilla.org/firefox/releases/3.6/
Update rsync modules
Updated stage:/pub/mozilla.org/zz/rsyncd-mozilla-current.exclude as cltbld to include 3.6. Removed both Thunderbird's to keep module small, and they get lots of coverage from mozilla-releases anyway.
Push Major Update
# cltbld@aus2-staging ~/bin/backupsnip 20100120-Firefox-3.5.7-3.6final-MU
After verifying billboards are in place on mozilla.com and go from driver
~/bin/pushsnip 20100120-Firefox-3.5.7-3.6final-MU
Symlink update
# ffxbld@stage ln -s 3.6 latest-3.6 rm latest; ln -s latest-3.6 latest
Remove index.html files
Once we are fully announced we can remove the index.html files:
# ffxbld@stage cd /pub/mozilla.org/firefox/releases/3.6/ find . -name index.html | less find . -name index.html | xargs rm -v