Merged in lindenlab/viewer-release

master
AndreyL ProductEngine 2016-05-20 00:03:30 +03:00
commit 445cd96293
8022 changed files with 37101 additions and 44525 deletions

View File

@ -515,3 +515,4 @@ ae3297cdd03ab14f19f3811acbc4acd3eb600336 4.0.0-release
e9d350764dfbf5a46229e627547ef5c1b1eeef00 4.0.2-release
86dfba7ec4332c323025ebeacd8bf343ed0d8cfd 4.0.3-release
0a5de9ec2cb868f367501024d8d6958c20869053 4.0.4-release
450de775fff66a011be1a001acd117cc623c445d 4.0.5-release

View File

@ -19,6 +19,8 @@ build_Linux_Debug = false
build_Darwin_Debug = false
build_Debug = false
# enable Doxygen building on Linux for TeamCity (it can be done manually on any platform)
build_Linux_Doxygen = true
# Update Public Inworld Build Status Indicators (setting should mirror "public_build")
email_status_this_is_os = true
@ -60,7 +62,7 @@ viewer_channel = "Second Life Test"
# the default sourceid should always be a null string:
sourceid = ""
# the additional_packages variable is a blank separated list of package prefixes:
additional_packages = ""
# additional_packages = ""
# to set the special values for a package, create variables using each prefix:
# additional_packages = "Foo Bar"
# Foo_sourceid = "bingo"
@ -71,127 +73,21 @@ additional_packages = ""
# for the package in a setting that overrides the compiled-in value
################################################################
additional_packages = "EDU"
Linux.additional_packages = ""
# The EDU package allows us to create a separate release channel whose expirations
# are synchronized as much as possible with the academic year
EDU_sourceid = ""
EDU_viewer_channel_suffix = "edu"
# Notifications - to configure email notices, add a setting like this:
# <username>_<reponame>.email = <email-address>
# The EDU package allows us to create a separate release channel whose expirations
# are synchronized as much as possible with the academic year
EDU_sourceid = ""
EDU_viewer_channel_suffix = "edu"
# ========================================
# mesh-development
# ========================================
mesh-development.viewer_channel = "Project Viewer - Mesh"
mesh-development.viewer_grid = aditi
mesh-development.build_debug_release_separately = true
mesh-development.build_CYGWIN_Debug = false
mesh-development.build_viewer_update_version_manager = false
# ========================================
# mesh-development-release-1-candidate
# ========================================
mesh-development-release-1-candidate.viewer_channel = "Project Viewer - Mesh"
mesh-development-release-1-candidate.viewer_grid = agni
mesh-development-release-1-candidate.build_debug_release_separately = true
mesh-development-release-1-candidate.build_CYGWIN_Debug = false
mesh-development-release-1-candidate.build_viewer_update_version_manager = false
# ========================================
# mesh-development-rc
# ========================================
mesh-development-rc.viewer_channel = "Project Viewer - Mesh"
mesh-development-rc.viewer_grid = agni
mesh-development-rc.build_debug_release_separately = true
mesh-development-rc.build_CYGWIN_Debug = false
mesh-development-rc.build_viewer_update_version_manager = false
# ========================================
# mesh-asset-deprecation
# ========================================
mesh-asset-deprecation.viewer_channel = "Project Viewer - Mesh Asset Deprecation"
mesh-asset-deprecation.viewer_grid = aditi
mesh-asset-deprecation.build_debug_release_separately = true
mesh-asset-deprecation.build_CYGWIN_Debug = false
mesh-asset-deprecation.build_viewer_update_version_manager = false
# ========================================
# viewer-mesh
# ========================================
viewer-mesh.build_viewer = true
viewer-mesh.build_server = false
viewer-mesh.build_Linux = true
viewer-mesh.build_hg_bundle = true
viewer-mesh.build_viewer_update_version_manager = false
viewer-mesh.build_Debug = false
viewer-mesh.build_RelWithDebInfo = false
viewer-mesh.viewer_channel = "Project Viewer - Mesh"
viewer-mesh.viewer_grid = aditi
viewer-mesh.email = shining@lists.lindenlab.com
# =================================================================
# asset delivery 2010 projects
# =================================================================
viewer-asset-delivery.viewer_channel = "Second Life Development"
viewer-asset-delivery.build_viewer_update_version_manager = false
viewer-asset-delivery.email = monty@lindenlab.com
viewer-asset-delivery.build_server = false
viewer-asset-delivery.build_server_tests = false
viewer-asset-delivery-metrics.viewer_channel = "Second Life Development"
viewer-asset-delivery-metrics.build_viewer_update_version_manager = false
viewer-asset-delivery-metrics.email = monty@lindenlab.com
viewer-asset-delivery-metrics.build_server = false
viewer-asset-delivery-metrics.build_server_tests = false
# ========================================
# Simon says
# ========================================
simon_viewer-dev-private.public_build = false
simon_viewer-dev-private.email_status_this_is_os = false
# Notifications - to configure email notices use the TeamCity parameter
# setting screen for your project or build configuration to set the
# environment variable 'email' to a space-separated list of email addresses
# ========================================
# Vir
# ========================================
vir-project-1.viewer_channel = "Second Life Release"
# ========================================
# Merov
# ========================================
merov-viewer-maint-2287.viewer_channel = "Second Life Project Merchant Outbox"
merov-viewer-maint-2287.login_channel = "Second Life Project Merchant Outbox"
merov-viewer-maint-2287.build_viewer_update_version_manager = false
merov-viewer-maint-2287.codeticket_add_context = false
# ========================================
# THX-1138 / Runway projects
# ========================================
viewer-thx1138-runway-shared.viewer_channel = "Project Viewer - THX-1138 Runway"
viewer-thx1138-runway-shared.viewer_grid = uma
viewer-thx1138-runway-shared.build_debug_release_separately = true
viewer-thx1138-runway-shared.build_CYGWIN_Debug = false
viewer-thx1138-runway-shared.build_viewer_update_version_manager = false
viewer-thx1138.viewer_channel = "Project Viewer - THX-1138"
viewer-thx1138.viewer_grid = uma
viewer-thx1138.build_debug_release_separately = true
viewer-thx1138.build_CYGWIN_Debug = false
viewer-thx1138.build_viewer_update_version_manager = false
runway-merge.viewer_channel = "Project Viewer - Runway Merge"
runway-merge.viewer_grid = agni
runway-merge.build_debug_release_separately = true
runway-merge.build_CYGWIN_Debug = false
runway-merge.build_viewer_update_version_manager = false
runway.viewer_channel = "Project Viewer - Runway"
runway.viewer_grid = agni
runway.build_debug_release_separately = true
runway.build_CYGWIN_Debug = false
runway.build_viewer_update_version_manager = false
# eof

17
README.md Normal file
View File

@ -0,0 +1,17 @@
Second Life Viewer
====================
This project manages the source code for the
[Second Life](https://www.secondlife.com) Viewer.
This source is available as open source; for details on licensing, see
[the licensing page on the Second Life wiki](https://wiki.secondlife.com/wiki/Linden_Lab_Official:Second_Life_Viewer_Licensing_Program)
For information on how to use and contribute to this, see
[the open source portal on the wiki](https://wiki.secondlife.com/wiki/Open_Source_Portal).
To download the current default version, visit
[the download page](https://secondlife.com/support/downloads). For
even newer versions try
[the Alternate Viewers page](https://wiki.secondlife.com/wiki/Linden_Lab_Official:Alternate_Viewers)

173
build.sh
View File

@ -1,10 +1,13 @@
#!/bin/sh
# This is a the master build script - it is intended to be run by the Linden
# Lab build farm
# 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.
# This is the custom build script for the viewer
#
# It must be run by the Linden Lab build farm shared buildscript because
# it relies on the environment that sets up, functions it provides, and
# the build result post-processing it does.
#
# The shared buildscript build.sh invokes this because it is named 'build.sh',
# which is the default custom build script name in buildscripts/hg/BuildParams
#
# PLEASE NOTE:
#
@ -12,7 +15,6 @@
# 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
check_for()
{
@ -94,13 +96,11 @@ installer_CYGWIN()
pre_build()
{
local variant="$1"
begin_section "Pre$variant"
begin_section "Configure $variant"
[ -n "$master_message_template_checkout" ] \
&& [ -r "$master_message_template_checkout/message_template.msg" ] \
&& template_verifier_master_url="-DTEMPLATE_VERIFIER_MASTER_URL=file://$master_message_template_checkout/message_template.msg"
check_for "Confirm dictionaries are installed before 'autobuild configure'" ${build_dir}/packages/dictionaries
"$autobuild" configure -c $variant -- \
-DPACKAGE:BOOL=ON \
-DRELEASE_CRASH_REPORTING:BOOL=ON \
@ -109,7 +109,7 @@ pre_build()
-DLL_TESTS:BOOL="$run_tests" \
-DTEMPLATE_VERIFIER_OPTIONS:STRING="$template_verifier_options" $template_verifier_master_url
end_section "Pre$variant"
end_section "Configure $variant"
}
package_llphysicsextensions_tpv()
@ -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 --quiet --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 --quiet --config-file $llpetpvcfg --results-file "$(native_path $PKGTMP)"
tpv_status=$?
if [ -r "${PKGTMP}" ]
then
@ -134,7 +134,7 @@ package_llphysicsextensions_tpv()
echo "${autobuild_package_filename}" > $build_dir/llphysicsextensions_package
fi
else
echo "Do not provide llphysicsextensions_tpv for $variant"
record_event "Do not provide llphysicsextensions_tpv for $variant"
llphysicsextensions_package=""
fi
end_section "PhysicsExtensions_TPV"
@ -146,16 +146,15 @@ build()
local variant="$1"
if $build_viewer
then
begin_section "Viewer$variant"
"$autobuild" build --no-configure -c $variant
build_ok=$?
end_section "Viewer$variant"
# Run build extensions
if [ $build_ok -eq 0 -a -d ${build_dir}/packages/build-extensions ]; then
for extension in ${build_dir}/packages/build-extensions/*.sh; do
begin_section "Extension $extension"
. $extension
end_section "Extension $extension"
if [ $build_ok -ne 0 ]; then
break
fi
@ -174,28 +173,6 @@ build()
fi
}
# This is called from the branch independent script upon completion of all platform builds.
build_docs()
{
begin_section "Building Documentation"
begin_section "Autobuild metadata"
if [ -r "$build_dir/autobuild-package.xml" ]
then
upload_item docs "$build_dir/autobuild-package.xml" text/xml
else
record_event "no metadata at '$build_dir/autobuild-package.xml'"
fi
end_section "Autobuild metadata"
if [ "$arch" != "Linux" ]
then
record_dependencies_graph # defined in build.sh
else
echo "TBD - skipping linux graph (probable python version dependency)" 1>&2
fi
end_section "Building Documentation"
}
# Check to see if we were invoked from the wrapper, if not, re-exec ourselves from there
if [ "x$arch" = x ]
then
@ -207,7 +184,7 @@ then
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
This repository is located at http://bitbucket.org/lindenlabinternal/sl-buildscripts
EOF
exit 1
fi
@ -229,6 +206,13 @@ fi
# load autobuild provided shell functions and variables
eval "$("$autobuild" source_environment)"
# something about the additional_packages mechanism messes up buildscripts results.py on Linux
# since we don't care about those packages on Linux, just zero it out, yes - a HACK
if [ "$arch" = "Linux" ]
then
export additional_packages=
fi
# dump environment variables for debugging
begin_section "Environment"
env|sort
@ -246,70 +230,69 @@ do
# Only the last built arch is available for upload
last_built_variant="$variant"
begin_section "Do$variant"
build_dir=`build_dir_$arch $variant`
build_dir_stubs="$build_dir/win_setup/$variant"
begin_section "PreClean"
begin_section "Initialize $variant Build Directory"
rm -rf "$build_dir"
end_section "PreClean"
mkdir -p "$build_dir"
mkdir -p "$build_dir/tmp"
end_section "Initialize $variant Build Directory"
if pre_build "$variant" "$build_dir" >> "$build_log" 2>&1
if pre_build "$variant" "$build_dir"
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
else
begin_section "Build$variant"
begin_section "Build $variant"
build "$variant" "$build_dir" 2>&1 | tee -a "$build_log" | sed -n 's/^ *\(##teamcity.*\)/\1/p'
if `cat "$build_dir/build_ok"`
then
echo so far so good.
case "$variant" in
Release)
if [ -r "$build_dir/autobuild-package.xml" ]
then
begin_section "Autobuild metadata"
upload_item docs "$build_dir/autobuild-package.xml" text/xml
if [ "$arch" != "Linux" ]
then
record_dependencies_graph # defined in buildscripts/hg/bin/build.sh
else
record_event "TBD - no dependency graph for linux (probable python version dependency)" 1>&2
fi
end_section "Autobuild metadata"
else
record_event "no autobuild metadata at '$build_dir/autobuild-package.xml'"
fi
;;
Doxygen)
if [ -r "$build_dir/doxygen_warnings.log" ]
then
record_event "Doxygen warnings generated; see doxygen_warnings.log"
upload_item log "$build_dir/doxygen_warnings.log" text/plain
fi
if [ -d "$build_dir/doxygen/html" ]
then
tar -c -f "$build_dir/viewer-doxygen.tar.bz2" --strip-components 3 "$build_dir/doxygen/html"
upload_item docs "$build_dir/viewer-doxygen.tar.bz2" binary/octet-stream
fi
;;
*)
;;
esac
else
record_failure "Build of \"$variant\" failed."
record_failure "Build of \"$variant\" failed."
fi
end_section "Build$variant"
fi
end_section "Build $variant"
else
record_failure "Build Prep for \"$variant\" failed."
record_event "configure for $variant failed: build skipped"
fi
if ! $succeeded
then
record_event "remaining variants skipped due to $variant failure"
break
fi
end_section "Do$variant"
done
build_docs
# 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"
tee -a $build_log < "$build_dir/build.log" | sed -n 's/^ *\(##teamcity.*\)/\1/p'
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
# build debian package
if [ "$arch" == "Linux" ]
then
@ -376,7 +359,7 @@ then
end_section "Upload Debian Repository"
else
echo skipping debian build
echo debian build not enabled
fi
else
echo skipping debian build due to failed build.
@ -422,41 +405,33 @@ then
upload_item symbolfile "$build_dir/$symbolfile" binary/octet-stream
done
# Upload the actual dependencies used
if [ -r "$build_dir/packages/installed-packages.xml" ]
then
upload_item installer "$build_dir/packages/installed-packages.xml" text/xml
fi
# Upload the llphysicsextensions_tpv package, if one was produced
# *TODO: Make this an upload-extension
if [ -r "$build_dir/llphysicsextensions_package" ]
then
llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package)
upload_item private_artifact "$llphysicsextensions_package" binary/octet-stream
else
echo "No llphysicsextensions_package"
fi
;;
*)
echo "Skipping mapfile for $last_built_variant"
;;
esac
# Run upload extensions
if [ -d ${build_dir}/packages/upload-extensions ]; then
for extension in ${build_dir}/packages/upload-extensions/*.sh; do
begin_section "Upload Extension $extension"
. $extension
end_section "Upload Extension $extension"
done
fi
# Upload stub installers
upload_stub_installers "$build_dir_stubs"
fi
end_section Upload Installer
else
echo skipping upload of installer
fi
else
echo skipping upload of installer due to failed build.
fi

8
debian/source/lintian-overrides vendored Normal file
View File

@ -0,0 +1,8 @@
# Linden packages install in opt/linden
secondlife-viewer: dir-or-file-in-opt
secondlife-viewer: section-is-dh_make-template
secondlife-viewer: binary-without-manpage
secondlife-viewer: maintainer-script-empty postrm
secondlife-viewer: maintainer-script-empty preinst
secondlife-viewer: maintainer-script-empty prerm
secondlife-viewer: unstripped-binary-or-object

View File

@ -11,7 +11,7 @@ summary, see http://creativecommons.org/licenses/by-sa/3.0/.
Notwithstanding the foregoing, all of Linden Lab's trademarks, including
but not limited to the Second Life brand name and Second Life Eye-in-Hand
logo, are subject to our trademark policy at
http://secondlife.com/corporate/trademark/.
http://secondlife.com/corporate/brand/trademark/.
If you distribute any copies or adaptations of the Second Life viewer
artwork or any other works in these files, you must include this Notice

View File

@ -7,7 +7,9 @@ you under the terms of the GNU Lesser General Public License, version 2.1
("LGPL"), unless you have obtained a separate licensing agreement
("Other License"), formally executed by you and Linden Lab. Terms of
the GPL can be found in doc/LGPL-license.txt in this distribution, or
online at http://secondlife.com/developers/opensource/lgplv2_1
online at
https://wiki.secondlife.com/wiki/Linden_Lab_Official:GNU_Lesser_General_Public_License,_version_2.1
By copying, modifying or distributing this software, you acknowledge
that you have read and understood your obligations described above,

View File

@ -185,9 +185,11 @@ Ansariel Hiller
BUG-3764
STORM-1984
STORM-1979
STORM-2083
MAINT-5533
STORM-2094
MAINT-5756
MAINT-2199
MAINT-4677
Aralara Rajal
Arare Chantilly
CHUIBUG-191
@ -319,6 +321,8 @@ Cinder Roxley
BUG-8786
OPEN-185
OPEN-282
OPEN-292
OPEN-297
STORM-1703
STORM-1948
STORM-1831
@ -726,6 +730,12 @@ Jonathan Yap
STORM-2030
STORM-2034
STORM-2018
STORM-2082
STORM-2086
STORM-2085
STORM-2088
STORM-2094
STORM-2099
Kadah Coba
STORM-1060
STORM-1843
@ -1007,6 +1017,7 @@ Nicky Dasmijn
STORM-1937
OPEN-187
STORM-2010
STORM-2082
Nicky Perian
OPEN-1
STORM-1087
@ -1249,6 +1260,8 @@ Sovereign Engineer
OPEN-217
OPEN-295
MAINT-6107
STORM-2107
MAINT-6218
SpacedOut Frye
VWR-34
VWR-45

5
indra/CMakeLists.txt Executable file → Normal file
View File

@ -39,8 +39,6 @@ add_subdirectory(${LIBS_OPEN_PREFIX}llvfs)
add_subdirectory(${LIBS_OPEN_PREFIX}llwindow)
add_subdirectory(${LIBS_OPEN_PREFIX}llxml)
add_subdirectory(${LIBS_OPEN_PREFIX}lscript)
if (WINDOWS AND EXISTS ${LIBS_CLOSED_DIR}copy_win_scripts)
add_subdirectory(${LIBS_CLOSED_PREFIX}copy_win_scripts)
endif (WINDOWS AND EXISTS ${LIBS_CLOSED_DIR}copy_win_scripts)
@ -85,8 +83,11 @@ endif (LINUX)
add_subdirectory(${VIEWER_PREFIX}newview)
add_dependencies(viewer secondlife-bin)
add_subdirectory(${VIEWER_PREFIX}doxygen EXCLUDE_FROM_ALL)
if (LL_TESTS)
# Define after the custom targets are created so
# individual apps can add themselves as dependencies
add_subdirectory(${INTEGRATION_TESTS_PREFIX}integration_tests)
endif (LL_TESTS)

0
indra/cmake/00-Common.cmake Executable file → Normal file
View File

0
indra/cmake/APR.cmake Executable file → Normal file
View File

0
indra/cmake/Audio.cmake Executable file → Normal file
View File

0
indra/cmake/BerkeleyDB.cmake Executable file → Normal file
View File

0
indra/cmake/Boost.cmake Executable file → Normal file
View File

47
indra/cmake/BuildVersion.cmake Executable file → Normal file
View File

@ -15,27 +15,33 @@ if (NOT DEFINED VIEWER_SHORT_VERSION) # will be true in indra/, false in indra/n
message("Revision (from environment): ${VIEWER_VERSION_REVISION}")
else (DEFINED ENV{revision})
find_program(MERCURIAL hg)
find_program(WORDCOUNT wc)
find_program(SED sed)
if (DEFINED MERCURIAL AND DEFINED WORDCOUNT AND DEFINED SED)
execute_process(
COMMAND ${MERCURIAL} log -r tip:0 --template '\\n'
COMMAND ${WORDCOUNT} -l
COMMAND ${SED} "s/ //g"
OUTPUT_VARIABLE VIEWER_VERSION_REVISION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
message("Revision (from hg) ${VIEWER_VERSION_REVISION}")
else ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
message("Revision not set (repository not found?); using 0")
set(VIEWER_VERSION_REVISION 0 )
endif ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
else (DEFINED MERCURIAL AND DEFINED WORDCOUNT AND DEFINED SED)
message("Revision not set: 'hg', 'wc' or 'sed' not found; using 0")
find_program(MERCURIAL
NAMES hg
PATHS [HKEY_LOCAL_MACHINE\\Software\\TortoiseHG]
PATH_SUFFIXES Mercurial)
mark_as_advanced(MERCURIAL)
if (MERCURIAL)
execute_process(COMMAND ${MERCURIAL} identify --num --rev tip
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE hg_id_result
ERROR_VARIABLE hg_id_error
OUTPUT_VARIABLE VIEWER_VERSION_REVISION
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (NOT ${hg_id_result} EQUAL 0)
message(SEND_ERROR "Revision number generation failed with output:\n${hg_id_error}")
else (NOT ${hg_id_result} EQUAL 0)
string(REGEX REPLACE "[^0-9a-f]" "" VIEWER_VERSION_REVISION ${VIEWER_VERSION_REVISION})
endif (NOT ${hg_id_result} EQUAL 0)
if ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
message("Revision (from hg) ${VIEWER_VERSION_REVISION}")
else ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
message("Revision not set (repository not found?); using 0")
set(VIEWER_VERSION_REVISION 0 )
endif ("${VIEWER_VERSION_REVISION}" MATCHES "^[0-9]+$")
else (MERCURIAL)
message("Revision not set: mercurial not found; using 0")
set(VIEWER_VERSION_REVISION 0)
endif (DEFINED MERCURIAL AND DEFINED WORDCOUNT AND DEFINED SED)
endif (MERCURIAL)
endif (DEFINED ENV{revision})
message("Building '${VIEWER_CHANNEL}' Version ${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}")
else ( EXISTS ${VIEWER_VERSION_BASE_FILE} )
@ -53,5 +59,6 @@ if (NOT DEFINED VIEWER_SHORT_VERSION) # will be true in indra/, false in indra/n
"LL_VIEWER_VERSION_MINOR=${VIEWER_VERSION_MINOR}"
"LL_VIEWER_VERSION_PATCH=${VIEWER_VERSION_PATCH}"
"LL_VIEWER_VERSION_BUILD=${VIEWER_VERSION_REVISION}"
"LLBUILD_CONFIG=\"${CMAKE_BUILD_TYPE}\""
)
endif (NOT DEFINED VIEWER_SHORT_VERSION)

0
indra/cmake/CMakeCopyIfDifferent.cmake Executable file → Normal file
View File

2
indra/cmake/CMakeLists.txt Executable file → Normal file
View File

@ -14,6 +14,7 @@ set(cmake_SOURCE_FILES
Boost.cmake
BuildVersion.cmake
CEFPlugin.cmake
CEFPlugin.cmake
CMakeCopyIfDifferent.cmake
ConfigurePkgConfig.cmake
CURL.cmake
@ -78,7 +79,6 @@ set(cmake_SOURCE_FILES
LLVFS.cmake
LLWindow.cmake
LLXML.cmake
LScript.cmake
Linking.cmake
MediaPluginBase.cmake
NDOF.cmake

0
indra/cmake/CURL.cmake Executable file → Normal file
View File

0
indra/cmake/Copy3rdPartyLibs.cmake Executable file → Normal file
View File

0
indra/cmake/DBusGlib.cmake Executable file → Normal file
View File

0
indra/cmake/DeploySharedLibs.cmake Executable file → Normal file
View File

0
indra/cmake/DirectX.cmake Executable file → Normal file
View File

0
indra/cmake/DragDrop.cmake Executable file → Normal file
View File

0
indra/cmake/EXPAT.cmake Executable file → Normal file
View File

0
indra/cmake/ExamplePlugin.cmake Executable file → Normal file
View File

0
indra/cmake/FindAPR.cmake Executable file → Normal file
View File

0
indra/cmake/FindAutobuild.cmake Executable file → Normal file
View File

0
indra/cmake/FindBerkeleyDB.cmake Executable file → Normal file
View File

0
indra/cmake/FindGLH.cmake Executable file → Normal file
View File

0
indra/cmake/FindGoogleBreakpad.cmake Executable file → Normal file
View File

0
indra/cmake/FindGooglePerfTools.cmake Executable file → Normal file
View File

0
indra/cmake/FindHUNSPELL.cmake Executable file → Normal file
View File

0
indra/cmake/FindJsonCpp.cmake Executable file → Normal file
View File

0
indra/cmake/FindNDOF.cmake Executable file → Normal file
View File

0
indra/cmake/FindOpenJPEG.cmake Executable file → Normal file
View File

0
indra/cmake/FindSCP.cmake Executable file → Normal file
View File

0
indra/cmake/FindXmlRpcEpi.cmake Executable file → Normal file
View File

0
indra/cmake/FindZLIB.cmake Executable file → Normal file
View File

0
indra/cmake/FreeType.cmake Executable file → Normal file
View File

0
indra/cmake/GLH.cmake Executable file → Normal file
View File

0
indra/cmake/GLOD.cmake Executable file → Normal file
View File

0
indra/cmake/GStreamer010Plugin.cmake Executable file → Normal file
View File

0
indra/cmake/GetPrerequisites_2_8.cmake Executable file → Normal file
View File

0
indra/cmake/Glui.cmake Executable file → Normal file
View File

0
indra/cmake/Glut.cmake Executable file → Normal file
View File

0
indra/cmake/GoogleBreakpad.cmake Executable file → Normal file
View File

0
indra/cmake/GoogleMock.cmake Executable file → Normal file
View File

0
indra/cmake/GooglePerfTools.cmake Executable file → Normal file
View File

0
indra/cmake/Havok.cmake Executable file → Normal file
View File

0
indra/cmake/Hunspell.cmake Executable file → Normal file
View File

0
indra/cmake/JPEG.cmake Executable file → Normal file
View File

0
indra/cmake/JsonCpp.cmake Executable file → Normal file
View File

0
indra/cmake/LLAudio.cmake Executable file → Normal file
View File

0
indra/cmake/LLCharacter.cmake Executable file → Normal file
View File

0
indra/cmake/LLCommon.cmake Executable file → Normal file
View File

0
indra/cmake/LLCoreHttp.cmake Executable file → Normal file
View File

0
indra/cmake/LLCrashLogger.cmake Executable file → Normal file
View File

0
indra/cmake/LLImage.cmake Executable file → Normal file
View File

0
indra/cmake/LLImageJ2COJ.cmake Executable file → Normal file
View File

0
indra/cmake/LLInventory.cmake Executable file → Normal file
View File

0
indra/cmake/LLKDU.cmake Executable file → Normal file
View File

0
indra/cmake/LLLogin.cmake Executable file → Normal file
View File

0
indra/cmake/LLMath.cmake Executable file → Normal file
View File

0
indra/cmake/LLMessage.cmake Executable file → Normal file
View File

0
indra/cmake/LLPhysicsExtensions.cmake Executable file → Normal file
View File

0
indra/cmake/LLPlugin.cmake Executable file → Normal file
View File

0
indra/cmake/LLPrimitive.cmake Executable file → Normal file
View File

0
indra/cmake/LLRender.cmake Executable file → Normal file
View File

0
indra/cmake/LLSharedLibs.cmake Executable file → Normal file
View File

0
indra/cmake/LLTestCommand.cmake Executable file → Normal file
View File

0
indra/cmake/LLUI.cmake Executable file → Normal file
View File

0
indra/cmake/LLVFS.cmake Executable file → Normal file
View File

0
indra/cmake/LLWindow.cmake Executable file → Normal file
View File

0
indra/cmake/LLXML.cmake Executable file → Normal file
View File

View File

@ -1,16 +0,0 @@
# -*- cmake -*-
set(LSCRIPT_INCLUDE_DIRS
${LIBS_OPEN_DIR}/lscript
${LIBS_OPEN_DIR}/lscript/lscript_compile
${LIBS_OPEN_DIR}/lscript/lscript_execute
${LIBS_OPEN_DIR}/lscript/lscript_execute_mono
)
set(LSCRIPT_LIBRARIES
lscript_compile
lscript_execute
lscript_library
)
set(LSCRIPT_EXECUTE_MONO_LIBRARIES lscript_execute_mono)

0
indra/cmake/Linking.cmake Executable file → Normal file
View File

0
indra/cmake/MediaPluginBase.cmake Executable file → Normal file
View File

0
indra/cmake/NDOF.cmake Executable file → Normal file
View File

0
indra/cmake/NVAPI.cmake Executable file → Normal file
View File

0
indra/cmake/OPENAL.cmake Executable file → Normal file
View File

0
indra/cmake/OpenGL.cmake Executable file → Normal file
View File

0
indra/cmake/OpenJPEG.cmake Executable file → Normal file
View File

0
indra/cmake/OpenSSL.cmake Executable file → Normal file
View File

0
indra/cmake/PNG.cmake Executable file → Normal file
View File

0
indra/cmake/PluginAPI.cmake Executable file → Normal file
View File

0
indra/cmake/Prebuilt.cmake Executable file → Normal file
View File

0
indra/cmake/PulseAudio.cmake Executable file → Normal file
View File

0
indra/cmake/Python.cmake Executable file → Normal file
View File

0
indra/cmake/QuickTimePlugin.cmake Executable file → Normal file
View File

0
indra/cmake/TemplateCheck.cmake Executable file → Normal file
View File

0
indra/cmake/Tut.cmake Executable file → Normal file
View File

0
indra/cmake/UI.cmake Executable file → Normal file
View File

0
indra/cmake/UnixInstall.cmake Executable file → Normal file
View File

0
indra/cmake/Variables.cmake Executable file → Normal file
View File

0
indra/cmake/ViewerMiscLibs.cmake Executable file → Normal file
View File

0
indra/cmake/VisualLeakDetector.cmake Executable file → Normal file
View File

0
indra/cmake/XmlRpcEpi.cmake Executable file → Normal file
View File

0
indra/cmake/ZLIB.cmake Executable file → Normal file
View File

0
indra/cmake/cmake_dummy.cpp Executable file → Normal file
View File

View File

@ -47,6 +47,8 @@ $/LicenseInfo$
import os
import sys
import errno
import HTMLParser
import re
import signal
import subprocess
@ -76,7 +78,7 @@ def main(command, libpath=[], vars={}):
# No idea what the right pathname might be! But only crump if this
# feature is requested.
if libpath:
raise NotImplemented("run_build_test: unknown platform %s" % sys.platform)
raise RuntimeError("run_build_test: unknown platform %s" % sys.platform)
lpvars = []
for var in lpvars:
# Split the existing path. Bear in mind that the variable in question
@ -148,15 +150,158 @@ def translate_rc(rc):
if rc >= 0:
return "terminated with rc %s" % rc
# Negative rc means the child was terminated by signal -rc.
rc = -rc
for attr in dir(signal):
if attr.startswith('SIG') and getattr(signal, attr) == rc:
strc = attr
break
if sys.platform.startswith("win"):
# From http://stackoverflow.com/questions/20629027/process-finished-with-exit-code-1073741571
# [-1073741571] is the signed integer representation of Microsoft's
# "stack overflow/stack exhaustion" error code 0xC00000FD.
# Anytime you see strange, large negative exit codes in windows, convert
# them to hex and then look them up in the ntstatus error codes
# http://msdn.microsoft.com/en-us/library/cc704588.aspx
# Python bends over backwards to give you all the integer precision
# you need, avoiding truncation. But only with 32-bit signed ints is
# -1073741571 equivalent to 0xC00000FD! Explicitly truncate before
# converting.
hexrc = "0x%X" % (rc & 0xFFFFFFFF)
# At this point, we're only trying to format the rc to make it easier
# for a human being to understand. Any exception here -- file doesn't
# exist, HTML parsing error, unrecognized table structure, unknown key
# -- should NOT kill the script! It should only cause us to shrug and
# present our caller with the best information available.
try:
table = get_windows_table()
symbol, desc = table[hexrc]
except Exception, err:
print >>sys.stderr, "(%s -- carrying on)" % err
return "terminated with rc %s (%s)" % (rc, hexrc)
else:
return "terminated with rc %s: %s: %s" % (hexrc, symbol, desc)
else:
strc = str(rc)
return "terminated by signal %s" % strc
# On Posix, negative rc means the child was terminated by signal -rc.
rc = -rc
for attr in dir(signal):
if attr.startswith('SIG') and getattr(signal, attr) == rc:
strc = attr
break
else:
strc = str(rc)
return "terminated by signal %s" % strc
class TableParser(HTMLParser.HTMLParser):
"""
This HTMLParser subclass is designed to parse the table we know exists
in windows-rcs.html, hopefully without building in too much knowledge of
the specific way that table is currently formatted.
"""
# regular expression matching any string containing only whitespace
whitespace = re.compile(r'\s*$')
def __init__(self):
# Because Python 2.x's HTMLParser is an old-style class, we must use
# old-style syntax to forward the __init__() call -- not super().
HTMLParser.HTMLParser.__init__(self)
# this will collect all the data, eventually
self.table = []
# Stack whose top (last item) indicates where to append current
# element data. When empty, don't collect data at all.
self.dest = []
def handle_starttag(self, tag, attrs):
if tag == "table":
# This is the outermost tag we recognize. Collect nested elements
# within self.table.
self.dest.append(self.table)
elif tag in ("tr", "td"):
# Nested elements whose contents we want to capture as sublists.
# To the list currently designated by the top of the dest stack,
# append a new empty sublist.
self.dest[-1].append([])
# Now push THAT new, empty list as the new top of the dest stack.
self.dest.append(self.dest[-1][-1])
elif tag == "p":
# We could handle <p> ... </p> just like <tr> or <td>, but that
# introduces an unnecessary extra level of nesting. Just skip.
pass
else:
# For any tag we don't recognize (notably <th>), push a new, empty
# list to the top of the dest stack. This new list is NOT
# referenced by anything in self.table; thus, when we pop it, any
# data we've collected inside that list will be discarded.
self.dest.append([])
def handle_endtag(self, tag):
# Because we avoid pushing self.dest for <p> in handle_starttag(), we
# must refrain from popping it for </p> here.
if tag != "p":
# For everything else, including unrecognized tags, pop the dest
# stack, reverting to outer collection.
self.dest.pop()
def handle_startendtag(self, tag, attrs):
# The table of interest contains <td> entries of the form:
# <p>0x00000000<br />STATUS_SUCCESS</p>
# The <br/> is very useful -- we definitely want two different data
# items for "0x00000000" and "STATUS_SUCCESS" -- but we don't need or
# want it to push, then discard, an empty list as it would if we let
# the default HTMLParser.handle_startendtag() call handle_starttag()
# followed by handle_endtag(). Just ignore <br/> or any other
# singleton tag.
pass
def handle_data(self, data):
# Outside the <table> of interest, self.dest is empty. Do not bother
# collecting data when self.dest is empty.
# HTMLParser calls handle_data() with every chunk of whitespace
# between tags. That would be lovely if our eventual goal was to
# reconstitute the original input stream with its existing formatting,
# but for us, whitespace only clutters the table. Ignore it.
if self.dest and not self.whitespace.match(data):
# Here we're within our <table> and we have non-whitespace data.
# Append it to the list designated by the top of the dest stack.
self.dest[-1].append(data)
# cache for get_windows_table()
_windows_table = None
def get_windows_table():
global _windows_table
# If we already loaded _windows_table, no need to load it all over again.
if _windows_table:
return _windows_table
# windows-rcs.html was fetched on 2015-03-24 with the following command:
# curl -o windows-rcs.html \
# https://msdn.microsoft.com/en-us/library/cc704588.aspx
parser = TableParser()
with open(os.path.join(os.path.dirname(__file__), "windows-rcs.html")) as hf:
# We tried feeding the file data to TableParser in chunks, to avoid
# buffering the entire file as a single string. Unfortunately its
# handle_data() cannot tell the difference between distinct calls
# separated by HTML tags, and distinct calls necessitated by a chunk
# boundary. Sigh! Read in the whole file. At the time this was
# written, it was only 500KB anyway.
parser.feed(hf.read())
parser.close()
table = parser.table
# With our parser, any <tr><th>...</th></tr> row leaves a table entry
# consisting only of an empty list. Remove any such.
while table and not table[0]:
table.pop(0)
# We expect rows of the form:
# [['0x00000000', 'STATUS_SUCCESS'],
# ['The operation completed successfully.']]
# The latter list will have multiple entries if Microsoft embedded <br/>
# or <p> ... </p> in the text, in which case joining with '\n' is
# appropriate.
# Turn that into a dict whose key is the hex string, and whose value is
# the pair (symbol, desc).
_windows_table = dict((key, (symbol, '\n'.join(desc)))
for (key, symbol), desc in table)
return _windows_table
if __name__ == "__main__":
from optparse import OptionParser

Some files were not shown because too many files have changed in this diff Show More