Releases/Firefox 3.7a4webm/BuildNotes
From MozillaWiki
< Releases
Notes while preparing builds for the WebM announcment. Source bundles from roc + MozNZ.
Contents
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