Releases/Firefox 14.0.1/BuildNotes-Updates

From MozillaWiki
Jump to: navigation, search

Updates

First problem: Failed to bump the patcher config

perl ../tools/release/patcher-config-bump.pl -p firefox -r Firefox -v 14.0.1 -a 14.0.1 \
-o 13.0.2 -b 1 ....
ASSERT: BumpFilePath() - Could not bump path: 'firefox/nightly/13.0.1-candidates/build1/update/%platform%/%locale%/firefox-13.0-13.0.1.partial.mar' from '13.0.2' to '14.0.1' at ../tools/lib/perl/Release/Patcher/Config.pm line 148.

due to incorrect oldVersion in release config.

Fix:

# buildbot-configs @ ed8561aa1056
sed -e 's/13_0_2/13_0_1/' -e 's/13\.0\.2/13.0.1/' -i  mozilla/release-firefox-mozilla-release.py
hg ci -m "Bug 758795, fix up oldVersion for FF 14.0.1, r=version-numbers-are-confusing"
hg up -r production
hg transplant 1aa1d4209bb1
hg tag -f -r production {FIREFOX,FENNEC}_14_0_1_{RELEASE,BUILD1}
hg push ssh://hg.mozilla.org/build/buildbot-configs
# bm12
cd /builds/buildbot/build1
source bin/activate 
make update reconfig

Note that the tagging was wrong for Fennec, revert it

hg tag -f -r b52a7634bca669ea1205ad34ab297b845ec193c1 FENNEC_14_0_1_RELEASE
hg tag -f -r b2b6a37879f23438c3fb29124f9b3d37e61cff13 FENNEC_14_0_1_BUILD1
# after verification using hg serve
hg push ssh://hg.mozilla.org/build/buildbot-configs

Forced builder.

Second problem: Failed to upload aus2-test because in the create_snippets step we got

Partial patch info - 0 to create
Complete patch info - 0 to create
Past release patch info - 6168 to create
No known patch for locale af, 10.0 -> 14.0.1; skipping...

instead of generating snippets. This is because the checksums files have lines like this

26dee2baa2b425fb3d8057879558bf89 md5 7771770 update/win32/en-US/firefox-13.0.2-14.0.1.partial.mar

Which is the same problem with the wrong version in the config. In fact we have generated partials for 13.0.2 to 14.0.1, which won't be any use, and will need to create 13.0.1 to 14.0.1 partials.

Manually generate 13.0.1-14.0.1 partials

Working from the howto doc, but no config changes are necessary here.

## on linux-ix-slave36
cd /builds/slave/rel-m-rel-updates/build
mkdir -p logs/13.0.1-14.0.1

## build tools (9 min)
export HGROOT=http://hg.mozilla.org/releases/mozilla-release
perl patcher2.pl --build-tools-hg --tools-revision=FIREFOX_14_0_1_RELEASE \
  --app=firefox --brand=Firefox \
  --config=patcher-configs/mozRelease-branch-patcher2.cfg

## get complete mar files   (75 min, very badly needs parallelization)
perl patcher2.pl --download \
  --app=firefox --brand=Firefox \
  --config=patcher-configs/mozRelease-branch-patcher2.cfg \
  2>&1 | tee logs/13.0.1-14.0.1/download.log

## generate unsigned partial updates (100 min)
perl patcher2.pl --create-patches --partial-patchlist-file=patchlist.cfg \
 --app=firefox --brand=Firefox \
 --config=patcher-configs/mozRelease-branch-patcher2.cfg \
  2>&1 | tee logs/13.0.1-14.0.1/create-partials.log

## Make a backup of the new partials/snippets, destroy snippets (6 min)
rsync -a temp/firefox/13.0.1-14.0.1{,-unsigned}/
rm -rf temp/firefox/13.0.1-14.0.1/aus2*

## Sign the mar files (< 1 min)
# get a token
# look up the values for --user in the release-signing part of passwords.py, on the master
unset HISTFILE
IP=`/sbin/ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'`
ssh -oBatchMode=no cltbld@buildbot-master12.build.mozilla.org \
  "curl --fail -k -Fslave_ip=$IP -Fduration=3600 --user reda:cted \
   https://signing1.build.scl1.mozilla.com:9120/token" \
     > /builds/slave/rel-m-rel-updates/token
rm /builds/slave/rel-m-rel-updates/nonce

# update the channel id and version, then sign (25 min)
(for f in `find temp/firefox/13.0.1-14.0.1/ftp -type f -name *partial.mar | sort`; do
  echo Signing $f
  mozilla/obj/dist/host/bin/mar -H firefox-mozilla-release -V 14.0.1 -i $f;
  /tools/python-2.6.5/bin/python \
    /builds/slave/rel-m-rel-updates/tools/release/signing/signtool.py \
    -t /builds/slave/rel-m-rel-updates/token -n /builds/slave/rel-m-rel-updates/nonce \
    -c /builds/slave/rel-m-rel-updates/tools/release/signing/host.cert \
    -H signing1.build.scl1.mozilla.com:9120 -H signing2.build.scl1.mozilla.com:9120 -f gpg -f mar \
    "$f"
done ) 2>&1 | tee logs/13.0.1-14.0.1/sign-partials.log

## Regenerate the snippets (4 min)
perl patcher2.pl --create-patchinfo \
  --app=firefox --brand=Firefox \
  --config=patcher-configs/mozRelease-branch-patcher2.cfg \
  2>&1 | tee logs/13.0.1-14.0.1/generate_snippets.log

# Snippet verification
cd temp/firefox/13.0.1-14.0.1
bash /builds/slave/rel-m-rel-updates/tools/release/compare-channel-snippets.sh \
  aus2 release aus2.test  releasetest

# Tidy and upload mar files (6 min)
find ftp/firefox/nightly/14.0.1-candidates/build1 -type f -exec chmod 644 {} \; 
find ftp/firefox/nightly/14.0.1-candidates/build1 -type d -exec chmod 755 {} \;
# $BUILD is the build number, eg 1, 2, ...
rsync -nav -e 'ssh -oIdentityFile=~/.ssh/ffxbld_dsa' '--exclude=*complete.mar' \
  ftp/firefox/nightly/14.0.1-candidates/build1/update \
  ffxbld@stage.mozilla.org:/pub/mozilla.org/firefox/nightly/14.0.1-candidates/build1/
# then repeat without the -n

# Upload snippets (2 min, NB: no  --exclude=complete.txt)
rsync -av -e 'ssh -oIdentityFile=~/.ssh/auspush' \
 aus2.test/ \
 ffxbld@aus3-staging.mozilla.org:/opt/aus2/snippets/staging/Firefox-14.0.1-build1-test
rsync -av -e 'ssh -oIdentityFile=~/.ssh/auspush' \
 aus2/ \
 ffxbld@aus3-staging.mozilla.org:/opt/aus2/snippets/staging/Firefox-14.0.1-build1

Defer backupsnip until after other changes.

Adjust What's New in snippets

From bug 767207

locales="en-US en-GB fr it de es-ES es-AR es-CL es-MX ja ja-JP-mac ko ru"

# backup auto-generated snippets
cd /opt/aus2/snippets/staging
rsync -a Firefox-14.0.1-build1{,-withoutWN}/
rsync -a Firefox-14.0.1-build1-test{,-withoutWN}/

for l in $locales; do
  for f in `find Firefox-14.0.1-build1{,-test}/*/*/*/*/$l -type f`; do
    echo tweaking $f
    sed -i '/^actions.*$/d' $f
  done
done

Did some quick checks using diff, looks OK.

Generate 12.0 to 14.0.1 partial update for windows

## on linux-ix-slave36
cd /builds/slave/rel-m-rel-updates/build
mkdir -p logs/12.0-14.0.1
curl -sL https://bugzilla.mozilla.org/attachment.cgi?id=642529 \
  > patcher-configs/mozRelease-branch-patcher2-758795.cfg

# save the previous partial working space, but duplicate 14.0.1
# win32 completes as a speed up (2 min)
mv temp/ temp-13.0.1-14.0.1-partial/
mkdir -p temp/firefox/14.0.1/ftp
cp -pv temp-13.0.1-14.0.1-partial/firefox/14.0.1/ftp/*win32* temp/firefox/14.0.1/ftp/

## build tools - skipped as we had this from 12.0.1 - 13.0.1

## Get the complete mar files (8 min)
perl patcher2.pl --download \
  --app=firefox --brand=Firefox \
  --config=patcher-configs/mozRelease-branch-patcher2-758795.cfg

## Generate unsigned partial updates (28 min)
perl patcher2.pl --create-patches --partial-patchlist-file=patchlist.cfg \
 --app=firefox --brand=Firefox \
 --config=patcher-configs/mozRelease-branch-patcher2-758795.cfg \
  2>&1 | tee logs/12.0-14.0.1/create-partials.log

## Make a backup of the new partials/snippets, destroy snippets (< 1 min)
rsync -a temp/firefox/12.0-14.0.1{,-unsigned}/
rm -rf temp/firefox/12.0-14.0.1/aus2*

## Sign the mar files (< 1 min)
# get a token
# look up the values for --user in the release-signing part of passwords.py, on the master
unset HISTFILE
IP=`/sbin/ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'`
ssh -oBatchMode=no cltbld@buildbot-master12.build.mozilla.org \
  "curl --fail -k -Fslave_ip=$IP -Fduration=3600 --user reda:cted \
   https://signing1.build.scl1.mozilla.com:9120/token" \
     > /builds/slave/rel-m-rel-updates/token
rm /builds/slave/rel-m-rel-updates/nonce

# update the channel id and version, then sign (8 min)
(for f in `find temp/firefox/12.0-14.0.1/ftp -type f -name *partial.mar | sort`; do
  echo Signing $f
  mozilla/obj/dist/host/bin/mar -H firefox-mozilla-release -V 14.0.1 -i $f;
  /tools/python-2.6.5/bin/python \
    /builds/slave/rel-m-rel-updates/tools/release/signing/signtool.py \
    -t /builds/slave/rel-m-rel-updates/token -n /builds/slave/rel-m-rel-updates/nonce \
    -c /builds/slave/rel-m-rel-updates/tools/release/signing/host.cert \
    -H signing1.build.scl1.mozilla.com:9120 -H signing2.build.scl1.mozilla.com:9120 -f gpg -f mar \
    "$f"
done ) 2>&1 | tee logs/12.0-14.0.1/sign-partials.log

## Regenerate the snippets (1 min)
perl patcher2.pl --create-patchinfo \
  --app=firefox --brand=Firefox \
  --config=patcher-configs/mozRelease-branch-patcher2-758795.cfg \
  2>&1 | tee logs/12.0-14.0.1/generate_snippets.log

# Snippet verification (<1 min)
cd temp/firefox/12.0-14.0.1
bash /builds/slave/rel-m-rel-updates/tools/release/compare-channel-snippets.sh \
  aus2 release aus2.test  releasetest

# Tidy and upload mar files (3 min)
find ftp/firefox/nightly/14.0.1-candidates/build1 -type f -exec chmod 644 {} \; 
find ftp/firefox/nightly/14.0.1-candidates/build1 -type d -exec chmod 755 {} \;
rsync -nav -e 'ssh -oIdentityFile=~/.ssh/ffxbld_dsa' '--exclude=*complete.mar' \
  ftp/firefox/nightly/14.0.1-candidates/build1/update \
  ffxbld@stage.mozilla.org:/pub/mozilla.org/firefox/nightly/14.0.1-candidates/build1/
# then repeat without the -n

# Upload snippets (1 min)
rsync -av -e 'ssh -oIdentityFile=~/.ssh/auspush' --exclude=complete.txt \
 aus2.test/ \
 ffxbld@aus3-staging.mozilla.org:/opt/aus2/snippets/staging/Firefox-14.0.1-build1-test
rsync -av -e 'ssh -oIdentityFile=~/.ssh/auspush' --exclude=complete.txt \
 aus2/ \
 ffxbld@aus3-staging.mozilla.org:/opt/aus2/snippets/staging/Firefox-14.0.1-build1
# aus3-staging
backupsnip Firefox-14.0.1-build1-test
pushsnip   Firefox-14.0.1-build1-test

Forced update verify builders.

Generate release-cck-mozilla11/12 snippets

By duplicating the 13.0.1 release/releasetest snippets and modifying the bouncer product, see bug for more info.

# ffxbld@aus3-staging
cd /opt/aus2/snippets/staging
mkdir -p Firefox-14.0.1-build1-funnelcake11_12-test/Firefox
rsync -a --exclude=Linux* --exclude=betatest \
  Firefox-14.0.1-build1{,-funnelcake11_12}-test/Firefox/13.0.1/
for d in `find Firefox-14.0.1-build1-funnelcake11_12-test -mindepth 6 -type d`; do
  mv $d $d-cck-mozilla11
  rsync -a $d-cck-mozilla11/ $d-cck-mozilla12/
  sed -i -e 's/\-complete/-complete-funnelcake11/' \
            -e 's/-partial-13\.0\.1/-partial-13.0.1-funnelcake11/' $d-cck-mozilla11/*.txt
  sed -i -e 's/\-complete/-complete-funnelcake12/' \
            -e 's/-partial-13\.0\.1/-partial-13.0.1-funnelcake12/' $d-cck-mozilla12/*.txt
done
 
rsync -a Firefox-14.0.1-build1-funnelcake11_12{-test,}/
for d in `find Firefox-14.0.1-build1-funnelcake11_12 -mindepth 6 -type d`; do
  mv $d ${d/releasetest/release}
done

backupsnip Firefox-14.0.1-build1-funnelcake11_12-test
pushsnip   Firefox-14.0.1-build1-funnelcake11_12-test

Also need to suppress the mac partials, because they fail to apply then don't try the complete (bug 774618).

# ffxbld@aus3-staging
cd /opt/aus2/snippets/staging
for f in `find Firefox-14.0.1-build1-funnelcake11_12{,-test}/Firefox/13.0.1/Darwin* -type f -name partial.txt`; do 
  echo $f
  rm $f; 
  touch $f; 
done

pushsnip Firefox-14.0.1-build1-funnelcake11_12-test

Update verify

Automated verify running...

12.0 partial

On mw32-ix-slave07 stop buildbot slave and to this in terminal via VNC

# windows
cd /e/builds/moz2_slave

# all platforms
mkdir bug758795; cd $_
hg clone http://hg.mozilla.org/build/tools scripts
hg -R scripts update -C -r FIREFOX_14_0_1_RELEASE_RUNTIME

cd scripts/release/updates/
wget -O- https://bugzilla.mozilla.org/attachment.cgi?id=642483 | patch -p3

bash verify.sh -c mozRelease-firefox-win32-758795.cfg 2>&1 |tee uv.log; echo $?

Grepped log for 'FAIL', none found. Manually looked at the end of each test (by searching for 'Using'). Lots of removed-files differences in all partials like:

diff -r source/bin/removed-files target/bin/removed-files
10d9
< update.locale
213a213
> extensions/uriloader@pdf.js.xpi
674a675
> update.locale
984a986,992
> modules/services-common/async.js
> modules/services-common/log4moz.js
> modules/services-common/observers.js
> modules/services-common/preferences.js
> modules/services-common/rest.js
> modules/services-common/stringbundle.js
> modules/services-common/utils.js
1074c1082,1087
< plugins/npnul32.dll
---
> mozcpp19.dll
> mozcrt19.dll
> Microsoft.VC80.CRT.manifest
> msvcm80.dll
> msvcp80.dll
> msvcr80.dll
1079,1080d1091
< msvcp100.dll
< msvcr100.dll
1083,1084c1094
< mozcrt19.dll
< mozcpp19.dll
---
> plugins/npnul32.dll
1125a1136
> jssubloader/

A couple of extra directories in en-US partial:

Contents of target/bin/jssubloader dir only in source or target
7301457    0 drwxr-xr-x   3 cltbld   Administrators        0 Jul  04:15 target/bin/jssubloader/185
7825746    0 drwxr-xr-x   2 cltbld   Administrators        0 Jul  04:15 target/bin/jssubloader/185/resource

As well as jssubloader, these differences were also in the en-US complete:

Only in target/bin: jsloader
Only in target/bin: jssubloader
Contents of target/bin/jsloader dir only in source or target
7301457    0 drwxr-xr-x   2 cltbld   Administrators        0 Jul  04:16 target/bin/jsloader/resource

To further debug, unpacked the exe and found that jsloader/ and jssubloader/185/resource were empty directories, so this step is a PASS.

13.0.2 -> 14.0.1 snippets

Because the original "updates" builder failed out before generating any updates, we didn't get any snippets generated for 13.0.2 users (which, despite not being shipped has an ADI of 20k). To generate complete snippets for 13.0.2, did the following:

# ffxbld@aus3-staging.mozilla.org
cd /opt/aus2/snippets/staging
for i in Firefox-14.0.1-build1{,-test}; do
  cd $i/Firefox
  rsync -av 13.0/ 13.0.2/
  for j in 13.0.2/*; do
    mv $j/20120601045813 $j/20120623110123
  done
  cd ../..
done

Repushed test snippets:

~/bin/pushsnip Firefox-14.0.1-build1-test

And verified by checking this update URL by hand (was previously null): https://aus3.mozilla.org/update/1/Firefox/13.0.2/20120623110123/Darwin_x86_64-gcc3-u-i386-x86_64/en-US/releasetest/update.xml?force=1