Releases/Firefox 3.5/BuildNotes: Difference between revisions

 
(36 intermediate revisions by 2 users not shown)
Line 5: Line 5:


= Tracking Bug =
= Tracking Bug =
TBD
{{bug|500442}}


= Notes =
= Notes =
== Generate major update ==
[https://bugzilla.mozilla.org/attachment.cgi?id=385232 Updated] the patcher and update verify configs.
# ssh cltbld@prometheus-vm.build.mozilla.org
mkdir -p /builds/3.0.11-3.5rc3build2-major-update-test/snippets
cd /builds/3.0.11-3.5rc3build2-major-update-test/snippets
cvs -d:ext:ffxbld@cvs.mozilla.org:/cvsroot co -d patcher-configs mozilla/tools/patcher-configs
cvs -d:ext:ffxbld@cvs.mozilla.org:/cvsroot co -r UPDATE_PACKAGING_R8 -d patcher mozilla/tools/patcher
cd patcher
cvs -d:ext:ffxbld@cvs.mozilla.org:/cvsroot co -r UPDATE_PACKAGING_R8 -d MozBuild mozilla/tools/release/MozBuild
export CVSROOT=:ext:ffxbld@cvs.mozilla.org:/cvsroot
# build tools
./patcher2.pl --build-tools --app=firefox --tools-rev=UPDATE_PACKAGING_R8 --config=../patcher-configs/moz19-branch-major-update-patcher2.cfg 2>&1 | tee ../firefox_build-tools.log
# download mars
./patcher2.pl --download --app=firefox --config=../patcher-configs/moz19-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.5rc3 3.0.11-3.5rc3
cd ../..
# Create partial patches and snippets
./patcher2.pl --create-patches --app=firefox --config=../patcher-configs/moz19-branch-major-update-patcher2.cfg 2>&1 | tee ../firefox-create-patches.log
===Separate out beta snippets===
Skipped over this because beta and release will be pushed together, done like [[Releases/Firefox_3.0.x_MUtest/BuildNotes#Separate_out_beta_snippets_4| this]].
===Quick verify===
Check that releasetest = beta = release.
cd temp/firefox/3.0.11-3.5rc3
# 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");'
=== Push to AUS ===
cd /builds/3.0.11-3.5rc3build2-major-update-test/snippets/patcher/temp/firefox/3.0.11-3.5rc3
rsync -e 'ssh -i /home/cltbld/.ssh/aus' -av aus2.test/ cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20090625-Firefox-3.0.11-3.5rc3build2-MU-test
rsync -e 'ssh -i /home/cltbld/.ssh/aus' -av aus2/ cltbld@aus2-staging.mozilla.org:/opt/aus2/snippets/staging/20090625-Firefox-3.0.11-3.5rc3build2-MU
=== Enable test snippets ===
# cltbld@aus2-staging
~/bin/backupsnip 20090625-Firefox-3.0.11-3.5rc3build2-MU-test
~/bin/pushsnip  20090625-Firefox-3.0.11-3.5rc3build2-MU-test
=== Update verify ===
Ran update verify on fx-{linux,mac,win32}-1.9-slave2 as follows:
mkdir -p /builds/verify/firefox-3011-35rc3build2-major-test/
cd /builds/verify/firefox-3011-35rc3build2-major-test/
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
platform=linux  # or mac or win32
./verify.sh -c moz19-firefox-$platform-major.cfg 2>&1 | tee $platform.log
''Results''
Everything the same as [https://bug459878.bugzilla.mozilla.org/attachment.cgi?id=383900 the latest test run] with one addition:
* mn removed amazondotcom.xml, answers.xml, eBay.xml and yahoo.xml {{bug|477989}}
=== Use empty snippets for mn and tr snippets ===
{{bug|500642}} was filed after the MU update generation was done. We can't just regenerate the snippets because test snippets were already pushed, so we'll modify the MU snippets to serve nulls to these locales:
# cltbld @ aus2-staging
cd ~/
# test snippets
rsync -av /opt/aus2/snippets/staging/20090625-Firefox-3.0.11-3.5rc3build2-MU-test/ 20090625-Firefox-3.0.11-3.5rc3build2-MU-test/
cd 20090625-Firefox-3.0.11-3.5rc3build2-MU-test
for i in `find . -name mn -or -name tr`; do for file in `find $i -type f`; do rm $file && touch $file; done; done
# verification - should have no output
cd ..
diff --brief -Nar /opt/aus2/snippets/staging/20090625-Firefox-3.0.11-3.5rc3build2-MU-test/  20090625-Firefox-3.0.11-3.5rc3build2-MU-test/ | grep -v '/\(tr\|mn\)/'
# push them back to snippets/staging
rsync -av 20090625-Firefox-3.0.11-3.5rc3build2-MU-test/ /opt/aus2/snippets/staging/20090625-Firefox-3.0.11-3.5rc3build2-MU-test-no-mn-or-tr/
# real snippets
cd ~/
rsync -av /opt/aus2/snippets/staging/20090625-Firefox-3.0.11-3.5rc3build2-MU/ 20090625-Firefox-3.0.11-3.5rc3build2-MU/
cd 20090625-Firefox-3.0.11-3.5rc3build2-MU
for i in `find . -name mn -or -name tr`; do for file in `find $i -type f`; do rm $file && touch $file; done; done
# verification - should have no output
cd ..
diff --brief -Nar /opt/aus2/snippets/staging/20090625-Firefox-3.0.11-3.5rc3build2-MU/  20090625-Firefox-3.0.11-3.5rc3build2-MU/ | grep -v '/\(tr\|mn\)/'
# push them back to snippets/staging
rsync -av 20090625-Firefox-3.0.11-3.5rc3build2-MU/ /opt/aus2/snippets/staging/20090625-Firefox-3.0.11-3.5rc3build2-MU-no-mn-or-tr/
=== Re-verify that releasetest = beta = release ===
cd /opt/aus2/snippets/staging
# releasetest == beta
find 20090625-Firefox-3.0.11-3.5rc3build2-MU-test-no-mn-or-tr -type d -iregex '.*/releasetest$' | perl -nle '$a = $_; $a =~ s/releasetest/beta/; $a =~ s/20090625-Firefox-3.0.11-3.5rc3build2-MU-test-no-mn-or-tr/20090625-Firefox-3\.0\.11-3\.5rc3build2-MU-no-mn-or-tr/; system("diff -r -u $_ $a");'
find 20090625-Firefox-3.0.11-3.5rc3build2-MU-no-mn-or-tr -type d -iregex '.*/beta$' | perl -nle '$a = $_; $a =~ s/beta$/releasetest/; $a =~ s/20090625-Firefox-3\.0\.11-3\.5rc3build2-MU-no-mn-or-tr/20090625-Firefox-3.0.11-3.5rc3build2-MU-test-no-mn-or-tr/; system("diff -r -u $_ $a");'
# beta == release
find 20090625-Firefox-3.0.11-3.5rc3build2-MU-no-mn-or-tr -type d -iregex '.*/beta$' | perl -nle '$a = $_; $a =~ s/beta/release/; system("diff -r -u $_ $a");'
find 20090625-Firefox-3.0.11-3.5rc3build2-MU-no-mn-or-tr -type d -iregex '.*/release$' | perl -nle '$a = $_; $a =~ s/release$/beta/; system("diff -r -u $_ $a");'
=== Push updated test snippets ===
# cltbld@aus2-staging
~/bin/backupsnip 20090625-Firefox-3.0.11-3.5rc3build2-MU-test-no-mn-or-tr
~/bin/pushsnip  20090625-Firefox-3.0.11-3.5rc3build2-MU-test-no-mn-or-tr
== Stage and Rename files ==
== Stage and Rename files ==
'''NOT DONE YET'''
We'll have to do something similar to [[Firefox_3.0:BuildNotes#Stage_.26_Rename_files | Firefox 3.0]] with at least the following caveats:
We'll have to do something similar to [[Firefox_3.0:BuildNotes#Stage_.26_Rename_files | Firefox 3.0]] with at least the following caveats:
* All MARs can be trimmed out this time
* Don't trim out contrib builds if they exist
* Don't trim out contrib builds if they exist
* Work needs to be done as ffxbld
* Work is done as ffxbld
 
# ffxbld@stage
mkdir firefox-3.5
cd firefox-3.5
rsync -av --exclude='*partial.mar' --exclude=source --exclude=*SUMS /pub/mozilla.org/firefox/releases/3.5rc3/ .
find contrib linux-i686 update -type f | perl -nle '$nf = $_; if ( $nf =~ s/rc3// ) { system("mv","-v",$_,$nf)}'
find mac win32 -type f | perl -nle '$nf = $_; if ( $nf =~ s/\ RC\ 3// ) { system("mv","-v",$_,$nf)};'
wget -O../firefox-3.5-shipped-locales http://hg.mozilla.org/releases/mozilla-1.9.1/raw-file/a625a31a0ad1/browser/locales/shipped-locales
~cltbld/bin/verify-locales.pl -m ~/firefox-3.5-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.5rc3/ -type f | perl -nle '$a = substr($_,41); $a =~ s/rc3//; $a =~ s/\ RC\ 3//; system("diff","-q",$_,$a);'
# Output:
diff: contrib/solaris_tarball/firefox-3.5b99-3.5.en-US.opensolaris-i386.partial.mar: No such file or directory
diff: source/firefox-3.5-source.tar.bz2: No such file or directory
diff: source/firefox-3.5-source.tar.bz2.asc: No such file or directory
diff: source/firefox-3.5.bundle: No such file or directory
diff: source/firefox-3.5.bundle.asc: No such file or directory
diff: update/linux-i686/af/firefox-3.5rc2-3.5.partial.mar: No such file or directory
diff: update/linux-i686/ar/firefox-3.5rc2-3.5.partial.mar: No such file or directory
...
diff: update/win32/zh-CN/firefox-3.5rc2-3.5.partial.mar: No such file or directory
diff: update/win32/zh-TW/firefox-3.5rc2-3.5.partial.mar: No such file or directory
Files /pub/mozilla.org/firefox/releases/3.5rc3/MD5SUMS and MD5SUMS differ
Files /pub/mozilla.org/firefox/releases/3.5rc3/SHA1SUMS and SHA1SUMS differ
 
Everything above is expected: We don't want the partial, we regenerated *SUMS because of filename changes, and we haven't yet regenerated source packages
 
== Ownernship/permission verification ==
find . ! -user ffxbld
find . ! -group firefox
find . -type f ! -perm 644
find . -type d -mindepth 1 ! -perm 755 ! -name 'contrib*'
find . -type d -maxdepth 1 ! -perm 2775  -name 'contrib*'
 
contrib/solaris_* dirs are 2755, which is OK.


== Add index files ==
== Add index files ==
'''NOT DONE YET'''
for dir in `find . -type d -mindepth 1`; do cp -p index.html $dir/; done
Same as [[https://wiki.mozilla.org/Firefox_3.0:BuildNotes#Add_index.html Firefox 3.0]]. Should try to retrieve the index.html from Firefox 3.0 and run it by beltzner.
 
== Tag and Source package regeneration ==
Because we have so many l10n repositories to deal with it will be best to do this with the automation. We'll need to patch both release_config.py. [[https://bugzilla.mozilla.org/attachment.cgi?id=385739 This patch]] was used to do so.
 
We have to call it build2 due to the way relbranchoverride works ({{bug|500471}} {{bug|500473}}). You don't need to touch the old* vars since Tag and Source don't use them, but you can if you want. The Source packages will be pushed to 3.5-candidates/build2. Those files should be quickly moved to ~ffxbld and disposed of or moved.
 
After landing the patch, manually kicked off the tag factory. Once that completed, kicked off source. Once that completed, ran the following to grab and then wipe out the files:
# ffxbld @ stage
rsync -av /home/ftp/pub/firefox/nightly/3.5-candidates/ 3.5-candidates/ && rm -rf /home/ftp/pub/firefox/nightly/3.5-candidates
 
Then, to stage:
cd ~/firefox-3.5
rsync -av ~/3.5-candidates/build2/source/ source/
 
Then, pull the source/ dir in on the signing machine and generate a sig for it:
mkdir -p ~/signing-work/firefox-3.5
cd ~/signing-work/firefox-3.5
rsync -av -e 'ssh -i /home/cltsign/.ssh/ffxbld_dsa' ffxbld@stage.mozilla.org:~/firefox-3.5/source/ stage-unsigned/
rsync -av stage-unsigned/ stage-signed/
cd stage-signed/
sign-files .
cd ..
# should only push the asc here
rsync -nav -e 'ssh -i /home/cltsign/.ssh/ffxbld_dsa' stage-signed/ ffxbld@stage.mozilla.org:~/firefox-3.5/source/
rsync -av -e 'ssh -i /home/cltsign/.ssh/ffxbld_dsa' stage-signed/  ffxbld@stage.mozilla.org:~/firefox-3.5/source/
 
Then back on stage, regenerate SUMS files:
cd ~/firefox-3.5
rm *SUMS
~cltbld/bin/checksum-files .


== Bouncer Setup ==
== Bouncer Setup ==
'''NOT DONE YET'''
Done


== Push to Mirrors ==
== Push to Mirrors ==
'''NOT DONE YET'''
* push the covering index.html in the top level (Monday 2240 EDT/1940 PDT)
Again, like [[Firefox_3.0:BuildNotes#Push_to_mirrors | Firefox 3.0]] we need to push to mirrors in two stage. First pushing '3.5/index.html' and give that lot's of time to get picked up. Then, pushing the actual files. You can update the 'latest-3.5' symlink at this point, too
# ffxbld@stage
rsync -av /home/ffxbld/firefox-3.5/index.html /pub/mozilla.org/firefox/releases/3.5/
# 0045 EDT/2145 PDT
rsync -av --exclude 'contrib*' --exclude '*.exe' --exclude '*.dmg' \
  --exclude '*.bz2' --exclude '*.asc' --exclude '*.mar' --exclude '*.xpi' \
  --exclude '*.bundle' \
  /home/ffxbld/firefox-3.5/ /pub/mozilla.org/firefox/releases/3.5/
* push the stage-merged directory to the releases area (Tuesday 0100 EDT/Monday 2200 PDT)
  rsync -av /home/ffxbld/firefox-3.5/ /pub/mozilla.org/firefox/releases/3.5/


== Update rsync modules ==
== Update rsync modules ==
'''NOT DONE YET'''
As cltbld, replaced two references to 3.5rc3 with 3.5 in /pub/mozilla.org/zz/rsyncd-mozilla-current.exclude
 
== Trim mk builds out ==
mk builds had a horrible bug that prevents updating so we decided not to ship it. {{bug|501344}}.
First, trim the builds out of the releases dir
# ffxbld @ stage
# start in the staging dir
cd ~/firefox-3.5
find . -type d -iname mk -exec rm -r {} \;
# update SUMS files
sed -i -e '/^.*mk.*$/d' SHA1SUMS
sed -i -e '/^.*mk.*$/d' MD5SUMS
# then rsync over to releases
rsync -av --delete ./ /pub/mozilla.org/firefox/releases/3.5/


== Tag and Source package regeneration ==
Now, trim out the MU snippets
'''NOT DONE YET'''
  # cltbld @ aus2-staging
'''TEST ME'''
  # get rid of the live test snippets first
Because we have so many l10n repositories to deal with it will be best to do this with the automation. We'll need to patch both release_config.py. The following variable changes should make it happen:
  cd /opt/aus2/incoming/3/Firefox/3.0.11
To release_config.py:
  find . -maxdepth 3 -type d -wholename "*200906021*/mk*" -exec rm -r {} \;
  sourceRepoRevision = 'FIREFOX_3_5rc3_RELEASE'
  # and now get rid of the beta+release channel snippets in the staging dir
  relbranchOverride = 'GECKO191_20090623_RELBRANCH'
  rsync -av 20090625-Firefox-3.0.11-3.5rc3build2-MU-no-mn-or-tr/ 20090625-Firefox-3.0.11-3.5rc3build2-MU-no-mn-or-tr-or-mk/
  version = '3.5'
  cd 20090625-Firefox-3.0.11-3.5rc3build2-MU-no-mn-or-tr-or-mk/Firefox/3.0.11
  buildNumber = 2
  find . -maxdepth 3 -type d -wholename "*200906021*/mk*" -exec rm -r {} \;
  baseTag = 'FIREFOX_3_5'
We need to replace all of the revisions in l10n-changesets, too:
  sed -E 's/\[\[:space:\]\]+.+/  FIREFOX_3_5rc3_RELEASE/' l10n-changesets
As well as this patch to factory.py:
  diff -r 0bff92bdd6fc process/factory.py
--- a/process/factory.py Tue Jun 23 17:21:47 2009 +0200
  +++ b/process/factory.py Thu Jun 25 09:50:05 2009 -0400
@@ -1760,7 +1760,7 @@ class ReleaseTaggingFactory(ReleaseFacto
                  workdir=repoName,
                  haltOnFailure=True
                  )
-           for tag in (buildTag, releaseTag):
+            for tag in [releaseTag]:
                  self.addStep(ShellCommand,
                  name='hg_tag',
                  command=['hg', 'tag', '-u', hgUsername, '-f', '-r',


== Push Major Update ==
Prep
time ~/bin/backupsnip 20090625-Firefox-3.0.11-3.5rc3build2-MU-no-mn-or-tr
real    50m34.052s
user    0m48.859s
sys    2m17.473s


We have to call it build2 due to the way relbranchoverride works ('''FIXME'''). You don't need to touch the old* vars since Tag and Source don't use them, but you can if you want. The Source packages will be pushed to 3.5-candidates/build2. It would be good to move that dir to ~cltbld or ~ffxbld rather quickly.
Had to re-run backupsnip because it was invalidated after we trimmed 3.0.11 mk snippets:
time ~/bin/backupsnip 20090625-Firefox-3.0.11-3.5rc3build2-MU-no-mn-or-tr-or-mk
real 52m38.078s
user 0m47.961s
sys 1m35.855s


You'll need to do any sort of staging that needs to happen and eventually rsync it out to /pub/mozilla.org/firefox/releases/3.5/.
~/bin/pushsnip 20090625-Firefox-3.0.11-3.5rc3build2-MU-no-mn-or-tr-or-mk
 
== Symlink update ==
Update the 'latest' symlink.
cd /pub/mozilla.org/firefox/releases
rm latest-3.5 && ln -s 3.5 latest-3.5
rm latest    && ln -s latest-3.5 latest


== Remove index.html files ==
== Remove index.html files ==
'''NOT DONE YET'''
Once we are fully announced we can remove the index.html files:
Once the website goes live then we can remove the index.html bandaid:
  cd /pub/mozilla.org/firefox/releases/3.5/
  cd /pub/mozilla.org/firefox/releases/3.5/
  find . -name index.html | less
  find . -name index.html | less
  find . -name index.html | xargs rm -v
  find . -name index.html | xargs rm -v
== Symlink update ==
'''NOT DONE YET'''
Update the 'latest' symlink.
cd /pub/mozilla.org/firefox/releases
rm latest && ln -s latest-3.5 latest
canmove, Confirmed users
6,439

edits