Releases/Firefox 3.7a4webm/BuildNotes

From MozillaWiki
Jump to: navigation, search

Notes while preparing builds for the WebM announcment. Source bundles from roc + MozNZ.

Setup slave environments

Used bm-xserve17, mv-moz2-linux-ix-slave02, mw32-ix-slave03

Windows

After Start > Run > cmd:

# win32 only
# these are from the compile step
set SYMBOL_SERVER_HOST=dm-symbolpush01.mozilla.org
set SYMBOL_SERVER_PATH=/mnt/netapp/breakpad/symbols_ffx/
set SYMBOL_SERVER_USER=ffxbld
set MOZ_PKG_PRETTYNAMES=1
set MOZ_PKG_VERSION=3.7a4webm
set MOZ_CRASHREPORTER_NO_REPORT=1
set MOZ_OBJDIR=obj-firefox
set MOZ_SYMBOLS_EXTRA_BUILDID=webm
set APR_ICONV_PATH=d:/mozilla-build/svn-win32-1.6.3/iconv
set DEVENVDIR=D:\msvs8\Common7\IDE
set FRAMEWORKDIR=C:\WINDOWS\Microsoft.NET\Framework
set FRAMEWORKSDKDIR=D:\msvs8\SDK\v2.0
set FRAMEWORKVERSION=v2.0.50727
set HOME=c:/Documents and Settings/cltbld
set HOSTTYPE=i686
set INCLUDE=D:\sdks\v7.0\\include;D:\sdks\v7.0\\include\atl;D:\msvs8\VC\ATLMFC\INCLUDE;D:\msvs8\VC\INCLUDE;D:\msvs8\VC\PlatformSDK\include;
set INPUTRC=D:/mozilla-build/msys/etc/inputrc
set JAVA_HOME=d:/jdk-1.5.0_10
set LIB=D:\sdks\v7.0\\lib;D:\msvs8\VC\ATLMFC\LIB;D:\msvs8\VC\LIB;D:\msvs8\VC\PlatformSDK\lib;D:\msvs8\SDK\v2.0\lib;;D:\mozilla-build\\atlthunk_compat
set LIBPATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;D:\msvs8\VC\ATLMFC\LIB
set MACHTYPE=i686-pc-msys
set MAKE_MODE=unix
set MOZILLABUILD=D:\mozilla-build\
set MOZILLABUILDDRIVE=D:
set MOZILLABUILDPATH=\mozilla-build\
set MOZ_CRASHREPORTER_NO_REPORT=1
set MOZ_MSVCVERSION=8
set MOZ_OBJDIR=obj-firefox
set MOZ_PKG_PRETTYNAMES=1
set MOZ_PKG_VERSION=3.7a4webm
set MOZ_TOOLS=D:\mozilla-build\\moztools
set MSVC6KEY=HKLM\SOFTWARE\Microsoft\VisualStudio\6.0\Setup\Microsoft Visual C++
set MSVC71KEY=HKLM\SOFTWARE\Microsoft\VisualStudio\7.1\Setup\VC
set MSVC8EXPRESSKEY=HKLM\SOFTWARE\Microsoft\VCExpress\8.0\Setup\VC
set MSVC8KEY=HKLM\SOFTWARE\Microsoft\VisualStudio\8.0\Setup\VC
set MSVC9EXPRESSKEY=HKLM\SOFTWARE\Microsoft\VCExpress\9.0\Setup\VC
set MSVC9KEY=HKLM\SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VC
set MSVCEXPROOTKEY=HKLM\SOFTWARE\Microsoft\VCExpress
set MSVCROOTKEY=HKLM\SOFTWARE\Microsoft\VisualStudio
set MSYSTEM=MINGW32
set OSTYPE=msys
set PATH=D:\mozilla-build\msys\local\bin;d:\mozilla-build\wget;d:\mozilla-build\7zip;d:\mozilla-build\blat261\full;d:\mozilla-build\python25;d:\mozilla-build\svn-win32-1.6.3\bin;d:\mozilla-build\upx203w;d:\mozilla-build\emacs-22.3\bin;d:\mozilla-build\info-zip;d:\mozilla-build\nsis-2.22;d:\mozilla-build\nsis-2.33u;d:\mozilla-build\hg;d:\mozilla-build\python25\Scripts;d:\mozilla-build\kdiff3;d:\mozilla-build\vim\vim72;.;D:\mozilla-build\msys\local\bin;D:\mozilla-build\msys\mingw\bin;D:\mozilla-build\msys\bin;d:\sdks\v7.0\bin;d:\msvs8\Common7\IDE;d:\msvs8\VC\BIN;d:\msvs8\Common7\Tools;d:\msvs8\Common7\Tools\bin;d:\msvs8\VC\PlatformSDK\bin;d:\msvs8\SDK\v2.0\bin;c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;d:\msvs8\VC\VCPackages;c:\WINDOWS\system32;c:\WINDOWS;c:\WINDOWS\System32\Wbem;c:\Program Files\Intel\DMIX;d:\mozilla-build\python25;d:\mercurial;c:\Program Files\Microsoft SQL Server\90\Tools\binn\;d:\sdks\tegra042\tools;d:\sdks\tegra042\platformlibs\bin\winxp\x86\release;d:\sdks\tegra042\3rdparty\bin\winxp\x86\release;d:\mozilla-build\python25\scripts;d:\mozilla-build\moztools\bin
set PDBSTR_PATH=/c/Program Files/Debugging Tools for Windows/srcsrv/pdbstr.exe
set SDK2003SP1KEY=HKLM\SOFTWARE\Microsoft\MicrosoftSDK\InstalledSDKs\8F9E5EF3-A9A5-491B-A889-C58EFFECE8B3
set SDK2003SP2KEY=HKLM\SOFTWARE\Microsoft\MicrosoftSDK\InstalledSDKs\D2FF9F89-8AA2-4373-8A31-C838BF4DBBE1
set SDK61KEY=HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.1
set SDK6AKEY=HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A
set SDK6KEY=HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0
set SDK7KEY=HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0
set SDKDIR=D:\sdks\v7.0\
set SDKMINORVER=0
set SDKROOTKEY=HKLM\SOFTWARE\Microsoft\MicrosoftSDK\InstalledSDKs
set SDKVER=7
set SHELL=D:/mozilla-build/msys/bin/sh
set SHLVL=2
set SYMBOL_SERVER_SSH_KEY=/c/Documents and Settings/cltbld/.ssh/ffxbld_dsa
set USESDK=1
set VC8DIR=D:\msvs8\VC\
set VC9DIR=D:\msvs9\VC\
set VCINSTALLDIR=D:\msvs8\VC
set VSINSTALLDIR=D:\msvs8
set WIN32_REDIST_DIR=d:/msvs8/VC/redist/x86/Microsoft.VC80.CRT
set WIN64=0
set WINCURVERKEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion
e:
cd \builds\moz2_slave

Mac/Linux

After logging in by ssh and starting screen:

platform=linux
# or
platform=macosx

# once-off install of yasm on mac & linux
mkdir ~/tmp/yasm
cd ~/tmp/yasm
wget http://www.tortall.net/projects/yasm/releases/yasm-1.0.1.tar.gz
tar xfz yasm-1.0.1.tar.gz
cd yasm-1.0.1
./configure --prefix=${HOME}/tmp/yasm/yasm-install
make
make check
make install

# these are from the compile step
if [[ $platform == 'linux' ]]; then
  export SYMBOL_SERVER_HOST=dm-symbolpush01.mozilla.org
  export SYMBOL_SERVER_PATH=/mnt/netapp/breakpad/symbols_ffx/
  export SYMBOL_SERVER_USER=ffxbld
  export MOZ_PKG_PRETTYNAMES=1
  export MOZ_PKG_VERSION=3.7a4webm
  export MOZ_CRASHREPORTER_NO_REPORT=1
  export MOZ_OBJDIR=obj-firefox
  export MOZ_SYMBOLS_EXTRA_BUILDID=webm
  export CCACHE_DIR=/builds/ccache
  export CCACHE_UMASK=002
  export PATH=/opt/local/bin:/tools/buildbot/bin:/tools/twisted/bin:/tools/twisted-core/bin:/tools/python/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/cltbld/bin
  export PYTHONHOME=/tools/python
  export PYTHONPATH=/tools/buildbotcustom:/tools/buildbot/lib/python2.5/site-packages:/tools/twisted/lib/python2.5/site-packages:/tools/twisted-core/lib/python2.5/site-packages:/tools/zope-interface/lib/python2.5/site-packages/
  export SYMBOL_SERVER_SSH_KEY=/home/cltbld/.ssh/ffxbld_dsa
elif [[ $platform == 'macosx' ]]; then
  export SYMBOL_SERVER_HOST=dm-symbolpush01.mozilla.org
  export SYMBOL_SERVER_PATH=/mnt/netapp/breakpad/symbols_ffx/
  export SYMBOL_SERVER_USER=ffxbld
  export MOZ_PKG_PRETTYNAMES=1
  export MOZ_PKG_VERSION=3.7a4webm
  export MOZ_CRASHREPORTER_NO_REPORT=1
  export MOZ_OBJDIR=obj-firefox
  export MOZ_SYMBOLS_EXTRA_BUILDID=webm
  export CHOWN_REVERT=~/bin/chown_revert
  export CHOWN_ROOT=~/bin/chown_root
  export PATH=/tools/buildbot/bin:/tools/python/bin:/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
  export PYTHONHOME=/tools/python
  export PYTHONPATH=/tools/buildbot/lib/python2.5/site-packages:/tools/twisted/lib/python2.5/site-packages/:/tools/twisted-core/lib/python2.5/site-packages:/tools/zope-interface/lib/python2.5/site-packages
  export SYMBOL_SERVER_SSH_KEY=/Users/cltbld/.ssh/ffxbld_dsa
elif [[ $platform == 'win32' ]]; then
fi
export PATH=${HOME}/tmp/yasm/yasm-install/bin:$PATH
cd /builds/slave
## end platform specific

Setup up the builds

Now that the env setup is done:

# earlier -1 and -2
mkdir 1.9.3a4webm-3
cd 1.9.3a4webm-3

hg clone http://hg.mozilla.org/build/tools tools
python tools/buildfarm/maintenance/purge_builds.py -s 10 -n info -n repo_setup -n tag -n source -n updates -n final_verification -n l10n_verification -n macosx_update_verify -n macosx_build -n macosx_repack -n win32_update_verify -n win32_build -n win32_repack -n linux_update_verify -n linux_build -n linux_repack -n xulrunner_source -n xulrunner_linux_build -n xulrunner_win32_build -n xulrunner_macosx_build -n macosx_build .. /scratchbox/users/cltbld/home/cltbld/build

hg clone http://hg.mozilla.org/mozilla-central build
cd build

hg clone http://hg.mozilla.org/build/buildbot-configs configs
cp configs/mozilla2/$platform/mozilla-central/release/mozconfig .mozconfig

# apply patch - it creates a new head at m-c at 2f2cff1c9bf2
# SHA256(webmedia.bundle)= 8f141d05617e5e86e3d4633aa943989ed359addb6cb49ca67c2aef312942d9f6
# SHA256(webmedia2.bundle)= 4ed72440878f3a276b87bdd228f107cd42988251cf0e1d27b9715db9c73c0b75
# SHA256(webmedia4.bundle)= 21e8553e5cf0aea34e9a3e756c62dcd130caded7d936ec68ffa54d95270f189a
wget http://people.mozilla.com/~roc/webmedia4.bundle
openssl dgst -sha256 webmedia4.bundle
hg unbundle webmedia4.bundle
# hg up -C -r 2489bda80c1b
# hg up -C -r f5d363fd81d5
hg up -C -r fbb9eff859cb

# update versions in
wget http://people.mozilla.com/~nthomas/misc/webm-version-bump.diff
patch -p1 < webm-version-bump.diff

Compile and package

# windows
make -f client.mk profiledbuild > build.log 2>&1
# everything else
make -f client.mk build 2>&1 | tee build.log

if [[ $platform == 'macosx' ]]; then
  cd obj-firefox/ppc
else
  cd obj-firefox
fi

# urgh, mac need ../..
make buildsymbols 2>&1 | tee -a ../build.log
# check filename for symbol manifest is ok
make uploadsymbols 2>&1 | tee -a ../build.log
make package-tests 2>&1 | tee -a ../build.log
make package 2>&1 | tee -a ../build.log
if [[ $platform == 'win32' ]]; then
  make installer 2>&1 | tee -a ../build.log
fi

if [[ $platform == 'macosx' ]]; then
  cd ../..
  make -C obj-firefox/ppc/tools/update-packaging 2>&1 | tee -a build.log
else
  cd ..
  make -C obj-firefox/tools/update-packaging 2>&1 | tee -a build.log
fi

cd obj-firefox/dist  # or obj-firefox/ppc
rsync -av $platform update stage.mozilla.org:/tmp/foo/
cd ../.. # or ../../..
rsync -av build.log stage.mozilla.org:/tmp/foo/$platform/en-US/

# files go up to stage:/tmp/foo/ and on to people:~nthomas/public_html/webm
# for distribution
# groom them in to stage:~cltbld/gecko-1.9.3a4webm for signing

Signing

PRODUCT=firefox
VERSION=3.7a4webm
BUILD=1
TAG=FIREFOX_3_7a4_RELEASE
REPO='mozilla-central'
EMAIL=nthomas@mozilla.com
KEYDIR=d:/2009-keys

mkdir ~/signing-work/${PRODUCT}-${VERSION}
cd ~/signing-work/${PRODUCT}-${VERSION}
cp ~/hg-tools/release/signing/* .

#  setup download stubs sign2 stage verify fake-upload

make PRODUCT=${PRODUCT} VERSION=${VERSION} BUILD=${BUILD} REPO=${REPO} EMAIL=${EMAIL} KEYDIR=${KEYDIR} USE_NEW=1 setup

# download replacement
rsync -e ssh -av cltbld@stage.mozilla.org:/data/cltbld/gecko-1.9.3a4webm/batch1/unsigned/ unsigned-build1/
rsync -av --exclude '*unsigned*' unsigned-build1/ signed-build1/

VERSION=3.7a4
make PRODUCT=${PRODUCT} VERSION=${VERSION} BUILD=${BUILD} REPO=${REPO} EMAIL=${EMAIL} KEYDIR=${KEYDIR} USE_NEW=1 stubs
VERSION=3.7a4webm

PRODUCT=mozilladeveloperpreview
mv unsigned-build1/unsigned/win32/en-US/MozillaDeveloperPreview\ Setup\ 3.7a4{\ WebM,}.exe
mv unsigned-build1/unsigned/update/win32/en-US/mozilladeveloperpreview-3.7a4{webm,}.complete.mar
make PRODUCT=${PRODUCT} VERSION=${VERSION} BUILD=${BUILD} REPO=${REPO} EMAIL=${EMAIL} KEYDIR=${KEYDIR} USE_NEW=1 sign-files
# ignore error about win32_info.txt
# do these out of order while the files are named in a way it'll swallow
./verify-signature.py  --product=mozilladeveloperpreview unsignedbuild1/ signed-build1/
make PRODUCT=${PRODUCT} VERSION=${VERSION} BUILD=${BUILD} REPO=${REPO} EMAIL=${EMAIL} KEYDIR=${KEYDIR} USE_NEW=1 verify-win32 
mv signed-build1/win32/en-US/MozillaDeveloperPreview\ Setup\ 3.7a4{,\ WebM}.exe
mv signed-build1/update/win32/en-US/mozilladeveloperpreview-3.7a4{,webm}.complete.mar
make PRODUCT=${PRODUCT} VERSION=${VERSION} BUILD=${BUILD} REPO=${REPO} EMAIL=${EMAIL} KEYDIR=${KEYDIR} USE_NEW=1 checksum-files create-sigs verify-sigs fix-permissions verify-signatures verify-asc

rsync -e ssh -av signed-build1/ cltbld@stage.mozilla.org:/data/cltbld/gecko-1.9.3a4webm/batch1/signed/

Source

On mv-moz2-linux-ix-slave02:

# Have to do this in a separate directory because 'make source-package' packs up the objdir, too
cd /builds/slave/1.9.3a4webm-3
hg clone build mozilla-central
cd mozilla-central
hg up -C -r fbb9eff859cb
rm -rf .hg
autoconf-2.13
cd js/src
autoconf-2.13
cd ../../..
tar -cjvf mozilladeveloperpreview-3.7a4webm.source.tar.bz2 mozilla-central
rsync -av mozilladeveloperpreview-3.7a4webm.source.tar.bz2 stage.mozilla.org:/data/cltbld/gecko-1.9.3a4webm/batch1/unsigned/source

Signing (with source tarball)

cltbld@stage.mozilla.org

cd /data/cltbld/gecko-1.9.3a4webm/batch1
mv signed signed-without-source

On keymaster:

PRODUCT=firefox
VERSION=3.7a4webm
BUILD=1
TAG=FIREFOX_3_7a4_RELEASE
REPO='mozilla-central'
EMAIL=bhearsum@mozilla.com
KEYDIR=d:/2009-keys

cd ~/signing-work/${PRODUCT}-${VERSION}
rsync -av signed-build1/ signed-build1-before-source/
rsync -e ssh -av cltbld@stage.mozilla.org:/data/cltbld/gecko-1.9.3a4webm/batch1/unsigned/source/ unsigned-build1/source/
rsync -av --exclude '*unsigned*' unsigned-build1/ signed-build1/
cd signed-build1
rm *SUMS*
cd ..
PRODUCT=mozilladeveloperpreview
make PRODUCT=${PRODUCT} VERSION=${VERSION} BUILD=${BUILD} REPO=${REPO} EMAIL=${EMAIL} KEYDIR=${KEYDIR} USE_NEW=1 checksum-files create-sigs verify-sigs fix-permissions verify-signatures verify-asc
diff -Naur signed-build1-before-source/ signed-build1/
# only diffs were asc files, sums files, and existence of source tarball
rsync -e ssh -av signed-build1/ cltbld@stage.mozilla.org:/data/cltbld/gecko-1.9.3a4webm/batch1/signed/

Bouncer entries

Added as DevPreview-1.9.3a4abc first:

  • locations:
    • /firefox/releases/devpreview/1.9.3a4webm/win32/en-US/MozillaDeveloperPreview Setup 3.7a4 WebM.exe
    • /firefox/releases/devpreview/1.9.3a4webm/mac/en-US/MozillaDeveloperPreview 3.7a4 WebM.dmg
    • /firefox/releases/devpreview/1.9.3a4webm/linux-i686/en-US/mozilladeveloperpreview-3.7a4webm.tar.bz2

Push

After 9am, push to releases area:

# publish, ffxbld@stage.mozilla.org
rsync -av /data/cltbld/gecko-1.9.3a4webm/batch1/signed/ /data/ftp/pub/firefox/releases/devpreview/1.9.3a4webm/

In the Bouncer admin area:

  • Change DevPreview-1.9.3a4abc to DevPreview-1.9.3a4webm
  • Mark "Check Now"
  • Save

Sentry picked up the files.

Poked IT to update nightly.mozilla.org.

User download path

Here's the plan:

  • press material/websites are pointing people to http://nightly.mozilla.org/webm
  • nightly.m.o is going to have a static page for webm, pointing to bouncer using product devpreview1.9.3a3webm (sayrer, bug 566820)
  • bouncer will be set up as normal (nthomas/bhearsum)
  • files to be pushed to firefox/releases/devpreview/1.9.3a3webm/ on go from blizzard (?)
  • bouncer should pick them up on dm-download02 within 10 minutes
  • mirrors will start to sync up to give us additional coverage, and we get metrics for free