Releases/Firefox 2.0.0.16-3.0.1 MU:BuildNotes
Contents
- 1 Release Engineers
- 2 Bugs
- 3 Generate Major Update Snippets
- 4 Generate Null Partner Snippets
- 5 Push snippet directories to aus2-staging
- 6 Push null & test snippets live
- 7 Fix up null partner snippets to target 2.0.0.14
- 8 Verify null partner updates
- 9 Update verify
- 10 Add 'sl' MU snippets + null partner snippets
- 11 Separate ja-JP-mac snippets into a separate directory
- 12 update-verify log
- 13 Push update snippets to beta channel
- 14 Push update snippets to release channel
Release Engineers
Nick Thomas (major update test)
Ben Hearsum (real snippet generation, null partner updates)
Bugs
bug 442105 - tracking bug
bug 450863 - null partner updates
Generate Major Update Snippets
# ssh cltbld@prometheus-vm.build.mozilla.org cd /builds/2.0.0.16-major-update/snippets cvs -d:ext:ffxbld@cvs.mozilla.org:/cvsroot co -d patcher mozilla/tools/patcher cd patcher cvs -d:ext:ffxbld@cvs.mozilla.org:/cvsroot co -d MozBuild mozilla/tools/release/MozBuild cd ../ cvs -d:ext:ffxbld@cvs.mozilla.org:/cvsroot co -d patcher-configs mozilla/tools/patcher-configs
cd patcher export CVSROOT=:ext:ffxbld@cvs.mozilla.org:/cvsroot
# build tools ./patcher2.pl --build-tools --app=firefox --tools-rev=UPDATE_PACKAGING_R4 --config=../patcher-configs/moz18-branch-major-update-patcher2.cfg 2>&1 | tee ../firefox_build-tools.log
# download mars ./patcher2.pl --download --app=firefox --config=../patcher-configs/moz18-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 ln -s 3.0.1 2.0.0.16-3.0.1
# Create partial patches and snippets ./patcher2.pl --create-patches --app=firefox --config=../patcher-configs/moz18-branch-major-update-patcher2.cfg 2>&1 | tee ../firefox-create-patches.log
Generate Null Partner Snippets
Create Partner Channel List
Starting with https://bugzilla.mozilla.org/attachment.cgi?id=334332
# Removed any channels that don't start with 'release-' from the list # Now, we only have a list of the real release channels for partner builds # we need to add beta and test channels to the list: for i in `cat partner-update-channels`; do basechan=`echo $i | sed -e 's/release-//'` && echo "beta-$basechan" >> partner-update-channels && echo "betatest-$basechan" >> partner-update-channels && echo "releasetest-$basechan" >> partner-update-channels; done # now, we have all the channels we need except for the 4 listed at the start # because the real release channels aren't prepended with 'release' we will do this different: for i in [list of channels that don't start with release-]; do echo $i >> partner-update-channels && echo "beta-$i" >> partner-update-channels && echo "betatest-$i" >> partner-update-channels && echo "releasetest-$i" >> partner-update-channels; done # now we have a complete list of partner channels to generate snippets for
Generate null snippets
updated null_partners.sh with 2.0.0.16 buildids, and enabled it to read a list of partner channels from an external file - rev 1.3
# ssh cltbld@prometheus-vm.build.mozilla.org cd /builds/2.0.0.16-major-update/snippets/patcher/temp/firefox/2.0.0.16-3.0.1 bash ../../../one-offs/null_partners.sh ../../../partner-update-channels
Create beta snippet dir
rsync -a aus2/ aus2.beta/
Trim snippets from release, beta, test dirs
Our 'aus2.test' directory should only contain 'releasetest-*' and 'betatest-*' snippets. Similarly, 'aus2.beta' should only contain 'beta-*' snippets and 'aus2' should only have 'release-*'
# beta find aus2.beta/ -type d -name "release*" -exec rm -rfv {} \; 2>&1 | tee -a beta_remove.log find aus2.beta/ -type d -name "releasetest*" -exec rm -rfv {} \; 2>&1 | tee -a beta_remove.log find aus2.beta/ -type d -name "betatest*" -exec rm -rfv {} \; 2>&1 | tee -a beta_remove.log # these ones get rid of those funny channels find aus2.beta/ -type d -name "default*" -exec rm -rfv {} \; 2>&1 | tee -a beta_remove.log find aus2.beta/ -type d -name "nightly*" -exec rm -rfv {} \; 2>&1 | tee -a beta_remove.log find aus2.beta/ -type d -name "Windows*" -exec rm -rfv {} \; 2>&1 | tee -a beta_remove.log # release find aus2/ -type d -name "beta*" -exec rm -rfv {} \; 2>&1 | tee -a release_remove.log find aus2/ -type d -name "releasetest*" -exec rm -rfv {} \; 2>&1 | tee -a release_remove.log find aus2/ -type d -name "betatest*" -exce rm -rfv {} \; 2>&1 | tee -a release_remove.log # test find aus2.test/ -type d -name "release-*" -exec rm -rfv {} \; 2>&1 | tee -a test_remove.log find aus2.test/ -type d -name "beta-*" -exec rm -rfv {} \; 2>&1 | tee -a test_remove.log # these ones get rid of those funny channels find aus2.test/ -type d -name "default*" -exec rm -rfv {} \; 2>&1 | tee -a test_remove.log find aus2.test/ -type d -name "nightly*" -exec rm -rfv {} \; 2>&1 | tee -a test_remove.log find aus2.test/ -type d -name "Windows*" -exec rm -rfv {} \; 2>&1 | tee -a test_remove.log
Move null snippets to their own directory
mkdir aus2.null rsync -av aus2/ aus2.null/ rsync -av aus2.beta/ aus2.null/ rsync -av aus2.test/ aus2.null/ # trim non-partner snippets from the null directory find aus2.null -type d -mindepth 6 -maxdepth 6 | egrep '.*\/(release|releasetest|beta|betatest)$' | xargs rm -rfv 2>&1 | tee -a ../null_remove.log # trim partner snippets from the other directories find aus2.test -type d -mindepth 6 -maxdepth 6 | egrep '.*\/(release|beta)test-.*$' | xargs rm -rfv 2>&1 | tee -a ../test_remove.log find aus2.beta -type d -mindepth 6 -maxdepth 6 | egrep '.*\/beta-.*$' | xargs rm -rfv 2>&1 | tee -a ../beta_remove.log find aus -type d -mindepth 6 -maxdepth 6 | egrep -v '.*\/release$' | xargs rm -rfv 2>&1 | tee -a ../release_remove.log
Verify correct snippets are in correct directories
Make sure that only betatest/releasetest snippets are in aus2.test, beta snippets in aus2.beta, and release snippets in aus2 # aus2.null find aus2.null -type d -mindepth 6 -maxdepth 6 | cut -d / -f 7 | egrep '^(release-*|releasetest-*|beta-*|betatest-*)' # aus2.test find aus2.test -type d -mindepth 6 -maxdepth 6 | cut -d / -f 7 | egrep -v '^(beta|release)test$' # no output # beta find aus2.beta -type d -mindepth 6 -maxdepth 6 | cut -d / -f 7 | egrep -v '^beta$' # no output # release find aus2 -type d -mindepth 6 -maxdepth 6 | cut -d / -f 7 | egrep -v '^release$'
Push snippet directories to aus2-staging
rsync -e 'ssh -i /home/cltbld/.ssh/aus' -av aus2 cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20080820-Firefox-2.0.0.16-3.0.1-MU rsync -e 'ssh -i /home/cltbld/.ssh/aus' -av aus2-beta cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20080820-Firefox-2.0.0.16-3.0.1-MU-beta rsync -e 'ssh -i /home/cltbld/.ssh/aus' -av aus2-test cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20080820-Firefox-2.0.0.16-3.0.1-MU-test rsync -e 'ssh -i /home/cltbld/.ssh/aus' -av aus2-null cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20080820-Firefox-2.0.0.16-3.0.1-MU-null
Push null & test snippets live
cd /opt/aus2/snippets/staging ~/bin/backupsnip 20080820-Firefox-2.0.0.16-3.0.1-MU-null ~/bin/pushsnip 20080820-Firefox-2.0.0.16-3.0.1-MU-null ~/bin/backupsnip 20080820-Firefox-2.0.0.16-3.0.1-MU-test ~/bin/pushsnip 20080820-Firefox-2.0.0.16-3.0.1-MU-test
Fix up null partner snippets to target 2.0.0.14
After partner snippets were pushed I was informed that the latest partner builds we shipped were for 2.0.0.14. Therefore, the snippets pushed are useless. To fix them up, did the following:
# cltbld@prometheus-vm cd /builds/2.0.0.16-major-update/snippets/patcher/temp/firefox/2.0.0.16-3.0.1 cd aus2.null/Firefox mv 2.0.0.16 2.0.0.14 cd 2.0.0.14/Darwin_Universal-gcc3 mv 2008070205 2008040413 cd ../Linux_x86-gcc3 mv 2008070204 2008040414 cd ../WINNT_x86-msvc mv 2008070205 2008040413
Also had to generate snippets for another partner channel for 2.0.0.16 (https://bugzilla.mozilla.org/show_bug.cgi?id=450863#c5) To do that, did the following:
cd /builds/2.0.0.16-major-update/snippets/patcher echo "release-cck-asus-google" >> additional-partner-channels echo "releasetest-cck-asus-google" >> additional-partner-channels echo "beta-cck-asus-google" >> additional-partner-channels echo "betatest-cck-asus-google" >> aditional-partner-channels cd temp/firefox/2.0.0.16-3.0.1 # modified null_partners.sh to only generage snippets in aus2.null bash ../../../one-offs/null_partners.sh ../../../additional-partner-channels
Did a spot check of aus2.null, looked good. Pushed new snippets to aus2-staging:
rsync -e 'ssh -i /home/cltbld/.ssh/aus' -av aus2.null cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20080821-Firefox-MU-null-partner-snippets
Verify null partner updates
Modified create_aus_urls.txt to use a different set of locales for each platform and read partner channels from a file. Lists of locales for each platform are in ${platform}_locales.txt. List of partner channels in partner-update-channels. Generated URLs as follows:
./create_aus_urls.sh
Used test_null_updates.sh to test all snippets:
./test_null_updates.sh mu-2.0.0.14-3.0.1-null-urls.txt 2>&1 | tee before.log # grep the log for any non-passes grep -v '^PASS' # no output - everything is good!
Update verify
Ran update verify on fx-{linux,mac,win32}-1.9-slave2 as follows:
mkdir -p /builds/verify/firefox-20016-301-real-major/ cd /builds/verify/firefox-20016-301-real-major/ cvs -d cltbld@cvs.mozilla.org:/cvsroot co -d updates mozilla/testing/release/updates/ cvs -d cltbld@cvs.mozilla.org:/cvsroot co -d common mozilla/testing/release/common/ # get patch to trawl "Only in" directories cd common # on mac & linux curl -s https://bugzilla.mozilla.org/attachment.cgi?id=304252 | patch -p0 # on win32 wget --no-check-certificate -O patch https://bugzilla.mozilla.org/attachment.cgi?id=304252 patch -p0 < patch cd ../updates
./verify.sh -c moz18-firefox-$platform-major.cfg 2>&1 | tee $platform.log # had to kick along some of them because they hit slow bouncer mirrors. # did this by killing the wget process (which makes it retry)
Add 'sl' MU snippets + null partner snippets
sl was missed in the patcher config file for the original run :(. To fix, re-ran steps 3 and 4.2 from above. Then separated out beta snippets into their own directory:
rsync aus2/ aus2.beta/ find aus2/ -type d -name "beta*" -exec rm -rfv {} \; 2>&1 | tee -a release_remove.log find aus2.beta/ -type d -name "release*" -exec rm -rfv {} \; 2>&1 | tee -a beta_remove.log
Then synced sl snippets over to aus2-staging:
rsync -e 'ssh -i /home/cltbld/.ssh/aus' -av aus2/ cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20080821-Firefox-MU-sl-only/ rsync -e 'ssh -i /home/cltbld/.ssh/aus' -av aus2.test/ cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20080821-Firefox-MU-sl-only-test/ rsync -e 'ssh -i /home/cltbld/.ssh/aus' -av aus2.beta/ cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20080821-Firefox-MU-sl-only-beta/
rsync -e 'ssh -i /home/cltbld/.ssh/aus' -av aus2.null/ cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20080821-Firefox-MU-sl-only-null-partner-snippets/
Pushed null and test snippets:
~/bin/pushsnip 20080821-Firefox-MU-sl-only-null-partner-snippets ~/bin/pushsnip 20080821-Firefox-MU-sl-only-test
Separate ja-JP-mac snippets into a separate directory
We aren't likely going to be doing a 2.0.0.16->3.0.1 ja-JP-mac update but nonetheless we should keep these snippets around. If we end doing the update the new directories can be pushsnip'ed to enable it. test channel snippets were not separated out, but deleted from the live snippet dirs :(. If we need ja-JP-mac 2.0.0.16->3.0.1 test channel snippets we'll have to regenerate them.
# cltbld@aus2-staging.mozilla.org cd /opt/aus2/snippets/staging rsync -av 20080820-Firefox-2.0.0.16-3.0.1-MU 20080821-Firefox-MU-ja-JP-mac-only rsync -av 20080820-Firefox-2.0.0.16-3.0.1-MU-beta 20080821-Firefox-MU-ja-JP-mac-only-beta cd 20080821-Firefox-MU-ja-JP-mac-only mv 20080820-Firefox-2.0.0.16-3.0.1-MU/Firefox . rmdir 20080820-Firefox-2.0.0.16-3.0.1-MU find . -mindepth 5 -maxdepth 5 | grep -v ja-JP-mac | xargs rm -rfv cd 20080821-Firefox-MU-ja-JP-mac-only-beta mv 20080820-Firefox-2.0.0.16-3.0.1-MU/Firefox-beta . rmdir 20080820-Firefox-2.0.0.16-3.0.1-MU-beta find . -mindepth 5 -maxdepth 5 | grep -v ja-JP-mac | xargs rm -rfv # now remove ja-JP-mac from the original directories cd ../20080820-Firefox-2.0.0.16-3.0.1-MU/ find . -maxdepth 5 -mindepth 5 | grep 'ja-JP-mac' | xargs rm -rfv cd ../20080820-Firefox-2.0.0.16-3.0.1-MU-beta/ find . -maxdepth 5 -mindepth 5 | grep 'ja-JP-mac' | xargs rm -rfv
update-verify log
We manually scanned the update verify logs. Also compared logs with Nick's earlier update verify. Noted some differences in logs for:
sk - mac sl - all ru - linux, mac ja-JP - mac mn - win32 mb-NO - win32 nl - win32
...so ask QA to add these to the spotchecking list. Just in case.
- There is a Bulgarian (bg) locale in FF2.0.0.x, but there is no Bulgarian (bg) locale in FF3.0.x yet. This means we cannot do a major update for bg yet. I confirmed there are no update snippets for bg, so we are all ok.
Push update snippets to beta channel
First do backup:
sudo su - cltbld cd /opt/aus2/snippets/staging time ~/bin/backupsnip 20080820-Firefox-2.0.0.16-3.0.1-MU-beta real 65m41.991s user 1m15.712s sys 1m9.448s
To push to beta the following directories need to be pushsnip'ed on aus2-staging:
# contains every locale except 'sl' time ~/bin/pushsnip 20080820-Firefox-2.0.0.16-3.0.1-MU-beta real 0m12.339s user 0m0.013s sys 0m0.521s # only contains 'sl' time ~/bin/pushsnip 20080821-Firefox-MU-sl-only-beta real 0m0.467s user 0m0.002s sys 0m0.031s
Push update snippets to release channel
- In case you need to cancel/abort updates, the quickest way to do this is here
- First do backup:
sudo su - cltbld cd /opt/aus2/snippets/staging time ~/bin/backupsnip 20080820-Firefox-2.0.0.16-3.0.1-MU
To push to release the following directories need to be pushsnip'ed on aus2-staging:
# contains every locale except 'sl' time ~/bin/pushsnip 20080820-Firefox-2.0.0.16-3.0.1-MU real 0m11.777s user 0m0.019s sys 0m0.590s # only contains 'sl' time ~/bin/pushsnip 20080821-Firefox-MU-sl-only real 0m0.500s user 0m0.003s sys 0m0.044s