diff options
-rwxr-xr-x | build.sh | 36 | ||||
-rwxr-xr-x | indra/cmake/FindAutobuild.cmake | 21 | ||||
-rwxr-xr-x | indra/newview/viewer_manifest.py | 4 | ||||
-rwxr-xr-x | scripts/automated_build_scripts/opensrc-build.sh | 391 | ||||
-rwxr-xr-x | scripts/packages-formatter.py | 6 |
5 files changed, 22 insertions, 436 deletions
@@ -101,7 +101,7 @@ pre_build() check_for "Confirm dictionaries are installed before 'autobuild configure'" ${build_dir}/packages/dictionaries - "$AUTOBUILD" configure -c $variant -- \ + "$autobuild" configure -c $variant -- \ -DPACKAGE:BOOL=ON \ -DRELEASE_CRASH_REPORTING:BOOL=ON \ -DVIEWER_CHANNEL:STRING="\"$viewer_channel\"" \ @@ -119,12 +119,12 @@ package_llphysicsextensions_tpv() if [ "$variant" = "Release" ] then llpetpvcfg=$build_dir/packages/llphysicsextensions/autobuild-tpv.xml - "$AUTOBUILD" build --verbose --config-file $llpetpvcfg -c Tpv + "$autobuild" build --verbose --config-file $llpetpvcfg -c Tpv # capture the package file name for use in upload later... PKGTMP=`mktemp -t pgktpv.XXXXXX` trap "rm $PKGTMP* 2>/dev/null" 0 - "$AUTOBUILD" package --verbose --config-file $llpetpvcfg --results-file "$(native_path $PKGTMP)" + "$autobuild" package --verbose --config-file $llpetpvcfg --results-file "$(native_path $PKGTMP)" tpv_status=$? if [ -r "${PKGTMP}" ] then @@ -148,7 +148,7 @@ build() then begin_section "Viewer$variant" - "$AUTOBUILD" build --no-configure -c $variant + "$autobuild" build --no-configure -c $variant build_ok=$? end_section "Viewer$variant" @@ -216,30 +216,16 @@ fi # Check to see if we're skipping the platform eval '$build_'"$arch" || pass -if [ -z "$AUTOBUILD" ] +# set "$autobuild" to cygwin path form for use locally in this script +autobuild="$(shell_path "$AUTOBUILD")" +if [ ! -x "$autobuild" ] then - export autobuild_dir="$here/../../../autobuild/bin/" - if [ -d "$autobuild_dir" ] - then - export AUTOBUILD="$autobuild_dir"autobuild - if [ -x "$AUTOBUILD" ] - then - # *HACK - bash doesn't know how to pass real pathnames to native windows python - case "$arch" in - CYGWIN) AUTOBUILD=$(cygpath -u $AUTOBUILD.cmd) ;; - esac - else - record_failure "Not executable: $AUTOBUILD" - exit 1 - fi - else - record_failure "Not found: $autobuild_dir" - exit 1 - fi + record_failure "AUTOBUILD not executable: '$autobuild'" + exit 1 fi -# load autbuild provided shell functions and variables -eval "$("$AUTOBUILD" source_environment)" +# load autobuild provided shell functions and variables +eval "$("$autobuild" source_environment)" # dump environment variables for debugging begin_section "Environment" diff --git a/indra/cmake/FindAutobuild.cmake b/indra/cmake/FindAutobuild.cmake index 84ae41e8aa..ea5ad6d108 100755 --- a/indra/cmake/FindAutobuild.cmake +++ b/indra/cmake/FindAutobuild.cmake @@ -4,7 +4,7 @@ # # Output variables: # -# AUTOBUILD_EXECUTABLE - path to autobuild or pautobuild executable +# AUTOBUILD_EXECUTABLE - path to autobuild executable @@ -13,12 +13,9 @@ IF (NOT AUTOBUILD_EXECUTABLE) # If cmake was executed by autobuild, autobuild will have set the AUTOBUILD env var IF (DEFINED ENV{AUTOBUILD}) SET(AUTOBUILD_EXECUTABLE $ENV{AUTOBUILD}) - # In case $AUTOBUILD is a cygwin path, fix it back to Windows style - STRING(REGEX REPLACE "^/cygdrive/(.)/" "\\1:/" AUTOBUILD_EXECUTABLE - "${AUTOBUILD_EXECUTABLE}") ELSE (DEFINED ENV{AUTOBUILD}) IF(WIN32) - SET(AUTOBUILD_EXE_NAMES autobuild.cmd autobuild.exe) + SET(AUTOBUILD_EXE_NAMES autobuild.exe autobuild.cmd) ELSE(WIN32) SET(AUTOBUILD_EXE_NAMES autobuild) ENDIF(WIN32) @@ -28,21 +25,19 @@ IF (NOT AUTOBUILD_EXECUTABLE) AUTOBUILD_EXECUTABLE NAMES ${AUTOBUILD_EXE_NAMES} PATHS - ENV PATH - ${CMAKE_SOURCE_DIR}/.. - ${CMAKE_SOURCE_DIR}/../.. - ${CMAKE_SOURCE_DIR}/../../.. + ENV PATH + ${CMAKE_SOURCE_DIR}/.. + ${CMAKE_SOURCE_DIR}/../.. + ${CMAKE_SOURCE_DIR}/../../.. PATH_SUFFIXES "/autobuild/bin/" ) ENDIF (DEFINED ENV{AUTOBUILD}) - IF (AUTOBUILD_EXECUTABLE) - GET_FILENAME_COMPONENT(_autobuild_name ${AUTOBUILD_EXECUTABLE} NAME_WE) - ELSE (AUTOBUILD_EXECUTABLE) + IF (NOT AUTOBUILD_EXECUTABLE) IF (AUTOBUILD_FIND_REQUIRED) MESSAGE(FATAL_ERROR "Could not find autobuild executable") ENDIF (AUTOBUILD_FIND_REQUIRED) - ENDIF (AUTOBUILD_EXECUTABLE) + ENDIF (NOT AUTOBUILD_EXECUTABLE) MARK_AS_ADVANCED(AUTOBUILD_EXECUTABLE) ENDIF (NOT AUTOBUILD_EXECUTABLE) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 954e454080..666823e583 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -38,7 +38,7 @@ viewer_dir = os.path.dirname(__file__) # Put it FIRST because some of our build hosts have an ancient install of # indra.util.llmanifest under their system Python! sys.path.insert(0, os.path.join(viewer_dir, os.pardir, "lib", "python")) -from indra.util.llmanifest import LLManifest, main, proper_windows_path, path_ancestors, CHANNEL_VENDOR_BASE, RELEASE_CHANNEL, ManifestError +from indra.util.llmanifest import LLManifest, main, path_ancestors, CHANNEL_VENDOR_BASE, RELEASE_CHANNEL, ManifestError try: from llbase import llsd except ImportError: @@ -582,7 +582,7 @@ class Windows_i686_Manifest(ViewerManifest): while (not installer_created) and (nsis_attempts > 0): try: nsis_attempts-=1; - self.run_command('"' + proper_windows_path(NSIS_path) + '" ' + self.dst_path_of(tempfile)) + self.run_command('"' + NSIS_path + '" ' + self.dst_path_of(tempfile)) installer_created=True # if no exception was raised, the codesign worked except ManifestError, err: if nsis_attempts: diff --git a/scripts/automated_build_scripts/opensrc-build.sh b/scripts/automated_build_scripts/opensrc-build.sh deleted file mode 100755 index c1b592a972..0000000000 --- a/scripts/automated_build_scripts/opensrc-build.sh +++ /dev/null @@ -1,391 +0,0 @@ -#!/bin/sh - -# This is the build script used by Linden Lab's autmated build system. -# - -set -x - -export PATH=/bin:/usr/bin:$PATH -arch=`uname | cut -b-6` -here=`echo $0 | sed 's:[^/]*$:.:'` -year=`date +%Y` -branch=`svn info | grep '^URL:' | sed 's:.*/::'` -revision=`svn info | grep '^Revision:' | sed 's/.*: //'` - -[ x"$WGET_CACHE" = x ] && export WGET_CACHE=/var/tmp/parabuild/wget -[ x"$S3GET_URL" = x ] && export S3GET_URL=http://viewer-source-downloads.s3.amazonaws.com/$year -[ x"$S3PUT_URL" = x ] && export S3PUT_URL=https://s3.amazonaws.com/viewer-source-downloads/$year -[ x"$PUBLIC_URL" = x ] && export PUBLIC_URL=http://secondlife.com/developers/opensource/downloads/$year -[ x"$PUBLIC_EMAIL" = x ] && export PUBLIC_EMAIL=sldev-commits@lists.secondlife.com - -# Make sure command worked and bail out if not, reporting failure to parabuild -fail() -{ - release_lock - echo "BUILD FAILED" $@ - exit 1 -} - -pass() -{ - release_lock - echo "BUILD SUCCESSFUL" - exit 0 -} - -# Locking to avoid contention with u-s-c -LOCK_CREATE=/usr/bin/lockfile-create -LOCK_TOUCH=/usr/bin/lockfile-touch -LOCK_REMOVE=/usr/bin/lockfile-remove -LOCK_PROCESS= - -locking_available() -{ - test -x "$LOCK_CREATE"\ - -a -x "$LOCK_TOUCH"\ - -a -x "$LOCK_REMOVE" -} - -acquire_lock() -{ - if locking_available - then - if "$LOCK_CREATE" /var/lock/update-system-config --retry 99 - then - "$LOCK_TOUCH" /var/lock/update-system-config & - LOCK_PROCESS="$!" - else - fail acquire lock - fi - else - true - fi -} - -release_lock() -{ - if locking_available - then - if test x"$LOCK_PROCESS" != x - then - kill "$LOCK_PROCESS" - "$LOCK_REMOVE" /var/lock/update-system-config - else - echo No Lock Acquired >&2 - fi - else - true - fi -} - -get_asset() -{ - mkdir -p "$WGET_CACHE" || fail creating WGET_CACHE - local tarball=`basename "$1"` - test -r "$WGET_CACHE/$tarball" || ( cd "$WGET_CACHE" && curl --location --remote-name "$1" || fail getting $1 ) - case "$tarball" in - *.zip) unzip -qq -d .. -o "$WGET_CACHE/$tarball" || fail unzip $tarball ;; - *.tar.gz|*.tgz) tar -C .. -xzf "$WGET_CACHE/$tarball" || fail untar $tarball ;; - *) fail unrecognized filetype: $tarball ;; - esac -} - -s3_available() -{ - test -x "$helpers/s3get.sh" -a -x "$helpers/s3put.sh" -a -r "$helpers/s3curl.pl" -} - -build_dir_Darwin() -{ - echo build-darwin-universal -} - -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" -} - -# deal with aborts etc.. -trap fail 1 2 3 14 15 - -# Check location -cd "$here/../.." - -test -x ../linden/scripts/automated_build_scripts/opensrc-build.sh\ - || fail 'The parent dir of your checkout needs to be named "linden"' - -. doc/asset_urls.txt -get_asset "$SLASSET_ART" - - -# Set up platform specific stuff -case "$arch" in - -# Note that we can only build the "Release" variant for Darwin, because of a compiler bug: -# ld: bl out of range (-16777272 max is +/-16M) -# from __static_initialization_and_destruction_0(int, int)at 0x033D319C -# in __StaticInit of -# indra/build-darwin-universal/newview/SecondLife.build/Debug/Second Life.build/Objects-normal/ppc/llvoicevisualizer.o -# to ___cxa_atexit$island_2 at 0x023D50F8 -# in __text of -# indra/build-darwin-universal/newview/SecondLife.build/Debug/Second Life.build/Objects-normal/ppc/Second Life -# in __static_initialization_and_destruction_0(int, int) -# from indra/build-darwin-universal/newview/SecondLife.build/Debug/Second Life.build/Objects-normal/ppc/llvoicevisualizer.o - -Darwin) - helpers=/usr/local/buildscripts/generic_vc - variants="Release" - cmake_generator="Xcode" - fmod=fmodapi375mac - fmod_tar="$fmod.zip" - fmod_so=libfmod.a - fmod_lib=lib - target_dirs="libraries/universal-darwin/lib_debug - libraries/universal-darwin/lib_release - libraries/universal-darwin/lib_release_client" - other_archs="$S3GET_URL/$branch/$revision/CYGWIN $S3GET_URL/$branch/$revision/Linux" - mail="$helpers"/mail.py - all_done="$helpers"/all_done.py - get_asset "$SLASSET_LIBS_DARWIN" - ;; - -CYGWIN) - helpers=/cygdrive/c/buildscripts - variants="Debug RelWithDebInfo Release" - #variants="Release" - cmake_generator="vc80" - fmod=fmodapi375win - fmod_tar=fmodapi375win.zip - fmod_so=fmodvc.lib - fmod_lib=lib - target_dirs="libraries/i686-win32/lib/debug - libraries/i686-win32/lib/release" - other_archs="$S3GET_URL/$branch/$revision/Darwin $S3GET_URL/$branch/$revision/Linux" - export PATH="/cygdrive/c/Python25:/cygdrive/c/Program Files/Cmake 2.6/bin":$PATH - export PERL="/cygdrive/c/Perl/bin/perl.exe" - export S3CURL="C:\\buildscripts\s3curl.pl" - export CURL="C:\\cygwin\\bin\\curl.exe" - mail="C:\\buildscripts\\mail.py" - all_done="C:\\buildscripts\\all_done.py" - get_asset "$SLASSET_LIBS_WIN32" - ;; - -Linux) - helpers=/var/opt/parabuild/buildscripts/generic_vc - [ x"$CXX" = x ] && test -x /usr/bin/g++-4.1 && export CXX=/usr/bin/g++-4.1 - acquire_lock - variants="Debug RelWithDebInfo Release" - #variants="Release" - cmake_generator="Unix Makefiles" - fmod=fmodapi375linux - fmod_tar="$fmod".tar.gz - fmod_so=libfmod-3.75.so - fmod_lib=. - target_dirs="libraries/i686-linux/lib_debug - libraries/i686-linux/lib_release - libraries/i686-linux/lib_release_client" - other_archs="$S3GET_URL/$branch/$revision/Darwin $S3GET_URL/$branch/$revision/CYGWIN" - mail="$helpers"/mail.py - all_done="$helpers"/all_done.py - # Change the DISTCC_DIR to be somewhere that the parabuild process can write to - if test -r /etc/debian_version - then - [ x"$DISTCC_DIR" = x ] && export DISTCC_DIR=/var/tmp/parabuild - case `cat /etc/debian_version` in - 3.*) [ x"$DISTCC_HOSTS" = x ]\ - && export DISTCC_HOSTS="build-linux-1 - build-linux-2 - build-linux-3 - build-linux-4 - build-linux-5" ;; - 4.*) [ x"$DISTCC_HOSTS" = x ]\ - && export DISTCC_HOSTS="build-linux-6 - build-linux-7 - build-linux-8 - build-linux-9" ;; - esac - fi - - get_asset "$SLASSET_LIBS_LINUXI386" - ;; - -*) fail undefined $arch ;; -esac - -get_asset "http://www.fmod.org/index.php/release/version/$fmod_tar" - -# Special case for Mac... -case "$arch" in - -Darwin) - if lipo -create -output "../$fmod"/api/$fmod_lib/libfmod-universal.a\ - "../$fmod"/api/$fmod_lib/libfmod.a\ - "../$fmod"/api/$fmod_lib/libfmodx86.a - then - mv "../$fmod"/api/$fmod_lib/libfmod.a "../$fmod"/api/$fmod_lib/libfmodppc.a - mv "../$fmod"/api/$fmod_lib/libfmod-universal.a "../$fmod"/api/$fmod_lib/libfmod.a - echo Created fat binary - else - fail running lipo - fi - ;; - -esac - -# ensure helpers are up to date -( cd "$helpers" && svn up ) - -# First, go into the directory where the code was checked out by Parabuild -cd indra - -# This is the way it works now, but it will soon work on a variant dependent way -for target_dir in $target_dirs -do - mkdir -p "../$target_dir" - cp -f "../../$fmod/api/$fmod_lib/$fmod_so" "../$target_dir" -done -mkdir -p "../libraries/include" -cp -f "../../$fmod/api/inc/"* "../libraries/include" - -# Special Windows case -test -r "../../$fmod/api/fmod.dll" && cp -f "../../$fmod/api/fmod.dll" newview - -# Now run the build command over all variants -succeeded=true -cp /dev/null build.log - -### TEST CODE - remove when done -### variants= -### echo "Artificial build failure to test notifications" > build.log -### succeeded=false -### END TEST CODE - -for variant in $variants -do - build_dir=`build_dir_$arch $variant` - rm -rf "$build_dir" - # This is the way it will work in future - #for target_dir in $target_dirs - #do - # mkdir -p "$build_dir/$target_dir" - # cp "../../$fmod/api/$fmod_lib/$fmod_so" "$build_dir/$target_dir" - #done - #mkdir -p "$build_dir/libraries/include" - #cp "../../$fmod/api/inc/"* "$build_dir/libraries/include" - echo "==== $variant ====" >> build.log - if ./develop.py \ - --unattended \ - --incredibuild \ - -t $variant \ - -G "$cmake_generator" \ - configure \ - -DPACKAGE:BOOL=ON >>build.log 2>&1 - then - if ./develop.py\ - --unattended\ - --incredibuild \ - -t $variant\ - -G "$cmake_generator" \ - build package >>build.log 2>&1 - then - # run tests if needed - true - else - succeeded=false - fi - else - succeeded=false - fi -done - -# check statuis and upload results to S3 -subject= -if $succeeded -then - package=`installer_$arch` - test -r "$package" || fail not found: $package - package_file=`echo $package | sed 's:.*/::'` - if s3_available - then - echo "$PUBLIC_URL/$branch/$revision/$package_file" > "$arch" - echo "$PUBLIC_URL/$branch/$revision/good-build.$arch" >> "$arch" - "$helpers/s3put.sh" "$package" "$S3PUT_URL/$branch/$revision/$package_file" binary/octet-stream\ - || fail Uploading "$package" - "$helpers/s3put.sh" build.log "$S3PUT_URL/$branch/$revision/good-build.$arch" text/plain\ - || fail Uploading build.log - "$helpers/s3put.sh" "$arch" "$S3PUT_URL/$branch/$revision/$arch" text/plain\ - || fail Uploading token file - if python "$all_done"\ - curl\ - "$S3GET_URL/$branch/$revision/$arch"\ - $other_archs > message - then - subject="Successful Build for $branch ($revision)" - fi - else - true s3 is not available - fi -else - if s3_available - then - "$helpers/s3put.sh" build.log "$S3PUT_URL/$branch/$revision/failed-build.$arch" text/plain\ - || fail Uploading build.log - subject="Failed Build for $branch ($revision) on $arch" - cat >message <<EOF -Build for $branch ($revision) failed for $arch. -Please see the build log for details: - -$PUBLIC_URL/$branch/$revision/failed-build.$arch - -EOF - else - true s3 is not available - fi -fi - -# We have something to say... -if [ x"$subject" != x ] -then - # Extract change list since last build - if [ x"$PARABUILD_CHANGE_LIST_NUMBER" = x ] - then - echo "No change information available" >> message - elif [ x"$PARABUILD_PREVIOUS_CHANGE_LIST_NUMBER" = x ] - then - ( cd .. && svn log --verbose --stop-on-copy --limit 50 ) >>message - else - ( cd .. && svn log --verbose -r"$PARABUILD_PREVIOUS_CHANGE_LIST_NUMBER":"$PARABUILD_CHANGE_LIST_NUMBER" ) >>message - fi - # $PUBLIC_EMAIL can be a list, so no quotes - python "$mail" "$subject" $PUBLIC_EMAIL <message -fi - -if $succeeded -then - pass -else - fail -fi - diff --git a/scripts/packages-formatter.py b/scripts/packages-formatter.py index 7e5e690e49..4e66cf9ed4 100755 --- a/scripts/packages-formatter.py +++ b/scripts/packages-formatter.py @@ -30,11 +30,7 @@ import errno import re import subprocess -_autobuild=os.getenv('AUTOBUILD', - 'autobuild' if not ( sys.platform == 'win32' or sys.platform == 'cygwin') - else 'autobuild.cmd') -# HACK: temporarily work around cygwin /cygdrive/c madness -_autobuild = re.sub(r"^/cygdrive/(.)/", r"\1:/", _autobuild) +_autobuild=os.getenv('AUTOBUILD', 'autobuild') pkg_line=re.compile('^([\w-]+):\s+(.*)$') |