Releases/Firefox 2.0.0.16-3.0.1 MU:BuildNotes: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 205: Line 205:
  cd ../20080820-Firefox-2.0.0.16-3.0.1-MU-beta/
  cd ../20080820-Firefox-2.0.0.16-3.0.1-MU-beta/
  find . -maxdepth 5 -mindepth 5 | grep 'ja-JP-mac' | xargs rm -rfv
  find . -maxdepth 5 -mindepth 5 | grep 'ja-JP-mac' | xargs rm -rfv
= '''HOW TO PUSH TO BETA''' =
To push to beta the following directories need to be pushsnip'ed on aus2-staging:
# contains every locale except 'sl'
/opt/aus2/snippets/staging/20080820-Firefox-2.0.0.16-3.0.1-MU-beta
# only contains 'sl'
/opt/aus2/snippets/staging/20080821-Firefox-MU-sl-only-beta
= '''HOW TO PUSH TO RELEASE''' =
To push to release the following directories need to be pushsnip'ed on aus2-staging:
# contains every locale except 'sl'
/opt/aus2/snippets/staging/20080820-Firefox-2.0.0.16-3.0.1-MU
# only contains 'sl'
/opt/aus2/snippets/staging/20080821-Firefox-MU-sl-only

Revision as of 22:14, 21 August 2008

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

# 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

HOW TO PUSH TO BETA

To push to beta the following directories need to be pushsnip'ed on aus2-staging:

# contains every locale except 'sl'
/opt/aus2/snippets/staging/20080820-Firefox-2.0.0.16-3.0.1-MU-beta
# only contains 'sl'
/opt/aus2/snippets/staging/20080821-Firefox-MU-sl-only-beta

HOW TO PUSH TO RELEASE

To push to release the following directories need to be pushsnip'ed on aus2-staging:

# contains every locale except 'sl'
/opt/aus2/snippets/staging/20080820-Firefox-2.0.0.16-3.0.1-MU
# only contains 'sl'
/opt/aus2/snippets/staging/20080821-Firefox-MU-sl-only