diff options
-rw-r--r-- | BuildParams | 241 | ||||
-rw-r--r-- | build.sh | 295 |
2 files changed, 536 insertions, 0 deletions
diff --git a/BuildParams b/BuildParams new file mode 100644 index 0000000000..36ecbdd223 --- /dev/null +++ b/BuildParams @@ -0,0 +1,241 @@ +# BuildParams +# +# Please refer to: +# https://wiki.lindenlab.com/wiki/Parabuild_with_Mercurial#How_Build_Parameters_Work + +# Global setting for now... +Darwin.symbolfiles = "newview/Release/secondlife-symbols-darwin.tar.bz2" +CYGWIN.symbolfiles = "newview/Release/secondlife-symbols-windows.tar.bz2" +Linux.symbolfiles = "newview/secondlife-symbols-linux.tar.bz2" + + +#### P r o d u c t i o n B u i l d s #### + +# ======================================== +# Viewer Hotfix Old +# ======================================== + +# Report changes since... +viewer-hotfix-old.show_changes_since = 2-1-release + +# Build Settings +viewer-hotfix-old.build_viewer = true +viewer-hotfix-old.build_server = false +viewer-hotfix-old.build_server_tests = false +viewer-hotfix-old.build_Linux = true +viewer-hotfix-old.build_hg_bundle = true +viewer-hotfix-old.build_docs = true +#viewer-hotfix-old.build_Linux_Debug = false +#viewer-hotfix-old.build_Linux_RelWithDebInfo = false +# +# Default channels etc - set build_viewer_update_version_manager to true when needed. +viewer-hotfix-old.viewer_channel = "Second Life Release" +viewer-hotfix-old.login_channel = "Second Life Release" +viewer-hotfix-old.viewer_grid = agni +viewer-hotfix-old.build_viewer_update_version_manager = false + +# ======================================== +# Viewer Hotfix Previous +# ======================================== + +# Report changes since... +viewer-hotfix-previous.show_changes_since = 2-1-release + +# Build Settings +viewer-hotfix-previous.build_viewer = true +viewer-hotfix-previous.build_server = false +viewer-hotfix-previous.build_server_tests = false +viewer-hotfix-previous.build_Linux = true +viewer-hotfix-previous.build_hg_bundle = true +viewer-hotfix-previous.build_docs = true +#viewer-hotfix-previous.build_Linux_Debug = false +#viewer-hotfix-previous.build_Linux_RelWithDebInfo = false +# +# Default channels etc - set build_viewer_update_version_manager to true when needed. +viewer-hotfix-previous.viewer_channel = "Second Life Release" +viewer-hotfix-previous.login_channel = "Second Life Release" +viewer-hotfix-previous.viewer_grid = agni +viewer-hotfix-previous.build_viewer_update_version_manager = false + +# ======================================== +# Viewer Hotfix +# ======================================== + +# Report changes since... +viewer-hotfix.show_changes_since = 2-1-release + +# Build Settings +viewer-hotfix.build_viewer = true +viewer-hotfix.build_server = false +viewer-hotfix.build_server_tests = false +viewer-hotfix.build_Linux = true +viewer-hotfix.build_hg_bundle = true +viewer-hotfix.build_docs = true +#viewer-hotfix.build_Linux_Debug = false +#viewer-hotfix.build_Linux_RelWithDebInfo = false +# +# Default channels etc - set build_viewer_update_version_manager to true when needed. +viewer-hotfix.viewer_channel = "Second Life Release" +viewer-hotfix.login_channel = "Second Life Release" +viewer-hotfix.viewer_grid = agni +viewer-hotfix.build_viewer_update_version_manager = false + +# ======================================== +# Viewer Release +# ======================================== + +# Report changes since... +viewer-release.show_changes_since = 2-1-release + +# Build Settings +viewer-release.build_viewer = true +viewer-release.build_server = false +viewer-release.build_server_tests = false +viewer-release.build_Linux = true +viewer-release.build_hg_bundle = true +viewer-release.build_docs = true +#viewer-release.build_Linux_Debug = false +#viewer-release.build_Linux_RelWithDebInfo = false +# +# Default channels etc - set build_viewer_update_version_manager to true when needed. +viewer-release.viewer_channel = "Second Life Beta Viewer" +viewer-release.login_channel = "Second Life Beta Viewer" +viewer-release.viewer_grid = agni +viewer-release.build_viewer_update_version_manager = false + +# ======================================== +# Viewer Public +# ======================================== + +# Report changes since... +viewer-public.show_changes_since = 2-1-release + +# Build Settings +viewer-public.build_viewer = true +viewer-public.build_server = false +viewer-public.build_server_tests = false +viewer-public.build_Linux = true +viewer-public.build_hg_bundle = true +viewer-public.build_docs = true +#viewer-public.build_Linux_Debug = false +#viewer-public.build_Linux_RelWithDebInfo = false +# +# Default channels etc - set build_viewer_update_version_manager to true when needed. +viewer-public.viewer_channel = "Second Life Public Alpha" +viewer-public.login_channel = "Second Life Public Alpha" +viewer-public.viewer_grid = agni +viewer-public.build_viewer_update_version_manager = false +viewer-public_coverity.build_coverity = true +viewer-public_coverity.coverity_product = viewer + + + +#### D e v e l o p m e n t B u i l d s #### + + +# ======================================== +# Viewer Development +# ======================================== + +# Report changes since... +viewer-development.show_changes_since = 2-1-release + +# Build Settings +viewer-development.build_viewer = true +viewer-development.build_server = false +viewer-development.build_server_tests = false +viewer-development.build_Linux = true +viewer-development.build_hg_bundle = true +viewer-development.build_docs = true +# viewer-development.viewer_channel = "Second Life Beta Viewer" +# viewer-development.login_channel = "Second Life Beta Viewer" +viewer-development.viewer_grid = agni +viewer-development.build_viewer_update_version_manager = false + +# ======================================== +# Viewer Development Test +# ======================================== + +# Report changes since... +viewer-development-test.show_changes_since = 2-1-release + +# Build Settings +viewer-development-test.build_viewer = true +viewer-development-test.build_server = false +viewer-development-test.build_server_tests = false +viewer-development-test.build_Linux = true +viewer-development-test.build_hg_bundle = true +viewer-development-test.build_docs = true +# viewer-development-test.viewer_channel = "Second Life Beta Viewer" +# viewer-development-test.login_channel = "Second Life Beta Viewer" +viewer-development-test.viewer_grid = agni +viewer-development-test.build_viewer_update_version_manager = false + +# ======================================= +# brad +# ======================================== + +debug-halting.email = cg@lindenlab.com +debug-halting.build_server = false +debug-halting.build_server_tests = false +debug-halting.build_Darwin = false +debug-halting.build_Linux = false +debug-halting.build_CYGWIN_Debug = false +debug-halting.build_CYGWIN_RelWithDebInfo = false + +# ======================================== +# brad +# ======================================== + +brad-parabuild.email = brad@lindenlab.com +brad-parabuild.build_server = false +brad-parabuild.build_server_tests = false + +# ======================================== +# moss +# ======================================== + +mossbuild1.email = moss@lindenlab.com +mossbuild1.build_server = false +mossbuild1.build_server_tests = false + +mossbuild2.email = moss@lindenlab.com +mossbuild2.build_server = false +mossbuild2.build_server_tests = false + +# ======================================== +# gooey +# ======================================== + +#gooey.email = james@lindenlab.com +gooey.build_Debug = false +gooey.build_RelWithDebInfo = false +gooey.build_server = false +gooey.build_server_tests = false +gooey.viewer_channel = "Second Life Alpha" +gooey.login_channel = "Second Life Alpha" +gooey.viewer_grid = agni +gooey.build_viewer_update_version_manager = false + +# ======================================== +# palange +# ======================================== + +palange_viewer-2-0.email = palange@lindenlab.com +palange_viewer-2-0.build_server = false +palange_viewer-2-0.build_server_tests = false +palange_viewer-2-0.build_CYGWIN_Debug = false + +# ======================================== +# media +# ======================================== + +media.email = skolb@lindenlab.com +media.build_server = false +media.build_server_tests = false +media.viewer_channel = "Second Life Alpha" +media.login_channel = "Second Life Alpha" +media.viewer_grid = agni +media.build_viewer_update_version_manager = false + +# eof diff --git a/build.sh b/build.sh new file mode 100644 index 0000000000..a405ed56ee --- /dev/null +++ b/build.sh @@ -0,0 +1,295 @@ +#!/bin/sh + +# This is a the master build script - it is intended to be run by parabuild +# It is called by a wrapper script in the shared repository which sets up +# the environment from the various BuildParams files and does all the build +# result post-processing. +# +# PLEASE NOTE: +# +# * This script is interpreted on three platforms, including windows and cygwin +# Cygwin can be tricky.... +# * The special style in which python is invoked is intentional to permit +# use of a native python install on windows - which requires paths in DOS form +# * This script relies heavily on parameters defined in BuildParams +# * The basic convention is that the build name can be mapped onto a mercurial URL, +# which is also used as the "branch" name. + +build_dir_Darwin() +{ + echo build-darwin-i386 +} + +build_dir_Linux() +{ + echo viewer-linux-i686-$(echo $1 | tr A-Z a-z) +} + +build_dir_CYGWIN() +{ + echo build-vc80 +} + +installer_Darwin() +{ + ls -1td "$(build_dir_Darwin Release)/newview/"*.dmg 2>/dev/null | sed 1q +} + +installer_Linux() +{ + ls -1td "$(build_dir_Linux Release)/newview/"*.tar.bz2 2>/dev/null | sed 1q +} + +installer_CYGWIN() +{ + d=$(build_dir_CYGWIN Release) + p=$(sed 's:.*=::' "$d/newview/Release/touched.bat") + echo "$d/newview/Release/$p" +} + +pre_build() +{ + local variant="$1" + local build_dir="$2" + begin_section "Pre$variant" + #export PATH="/cygdrive/c/Program Files/Microsoft Visual Studio 8/Common7/IDE/:$PATH" + python develop.py \ + --incredibuild \ + --unattended \ + -t $variant \ + -G "$cmake_generator" \ + configure \ + -DVIEWER_CHANNEL:STRING="$viewer_channel" \ + -DVIEWER_LOGIN_CHANNEL:STRING="$login_channel" \ + -DLOCALIZESETUP:BOOL=ON \ + -DPACKAGE:BOOL=ON + end_section "Pre$variant" +} + +build() +{ + local variant="$1" + local build_dir="$2" + if $build_viewer + then + begin_section "Viewer$variant" + if python develop.py \ + --incredibuild \ + --unattended \ + -t $variant \ + -G "$cmake_generator" \ + build package +# && \ +# python develop.py \ +# --incredibuild \ +# --unattended \ +# -t $variant \ +# -G "$cmake_generator" \ +# build package + then + echo true >"$build_dir"/build_ok + else + echo false >"$build_dir"/build_ok + fi + end_section "Viewer$variant" + fi +} + +# This is called from the branch independent script upon completion of all platform builds. +build_docs() +{ + begin_section Docs + # Stub code to generate docs + echo Hello world > documentation.txt + upload_item docs documentation.txt text/plain + end_section Docs +} + +# Check to see if we were invoked from the wrapper, if not, re-exec ourselves from there +if [ "x$arch" = x ] +then + top=`hg root` + if [ -x "$top/../buildscripts/hg/bin/build.sh" ] + then + exec "$top/../buildscripts/hg/bin/build.sh" "$top" + else + cat <<EOF +This script, if called in a development environment, requires that the branch +independent build script repository be checked out next to this repository. +This repository is located at http://hg.lindenlab.com/parabuild/buildscripts +EOF + exit 1 + fi +fi + +# Check to see if we're skipping the platform +eval '$build_'"$arch" || pass + +# Run the version number update script +# File no longer exists in code-sep branch, so let's make sure it exists in order to use it. +if test -f scripts/update_version_files.py ; then + begin_section UpdateVer + scripts/update_version_files.py \ + --channel="$viewer_channel" \ + --server_channel="$server_channel" \ + --revision=$revision \ + --verbose \ + || fail update_version_files.py + end_section UpdateVer +fi + +# Now retrieve the version for use in the version manager +# First three parts only, $revision will be appended automatically. +build_viewer_update_version_manager_version=`scripts/get_version.py --viewer-version | sed 's/\.[0-9]*$//'` + +# Now run the build +cd indra +succeeded=true +build_processes= +for variant in $variants +do + eval '$build_'"$variant" || continue + eval '$build_'"$arch"_"$variant" || continue + + begin_section "Do$variant" + build_dir=`build_dir_$arch $variant` + build_dir_stubs="$build_dir/win_setup/$variant" + rm -rf "$build_dir" + mkdir -p "$build_dir" + if pre_build "$variant" "$build_dir" >> "$build_log" 2>&1 + then + if $build_link_parallel + then + begin_section BuildParallel + ( build "$variant" "$build_dir" > "$build_dir/build.log" 2>&1 ) & + build_processes="$build_processes $!" + end_section BuildParallel + elif $build_coverity + then + mkdir -p "$build_dir/cvbuild" + coverity_config=`cygpath --windows "$coverity_dir/config/coverity_config.xml"` + coverity_tmpdir=`cygpath --windows "$build_dir/cvbuild"` + coverity_root=`cygpath --windows "$top/latest"` + case "$variant" in + Release) + begin_section Coverity + begin_section CovBuild + "$coverity_dir"/bin/cov-build\ + --verbose 4 \ + --config "$coverity_config"\ + --dir "$coverity_tmpdir"\ + python develop.py -t $variant -G "$cmake_generator" build "$coverity_product"\ + >> "$build_log" 2>&1\ + &&\ + end_section CovBuild\ + &&\ + begin_section CovAnalyze\ + &&\ + "$coverity_dir"/bin/cov-analyze\ + --cxx\ + --security\ + --concurrency\ + --dir "$coverity_tmpdir"\ + >> "$build_log" 2>&1\ + &&\ + end_section CovAnalyze\ + &&\ + begin_section CovCommit\ + &&\ + "$coverity_dir"/bin/cov-commit-defects\ + --product "$coverity_product"\ + --dir "$coverity_tmpdir"\ + --remote "$coverity_server"\ + --strip-path "$coverity_root"\ + --target "$branch/$arch"\ + --version "$revision"\ + --description "$repo: $variant $revision"\ + --user admin --password admin\ + >> "$build_log" 2>&1\ + || record_failure "Coverity Build Failed" + # since any step could have failed, rely on the enclosing block to close any pending sub-blocks + end_section Coverity + ;; + esac + if test -r "$build_dir"/cvbuild/build-log.txt + then + upload_item log "$build_dir"/cvbuild/build-log.txt text/plain + fi + else + begin_section "Build$variant" + build "$variant" "$build_dir" >> "$build_log" 2>&1 + if `cat "$build_dir/build_ok"` + then + echo so far so good. + else + record_failure "Build of \"$variant\" failed." + fi + end_section "Build$variant" + fi + else + record_failure "Build Prep for \"$variant\" failed." + fi + end_section "Do$variant" +done + +# If we are building variants in parallel, wait, then collect results. +# This requires that the build dirs are variant specific +if $build_link_parallel && [ x"$build_processes" != x ] +then + begin_section WaitParallel + wait $build_processes + for variant in $variants + do + eval '$build_'"$variant" || continue + eval '$build_'"$arch"_"$variant" || continue + + begin_section "Build$variant" + build_dir=`build_dir_$arch $variant` + build_dir_stubs="$build_dir/win_setup/$variant" + cat "$build_dir/build.log" >> "$build_log" + if `cat "$build_dir/build_ok"` + then + echo so far so good. + else + record_failure "Parallel build of \"$variant\" failed." + fi + end_section "Build$variant" + done + end_section WaitParallel +fi + +# check status and upload results to S3 +if $succeeded +then + if $build_viewer + then + begin_section Upload + # Upload installer - note that ONLY THE FIRST ITEM uploaded as "installer" + # will appear in the version manager. + package=$(installer_$arch) + if [ x"$package" = x ] || test -d "$package" + then + # Coverity doesn't package, so it's ok, anything else is fail + succeeded=$build_coverity + else + upload_item installer "$package" binary/octet-stream + + # Upload crash reporter files. + for symbolfile in $symbolfiles + do + upload_item symbolfile "$build_dir/$symbolfile" binary/octet-stream + done + + # Upload stub installers + upload_stub_installers "$build_dir_stubs" + fi + end_section Upload + else + echo skipping viewer + fi +else + echo skipping upload of build results due to failed build. +fi + +# The branch independent build.sh script invoking this script will finish processing +$succeeded || exit 1 |