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 is
-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
DONE TO HERE
~/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
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
Push Major Update
Symlink update
Remove index.html files
Once we are fully announced we can remove the index.html files:
cd /pub/mozilla.org/firefox/releases/3.6/ find . -name index.html | less find . -name index.html | xargs rm -v