Releases/Firefox 3.6/BuildNotes

From MozillaWiki
Jump to navigation Jump to search

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

bug 540666

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:

cd /pub/mozilla.org/firefox/releases/3.6/
find . -name index.html | less
find . -name index.html | xargs rm -v