From d7e90f4160aaa81e30206c80047b82833c049482 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Thu, 7 Feb 2013 11:56:57 -0500 Subject: derive version number from indra/VIEWER_VERSION.txt --- indra/cmake/BuildVersion.cmake | 58 ++++++++++++++++++++++++++++++++---------- indra/cmake/CMakeLists.txt | 1 - indra/cmake/Variables.cmake | 2 +- 3 files changed, 45 insertions(+), 16 deletions(-) (limited to 'indra/cmake') diff --git a/indra/cmake/BuildVersion.cmake b/indra/cmake/BuildVersion.cmake index 60a519c9af..7ee852bf72 100644 --- a/indra/cmake/BuildVersion.cmake +++ b/indra/cmake/BuildVersion.cmake @@ -1,18 +1,48 @@ # -*- cmake -*- +# Construct the viewer version number based on the indra/VIEWER_VERSION file -include(Python) +if (NOT DEFINED VIEWER_SHORT_VERSION) # will be true in indra/, false in indra/newview/ + set(VIEWER_VERSION_BASE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/newview/VIEWER_VERSION.txt") -macro (build_version _target) - execute_process( - COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/build_version.py - llversion${_target}.h ${LLCOMMON_INCLUDE_DIRS} - OUTPUT_VARIABLE ${_target}_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE - ) + if ( EXISTS ${VIEWER_VERSION_BASE_FILE} ) + file(STRINGS ${VIEWER_VERSION_BASE_FILE} VIEWER_SHORT_VERSION REGEX "^[0-9]+\\.[0-9]+\\.[0-9]+") + string(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" VIEWER_VERSION_MAJOR ${VIEWER_SHORT_VERSION}) + string(REGEX REPLACE "^[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" VIEWER_VERSION_MINOR ${VIEWER_SHORT_VERSION}) + string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" VIEWER_VERSION_PATCH ${VIEWER_SHORT_VERSION}) - if (${_target}_VERSION) - message(STATUS "Version of ${_target} is ${${_target}_VERSION}") - else (${_target}_VERSION) - message(SEND_ERROR "Could not determine ${_target} version") - endif (${_target}_VERSION) -endmacro (build_version) + if (DEFINED ENV{revision}) + set(VIEWER_VERSION_REVISION $ENV{revision}) + message("Revision (from environment): ${VIEWER_VERSION_REVISION}") + + else (DEFINED ENV{revision}) + find_program(MERCURIAL hg) + if (DEFINED MERCURIAL) + execute_process( + COMMAND ${MERCURIAL} parents --template "{rev}" + OUTPUT_VARIABLE VIEWER_VERSION_REVISION + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if (DEFINED VIEWER_VERSION_REVISION) + message("Revision (from hg) ${VIEWER_VERSION_REVISION}") + else (DEFINED VIEWER_VERSION_REVISION) + set(VIEWER_VERSION_REVISION 0 ) + message("Revision not set, repository not found, using ${VIEWER_VERSION_REVISION}") + endif (DEFINED VIEWER_VERSION_REVISION) + else (DEFINED MERCURIAL) + set(VIEWER_VERSION_REVISION 0) + message("Revision not set, 'hg' not found (${MERCURIAL}), using ${VIEWER_VERSION_REVISION}") + endif (DEFINED MERCURIAL) + endif (DEFINED ENV{revision}) + message("Building Version ${VIEWER_SHORT_VERSION} ${VIEWER_VERSION_REVISION}") + else ( EXISTS ${VIEWER_VERSION_BASE_FILE} ) + message(SEND_ERROR "Cannot get viewer version from '${VIEWER_VERSION_BASE_FILE}'") + endif ( EXISTS ${VIEWER_VERSION_BASE_FILE} ) + + set(VIEWER_CHANNEL_VERSION_DEFINES + "LL_VIEWER_CHANNEL=\"${VIEWER_CHANNEL}\"" + "LL_VIEWER_VERSION_MAJOR=${VIEWER_VERSION_MAJOR}" + "LL_VIEWER_VERSION_MINOR=${VIEWER_VERSION_MINOR}" + "LL_VIEWER_VERSION_PATCH=${VIEWER_VERSION_PATCH}" + "LL_VIEWER_VERSION_BUILD=${VIEWER_VERSION_REVISION}" + ) +endif (NOT DEFINED VIEWER_SHORT_VERSION) diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt index 569034a6fb..4f567988b7 100644 --- a/indra/cmake/CMakeLists.txt +++ b/indra/cmake/CMakeLists.txt @@ -12,7 +12,6 @@ set(cmake_SOURCE_FILES Audio.cmake BerkeleyDB.cmake Boost.cmake - BuildVersion.cmake CARes.cmake CURL.cmake CMakeCopyIfDifferent.cmake diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake index 4b459f1a48..6c3b7801b9 100644 --- a/indra/cmake/Variables.cmake +++ b/indra/cmake/Variables.cmake @@ -141,7 +141,7 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(GRID agni CACHE STRING "Target Grid") set(VIEWER ON CACHE BOOL "Build Second Life viewer.") -set(VIEWER_CHANNEL "LindenDeveloper" CACHE STRING "Viewer Channel Name") +set(VIEWER_CHANNEL "Second Life Test" CACHE STRING "Viewer Channel Name") set(VIEWER_LOGIN_CHANNEL ${VIEWER_CHANNEL} CACHE STRING "Fake login channel for A/B Testing") if (XCODE_VERSION GREATER 4.2) -- cgit v1.3 From 5ea68c69a443fb9364c6e86ec373d3bd57382da7 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 12 Feb 2013 10:50:47 -0500 Subject: convert to new channel name scheme and remove login_channel build time parameter --- BuildParams | 41 ++------------------- indra/cmake/Variables.cmake | 1 - indra/lib/python/indra/util/llmanifest.py | 5 +-- indra/newview/CMakeLists.txt | 11 ++---- indra/newview/icons/development/secondlife.icns | Bin 233026 -> 0 bytes indra/newview/icons/development/secondlife.ico | Bin 77117 -> 0 bytes indra/newview/icons/development/secondlife_128.png | Bin 17499 -> 0 bytes indra/newview/icons/development/secondlife_16.png | Bin 3471 -> 0 bytes indra/newview/icons/development/secondlife_256.BMP | Bin 196662 -> 0 bytes indra/newview/icons/development/secondlife_256.png | Bin 47952 -> 0 bytes indra/newview/icons/development/secondlife_32.png | Bin 4649 -> 0 bytes indra/newview/icons/development/secondlife_48.png | Bin 6190 -> 0 bytes indra/newview/icons/development/secondlife_512.png | Bin 147689 -> 0 bytes indra/newview/viewer_manifest.py | 40 +++++++------------- 14 files changed, 22 insertions(+), 76 deletions(-) delete mode 100644 indra/newview/icons/development/secondlife.icns delete mode 100644 indra/newview/icons/development/secondlife.ico delete mode 100644 indra/newview/icons/development/secondlife_128.png delete mode 100644 indra/newview/icons/development/secondlife_16.png delete mode 100644 indra/newview/icons/development/secondlife_256.BMP delete mode 100644 indra/newview/icons/development/secondlife_256.png delete mode 100644 indra/newview/icons/development/secondlife_32.png delete mode 100644 indra/newview/icons/development/secondlife_48.png delete mode 100644 indra/newview/icons/development/secondlife_512.png (limited to 'indra/cmake') diff --git a/BuildParams b/BuildParams index c8edfeaa2f..547a591310 100644 --- a/BuildParams +++ b/BuildParams @@ -21,50 +21,29 @@ email_status_this_is_os = true # Limit extent of codeticket updates to revisions after... codeticket_since = 3.3.0-release -# ======================================== -# Viewer Development -# ======================================== - # Report changes since... viewer-development.show_changes_since = last_sprint # Build Settings -viewer-development_coverity.coverity_product = viewer -viewer-development_coverity.run_tests = false viewer-development.build_debug_release_separately = true # Notifications - to configure email notices, add a setting like this: # _.email = - -# ================================================================= -# Canonical viewer integration builds - Oz Linden -# ================================================================= -integration_viewer-development.viewer_channel = "Second Life Development" -integration_viewer-development.login_channel = "Second Life Development" -integration_viewer-development.build_viewer_update_version_manager = false -integration_viewer-development.email = viewer-development-builds@lists.secondlife.com -integration_viewer-development.build_enforce_coding_policy = false -integration_viewer-development.codeticket_add_context = false - -viewer-beta.viewer_channel = "Second Life Beta Viewer" -viewer-beta.login_channel = "Second Life Beta Viewer" -viewer-beta.build_debug_release_separately = true -viewer-beta.build_viewer_update_version_manager = true -viewer-beta.codeticket_add_context = false +# Example of how to build a Project Beta for the Bingo Project +#bingo-beta.viewer_channel = "Second Life Beta Bingo" +# Example of how to build a Project Integration build for the Bingo Project +#bingo-beta.viewer_channel = "Second Life Project Bingo" viewer-release.viewer_channel = "Second Life Release" -viewer-release.login_channel = "Second Life Release" viewer-release.build_debug_release_separately = true viewer-release.build_viewer_update_version_manager = true viewer-release.codeticket_add_context = false - # ======================================== # mesh-development # ======================================== mesh-development.viewer_channel = "Project Viewer - Mesh" -mesh-development.login_channel = "Project Viewer - Mesh" mesh-development.viewer_grid = aditi mesh-development.build_debug_release_separately = true mesh-development.build_CYGWIN_Debug = false @@ -74,7 +53,6 @@ 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.login_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 @@ -84,7 +62,6 @@ 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.login_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 @@ -94,7 +71,6 @@ 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.login_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 @@ -112,7 +88,6 @@ 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.login_channel = "Project Viewer - Mesh" viewer-mesh.viewer_grid = aditi viewer-mesh.email = shining@lists.lindenlab.com @@ -121,7 +96,6 @@ viewer-mesh.email = shining@lists.lindenlab.com # ======================================== viewer-pathfinding.viewer_channel = "Project Viewer - Pathfinding" -viewer-pathfinding.login_channel = "Project Viewer - Pathfinding" viewer-pathfinding.viewer_grid = agni viewer-pathfinding.build_debug_release_separately = true viewer-pathfinding.build_CYGWIN_Debug = false @@ -131,14 +105,12 @@ viewer-pathfinding.build_viewer_update_version_manager = false # asset delivery 2010 projects # ================================================================= viewer-asset-delivery.viewer_channel = "Second Life Development" -viewer-asset-delivery.login_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.login_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 @@ -155,34 +127,29 @@ simon_viewer-dev-private.email_status_this_is_os = false # Vir # ======================================== vir-project-1.viewer_channel = "Second Life Release" -vir-project-1.login_channel = "Second Life Release" # ======================================== # THX-1138 / Runway projects # ======================================== viewer-thx1138-runway-shared.viewer_channel = "Project Viewer - THX-1138 Runway" -viewer-thx1138-runway-shared.login_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.login_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.login_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.login_channel = "Project Viewer - Runway" runway.viewer_grid = agni runway.build_debug_release_separately = true runway.build_CYGWIN_Debug = false diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake index 6c3b7801b9..296da81e6c 100644 --- a/indra/cmake/Variables.cmake +++ b/indra/cmake/Variables.cmake @@ -142,7 +142,6 @@ set(GRID agni CACHE STRING "Target Grid") set(VIEWER ON CACHE BOOL "Build Second Life viewer.") set(VIEWER_CHANNEL "Second Life Test" CACHE STRING "Viewer Channel Name") -set(VIEWER_LOGIN_CHANNEL ${VIEWER_CHANNEL} CACHE STRING "Fake login channel for A/B Testing") if (XCODE_VERSION GREATER 4.2) set(ENABLE_SIGNING OFF CACHE BOOL "Enable signing the viewer") diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py index eaa94925b1..25a1b95b9a 100644 --- a/indra/lib/python/indra/util/llmanifest.py +++ b/indra/lib/python/indra/util/llmanifest.py @@ -85,7 +85,7 @@ def get_default_platform(dummy): }[sys.platform] DEFAULT_SRCTREE = os.path.dirname(sys.argv[0]) -DEFAULT_CHANNEL = 'Second Life Release' +DEFAULT_CHANNEL = 'Second Life Test' ARGUMENTS=[ dict(name='actions', @@ -119,9 +119,6 @@ ARGUMENTS=[ dict(name='channel', description="""The channel to use for updates, packaging, settings name, etc.""", default='CHANNEL UNSET'), - dict(name='login_channel', - description="""The channel to use for login handshake/updates only.""", - default=None), dict(name='installer_name', description=""" The name of the file that the installer should be packaged up into. Only used on Linux at the moment.""", diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index dbd6a60a7c..22bc09d2df 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1319,17 +1319,15 @@ if (WINDOWS) # Replace the icons with the appropriate ones for the channel # ('test' is the default) set(ICON_PATH "test") + set(VIEWER_MACOSX_PHASE "d") string(TOLOWER ${VIEWER_CHANNEL} channel_lower) if(channel_lower MATCHES "^second life release") set(ICON_PATH "release") set(VIEWER_MACOSX_PHASE "f") - elseif(channel_lower MATCHES "^second life beta viewer") + elseif(channel_lower MATCHES "^second life beta") set(ICON_PATH "beta") set(VIEWER_MACOSX_PHASE "b") - elseif(channel_lower MATCHES "^second life development") - set(ICON_PATH "development") - set(VIEWER_MACOSX_PHASE "d") - elseif(channel_lower MATCHES "project") + elseif(channel_lower MATCHES "^second life project") set(ICON_PATH "project") set(VIEWER_MACOSX_PHASE "a") endif() @@ -1785,7 +1783,6 @@ if (WINDOWS) --configuration=${CMAKE_CFG_INTDIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} --grid=${GRID} - --login_channel=${VIEWER_LOGIN_CHANNEL} --source=${CMAKE_CURRENT_SOURCE_DIR} --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/touched.bat DEPENDS @@ -1912,7 +1909,6 @@ if (LINUX) --dest=${CMAKE_CURRENT_BINARY_DIR}/packaged --grid=${GRID} --installer_name=${product} - --login_channel=${VIEWER_LOGIN_CHANNEL} --source=${CMAKE_CURRENT_SOURCE_DIR} --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched DEPENDS @@ -2029,7 +2025,6 @@ if (DARWIN) --grid=${GRID} --channel=${VIEWER_CHANNEL} --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt - --login_channel=${VIEWER_LOGIN_CHANNEL} --source=${CMAKE_CURRENT_SOURCE_DIR} --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched ${SIGNING_SETTING} diff --git a/indra/newview/icons/development/secondlife.icns b/indra/newview/icons/development/secondlife.icns deleted file mode 100644 index 44f63d384c..0000000000 Binary files a/indra/newview/icons/development/secondlife.icns and /dev/null differ diff --git a/indra/newview/icons/development/secondlife.ico b/indra/newview/icons/development/secondlife.ico deleted file mode 100644 index b53f23ae58..0000000000 Binary files a/indra/newview/icons/development/secondlife.ico and /dev/null differ diff --git a/indra/newview/icons/development/secondlife_128.png b/indra/newview/icons/development/secondlife_128.png deleted file mode 100644 index 9b9fe656fc..0000000000 Binary files a/indra/newview/icons/development/secondlife_128.png and /dev/null differ diff --git a/indra/newview/icons/development/secondlife_16.png b/indra/newview/icons/development/secondlife_16.png deleted file mode 100644 index 91493a033c..0000000000 Binary files a/indra/newview/icons/development/secondlife_16.png and /dev/null differ diff --git a/indra/newview/icons/development/secondlife_256.BMP b/indra/newview/icons/development/secondlife_256.BMP deleted file mode 100644 index 174b22319a..0000000000 Binary files a/indra/newview/icons/development/secondlife_256.BMP and /dev/null differ diff --git a/indra/newview/icons/development/secondlife_256.png b/indra/newview/icons/development/secondlife_256.png deleted file mode 100644 index 29ed40abdc..0000000000 Binary files a/indra/newview/icons/development/secondlife_256.png and /dev/null differ diff --git a/indra/newview/icons/development/secondlife_32.png b/indra/newview/icons/development/secondlife_32.png deleted file mode 100644 index 3b84f5ec77..0000000000 Binary files a/indra/newview/icons/development/secondlife_32.png and /dev/null differ diff --git a/indra/newview/icons/development/secondlife_48.png b/indra/newview/icons/development/secondlife_48.png deleted file mode 100644 index d2636d9d72..0000000000 Binary files a/indra/newview/icons/development/secondlife_48.png and /dev/null differ diff --git a/indra/newview/icons/development/secondlife_512.png b/indra/newview/icons/development/secondlife_512.png deleted file mode 100644 index 75f9b231f4..0000000000 Binary files a/indra/newview/icons/development/secondlife_512.png and /dev/null differ diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 20f64dbf4b..3897db177f 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -160,14 +160,6 @@ class ViewerManifest(LLManifest): if not self.path2basename(os.path.join(os.pardir, os.pardir), "summary.json"): print "No summary.json file" - def login_channel(self): - """Channel reported for login and upgrade purposes ONLY; - used for A/B testing""" - # NOTE: Do not return the normal channel if login_channel - # is not specified, as some code may branch depending on - # whether or not this is present - return self.args.get('login_channel') - def grid(self): return self.args['grid'] def channel(self): @@ -179,16 +171,23 @@ class ViewerManifest(LLManifest): def channel_lowerword(self): return self.channel_oneword().lower() + def app_name(self): + app_suffix='Test' + channel_type=self.channel_lowerword() + if channel_type == 'release' : + app_suffix='Viewer' + elif re.match('(beta|project) .*',channel_type) : + app_suffix=self.channel_unique() + return "Second Life "+app_suffix + def icon_path(self): icon_path="icons/" channel_type=self.channel_lowerword() - if channel_type == 'release' \ - or channel_type == 'development' \ - : + if channel_type == 'release' : icon_path += channel_type - elif channel_type == 'betaviewer' : + elif re.match('beta .*',channel_type) : icon_path += 'beta' - elif re.match('project.*',channel_type) : + elif re.match('project .*',channel_type) : icon_path += 'project' else : icon_path += 'test' @@ -205,14 +204,6 @@ class ViewerManifest(LLManifest): "--helperuri http://preview-%(grid)s.secondlife.com/helpers/" %\ {'grid':self.grid()} - # set command line flags for channel - channel_flags = '' - if self.login_channel() and self.login_channel() != self.channel(): - # Report a special channel during login, but use default - channel_flags = '--channel "%s"' % (self.login_channel()) - elif not self.default_channel(): - channel_flags = '--channel "%s"' % self.channel() - # Deal with settings setting_flags = '' if not self.default_channel() or not self.default_grid(): @@ -223,7 +214,7 @@ class ViewerManifest(LLManifest): setting_flags = '--settings settings_%s_%s.xml'\ % (self.grid(), self.channel_lowerword()) - return " ".join((channel_flags, grid_flags, setting_flags)).strip() + return " ".join((grid_flags, setting_flags)).strip() def extract_names(self,src): try: @@ -883,10 +874,7 @@ class DarwinManifest(ViewerManifest): # Copy everything in to the mounted .dmg - if self.default_channel() and not self.default_grid(): - app_name = "Second Life " + self.args['grid'] - else: - app_name = channel_standin.strip() + app_name = self.app_name() # Hack: # Because there is no easy way to coerce the Finder into positioning -- cgit v1.3 From b0125b513c34e21f17fd8e99d5f76f48edaf5040 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 20 Feb 2013 15:53:17 -0500 Subject: add viewer channel to compile time feedback --- indra/cmake/BuildVersion.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/cmake') diff --git a/indra/cmake/BuildVersion.cmake b/indra/cmake/BuildVersion.cmake index 7ee852bf72..c494355746 100644 --- a/indra/cmake/BuildVersion.cmake +++ b/indra/cmake/BuildVersion.cmake @@ -33,7 +33,7 @@ if (NOT DEFINED VIEWER_SHORT_VERSION) # will be true in indra/, false in indra/n message("Revision not set, 'hg' not found (${MERCURIAL}), using ${VIEWER_VERSION_REVISION}") endif (DEFINED MERCURIAL) endif (DEFINED ENV{revision}) - message("Building Version ${VIEWER_SHORT_VERSION} ${VIEWER_VERSION_REVISION}") + message("Building '${VIEWER_CHANNEL}' Version ${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}") else ( EXISTS ${VIEWER_VERSION_BASE_FILE} ) message(SEND_ERROR "Cannot get viewer version from '${VIEWER_VERSION_BASE_FILE}'") endif ( EXISTS ${VIEWER_VERSION_BASE_FILE} ) -- cgit v1.3 From 54e2d2b000f36b35ab5ab53cf3aeee922e54fbe3 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 21 Feb 2013 01:13:24 -0500 Subject: MAINT-2389: Change viewer to Boost package without ucontext.h. In autobuild.xml, specify today's build of the Boost package that includes the Boost.Context library, and whose boost::dcoroutines library uses Boost.Context exclusively instead of its previous context-switching underpinnings (source of the ucontext.h dependency). Add BOOST_CONTEXT_LIBRARY to Boost.cmake and Copy3rdPartyLibs.cmake. Link it with the viewer and with the lllogin.cpp test executable. Track new Boost package convention that our (early, unofficial) Boost.Coroutine library is now accessed as boost/dcoroutine/etc.h and boost::dcoroutines::etc. Remove #include from llviewerprecompiledheaders.h and lllogin.cpp: old rule that Boost.Coroutine header must be #included before anything else that might use ucontext.h is gone now that we no longer depend on ucontext.h. In fact remove -D_XOPEN_SOURCE in 00-Common.cmake because that was inserted specifically to work around a known problem with the ucontext.h facilities. --- autobuild.xml | 12 +++---- indra/cmake/00-Common.cmake | 7 +--- indra/cmake/Boost.cmake | 54 +++++++++++++++++++--------- indra/cmake/Copy3rdPartyLibs.cmake | 5 +-- indra/llcommon/llcoros.cpp | 2 +- indra/llcommon/llcoros.h | 6 ++-- indra/llcommon/lleventcoro.h | 16 ++++----- indra/llcommon/tests/lleventcoro_test.cpp | 12 +++---- indra/newview/CMakeLists.txt | 1 + indra/newview/llviewerprecompiledheaders.h | 2 -- indra/viewer_components/login/CMakeLists.txt | 5 +++ indra/viewer_components/login/lllogin.cpp | 1 - 12 files changed, 72 insertions(+), 51 deletions(-) (limited to 'indra/cmake') diff --git a/autobuild.xml b/autobuild.xml index 11c2da52dc..5df49d5a39 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -186,9 +186,9 @@ archive hash - ac37d0038c91b0672fa31a02731f0eac + d935c41632303f704bda003a463d929a url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/268347/arch/Darwin/installer/boost-1.52.0-darwin-20121218.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/270616/arch/Darwin/installer/boost-1.52.0-darwin-20130220.tar.bz2 name darwin @@ -198,9 +198,9 @@ archive hash - 146ed8a8c2ef8ab3f0a6c4f214fc5c22 + 45c5f3440f2f0c36ba9f79f66f4a2e5c url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/268347/arch/Linux/installer/boost-1.52.0-linux-20121218.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/270616/arch/Linux/installer/boost-1.52.0-linux-20130221.tar.bz2 name linux @@ -210,9 +210,9 @@ archive hash - 3ea60f17d986b7e8a3351298734bdca4 + b004df5ef67142a2d1efb1d60d7e2da0 url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/268347/arch/CYGWIN/installer/boost-1.52.0-windows-20121218.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/270616/arch/CYGWIN/installer/boost-1.52.0-windows-20130220.tar.bz2 name windows diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 452fd5f356..084ba7ea98 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -192,12 +192,7 @@ endif (LINUX) if (DARWIN) - # NOTE (per http://lists.apple.com/archives/darwin-dev/2008/Jan/msg00232.html): - # > Why the bus error? What am I doing wrong? - # This is a known issue where getcontext(3) is writing past the end of the - # ucontext_t struct when _XOPEN_SOURCE is not defined (rdar://problem/5578699 ). - # As a workaround, define _XOPEN_SOURCE before including ucontext.h. - add_definitions(-DLL_DARWIN=1 -D_XOPEN_SOURCE) + add_definitions(-DLL_DARWIN=1) set(CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names,-search_paths_first") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}") set(DARWIN_extra_cstar_flags "-mlong-branch -g") diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index 1acb2bbbfd..cff762e1f0 100644 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -7,11 +7,12 @@ set(Boost_FIND_REQUIRED ON) if (STANDALONE) include(FindBoost) + set(BOOST_CONTEXT_LIBRARY boost_context-mt) + set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt) set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt) set(BOOST_REGEX_LIBRARY boost_regex-mt) set(BOOST_SIGNALS_LIBRARY boost_signals-mt) set(BOOST_SYSTEM_LIBRARY boost_system-mt) - set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt) set(BOOST_THREAD_LIBRARY boost_thread-mt) else (STANDALONE) use_prebuilt_binary(boost) @@ -20,6 +21,12 @@ else (STANDALONE) if (WINDOWS) if(MSVC80) + set(BOOST_CONTEXT_LIBRARY + optimized libboost_context-vc80-mt-${BOOST_VERSION} + debug libboost_context-vc80-mt-gd-${BOOST_VERSION}) + set(BOOST_FILESYSTEM_LIBRARY + optimized libboost_filesystem-vc80-mt-${BOOST_VERSION} + debug libboost_filesystem-vc80-mt-gd-${BOOST_VERSION}) set(BOOST_PROGRAM_OPTIONS_LIBRARY optimized libboost_program_options-vc80-mt-${BOOST_VERSION} debug libboost_program_options-vc80-mt-gd-${BOOST_VERSION}) @@ -32,59 +39,74 @@ else (STANDALONE) set(BOOST_SYSTEM_LIBRARY optimized libboost_system-vc80-mt-${BOOST_VERSION} debug libboost_system-vc80-mt-gd-${BOOST_VERSION}) - set(BOOST_FILESYSTEM_LIBRARY - optimized libboost_filesystem-vc80-mt-${BOOST_VERSION} - debug libboost_filesystem-vc80-mt-gd-${BOOST_VERSION}) + set(BOOST_THREAD_LIBRARY + optimized libboost_thread-vc80-mt-${BOOST_VERSION} + debug libboost_thread-vc80-mt-gd-${BOOST_VERSION}) else(MSVC80) # MSVC 10.0 config + set(BOOST_CONTEXT_LIBRARY + optimized libboost_context-mt + debug libboost_context-mt-gd) + set(BOOST_FILESYSTEM_LIBRARY + optimized libboost_filesystem-mt + debug libboost_filesystem-mt-gd) set(BOOST_PROGRAM_OPTIONS_LIBRARY optimized libboost_program_options-mt debug libboost_program_options-mt-gd) set(BOOST_REGEX_LIBRARY optimized libboost_regex-mt debug libboost_regex-mt-gd) + set(BOOST_SIGNALS_LIBRARY + optimized libboost_signals-mt + debug libboost_signals-mt-gd) set(BOOST_SYSTEM_LIBRARY optimized libboost_system-mt debug libboost_system-mt-gd) - set(BOOST_FILESYSTEM_LIBRARY - optimized libboost_filesystem-mt - debug libboost_filesystem-mt-gd) set(BOOST_THREAD_LIBRARY optimized libboost_thread-mt debug libboost_thread-mt-gd) endif (MSVC80) elseif (LINUX) + set(BOOST_CONTEXT_LIBRARY + optimized boost_context-mt + debug boost_context-mt-d) + set(BOOST_FILESYSTEM_LIBRARY + optimized boost_filesystem-mt + debug boost_filesystem-mt-d) set(BOOST_PROGRAM_OPTIONS_LIBRARY optimized boost_program_options-mt debug boost_program_options-mt-d) set(BOOST_REGEX_LIBRARY optimized boost_regex-mt debug boost_regex-mt-d) + set(BOOST_SIGNALS_LIBRARY + optimized boost_signals-mt + debug boost_signals-mt-d) set(BOOST_SYSTEM_LIBRARY optimized boost_system-mt debug boost_system-mt-d) - set(BOOST_FILESYSTEM_LIBRARY - optimized boost_filesystem-mt - debug boost_filesystem-mt-d) set(BOOST_THREAD_LIBRARY optimized boost_thread-mt debug boost_thread-mt-d) elseif (DARWIN) - set(BOOST_PROGRAM_OPTIONS_LIBRARY - optimized boost_program_options-mt - debug boost_program_options-mt-d) + set(BOOST_CONTEXT_LIBRARY + optimized boost_context-mt + debug boost_context-mt-d) + set(BOOST_FILESYSTEM_LIBRARY + optimized boost_filesystem-mt + debug boost_filesystem-mt-d) set(BOOST_PROGRAM_OPTIONS_LIBRARY optimized boost_program_options-mt debug boost_program_options-mt-d) set(BOOST_REGEX_LIBRARY optimized boost_regex-mt debug boost_regex-mt-d) + set(BOOST_SIGNALS_LIBRARY + optimized boost_signals-mt + debug boost_signals-mt-d) set(BOOST_SYSTEM_LIBRARY optimized boost_system-mt debug boost_system-mt-d) - set(BOOST_FILESYSTEM_LIBRARY - optimized boost_filesystem-mt - debug boost_filesystem-mt-d) set(BOOST_THREAD_LIBRARY optimized boost_thread-mt debug boost_thread-mt-d) diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index c32e357da3..8457cf5359 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -254,12 +254,13 @@ elseif(LINUX) libapr-1.so.0 libaprutil-1.so.0 libatk-1.0.so + libboost_context-mt.so.${BOOST_VERSION}.0 + libboost_filesystem-mt.so.${BOOST_VERSION}.0 libboost_program_options-mt.so.${BOOST_VERSION}.0 libboost_regex-mt.so.${BOOST_VERSION}.0 - libboost_thread-mt.so.${BOOST_VERSION}.0 - libboost_filesystem-mt.so.${BOOST_VERSION}.0 libboost_signals-mt.so.${BOOST_VERSION}.0 libboost_system-mt.so.${BOOST_VERSION}.0 + libboost_thread-mt.so.${BOOST_VERSION}.0 libbreakpad_client.so.0 libcollada14dom.so libcrypto.so.1.0.0 diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp index 0b5829eb7e..9122704306 100644 --- a/indra/llcommon/llcoros.cpp +++ b/indra/llcommon/llcoros.cpp @@ -115,7 +115,7 @@ std::string LLCoros::getNameByID(const void* self_id) const // passed to us comes. for (CoroMap::const_iterator mi(mCoros.begin()), mend(mCoros.end()); mi != mend; ++mi) { - namespace coro_private = boost::coroutines::detail; + namespace coro_private = boost::dcoroutines::detail; if (static_cast(coro_private::coroutine_accessor::get_impl(const_cast(*mi->second)).get()) == self_id) { diff --git a/indra/llcommon/llcoros.h b/indra/llcommon/llcoros.h index d75f28ec1a..03df406b68 100644 --- a/indra/llcommon/llcoros.h +++ b/indra/llcommon/llcoros.h @@ -29,7 +29,7 @@ #if ! defined(LL_LLCOROS_H) #define LL_LLCOROS_H -#include +#include #include "llsingleton.h" #include #include @@ -78,8 +78,8 @@ class LL_COMMON_API LLCoros: public LLSingleton { public: - /// Canonical boost::coroutines::coroutine signature we use - typedef boost::coroutines::coroutine coro; + /// Canonical boost::dcoroutines::coroutine signature we use + typedef boost::dcoroutines::coroutine coro; /// Canonical 'self' type typedef coro::self self; diff --git a/indra/llcommon/lleventcoro.h b/indra/llcommon/lleventcoro.h index 88a5e6ec74..a42af63b65 100644 --- a/indra/llcommon/lleventcoro.h +++ b/indra/llcommon/lleventcoro.h @@ -29,8 +29,8 @@ #if ! defined(LL_LLEVENTCORO_H) #define LL_LLEVENTCORO_H -#include -#include +#include +#include #include #include #include @@ -206,13 +206,13 @@ LLSD postAndWait(SELF& self, const LLSD& event, const LLEventPumpOrPumpName& req const LLEventPumpOrPumpName& replyPump, const LLSD& replyPumpNamePath=LLSD()) { // declare the future - boost::coroutines::future future(self); + boost::dcoroutines::future future(self); // make a callback that will assign a value to the future, and listen on // the specified LLEventPump with that callback std::string listenerName(LLEventDetail::listenerNameForCoro(self)); LLTempBoundListener connection( replyPump.getPump().listen(listenerName, - voidlistener(boost::coroutines::make_callback(future)))); + voidlistener(boost::dcoroutines::make_callback(future)))); // skip the "post" part if requestPump is default-constructed if (requestPump) { @@ -257,7 +257,7 @@ namespace LLEventDetail * This helper is specifically for the two-pump version of waitForEventOn(). * We use a single future object, but we want to listen on two pumps with it. * Since we must still adapt from (the callable constructed by) - * boost::coroutines::make_callback() (void return) to provide an event + * boost::dcoroutines::make_callback() (void return) to provide an event * listener (bool return), we've adapted LLVoidListener for the purpose. The * basic idea is that we construct a distinct instance of WaitForEventOnHelper * -- binding different instance data -- for each of the pumps. Then, when a @@ -331,16 +331,16 @@ LLEventWithID postAndWait2(SELF& self, const LLSD& event, const LLSD& replyPump1NamePath=LLSD()) { // declare the future - boost::coroutines::future future(self); + boost::dcoroutines::future future(self); // either callback will assign a value to this future; listen on // each specified LLEventPump with a callback std::string name(LLEventDetail::listenerNameForCoro(self)); LLTempBoundListener connection0( replyPump0.getPump().listen(name + "a", - LLEventDetail::wfeoh(boost::coroutines::make_callback(future), 0))); + LLEventDetail::wfeoh(boost::dcoroutines::make_callback(future), 0))); LLTempBoundListener connection1( replyPump1.getPump().listen(name + "b", - LLEventDetail::wfeoh(boost::coroutines::make_callback(future), 1))); + LLEventDetail::wfeoh(boost::dcoroutines::make_callback(future), 1))); // skip the "post" part if requestPump is default-constructed if (requestPump) { diff --git a/indra/llcommon/tests/lleventcoro_test.cpp b/indra/llcommon/tests/lleventcoro_test.cpp index 901ba35b2f..8d12529613 100644 --- a/indra/llcommon/tests/lleventcoro_test.cpp +++ b/indra/llcommon/tests/lleventcoro_test.cpp @@ -64,10 +64,10 @@ // Boost.Coroutine #include is the *first* #include of the platform header. // That means that client code must generally #include Boost.Coroutine headers // before anything else. -#include +#include // Normally, lleventcoro.h obviates future.hpp. We only include this because // we implement a "by hand" test of future functionality. -#include +#include #include #include @@ -87,7 +87,7 @@ /***************************************************************************** * from the banana.cpp example program borrowed for test<1>() *****************************************************************************/ -namespace coroutines = boost::coroutines; +namespace coroutines = boost::dcoroutines; using coroutines::coroutine; template @@ -122,7 +122,7 @@ typedef coroutine match_coroutine_type; * Test helpers *****************************************************************************/ // I suspect this will be typical of coroutines used in Linden software -typedef boost::coroutines::coroutine coroutine_type; +typedef boost::dcoroutines::coroutine coroutine_type; /// Simulate an event API whose response is immediate: sent on receipt of the /// initial request, rather than after some delay. This is the case that @@ -173,10 +173,10 @@ namespace tut // ... do whatever preliminary stuff must happen ... // declare the future - boost::coroutines::future future(self); + boost::dcoroutines::future future(self); // tell the future what to wait for LLTempBoundListener connection( - LLEventPumps::instance().obtain("source").listen("coro", voidlistener(boost::coroutines::make_callback(future)))); + LLEventPumps::instance().obtain("source").listen("coro", voidlistener(boost::dcoroutines::make_callback(future)))); ensure("Not yet", ! future); // attempting to dereference ("resolve") the future causes the calling // coroutine to wait for it diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index e93d73ad0e..fe7ceaeba6 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1823,6 +1823,7 @@ target_link_libraries(${VIEWER_BINARY_NAME} ${viewer_LIBRARIES} ${BOOST_PROGRAM_OPTIONS_LIBRARY} ${BOOST_REGEX_LIBRARY} + ${BOOST_CONTEXT_LIBRARY} ${DBUSGLIB_LIBRARIES} ${OPENGL_LIBRARIES} ${FMODWRAPPER_LIBRARY} # must come after LLAudio diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h index 0316f79973..a565005f30 100644 --- a/indra/newview/llviewerprecompiledheaders.h +++ b/indra/newview/llviewerprecompiledheaders.h @@ -33,8 +33,6 @@ // in viewer. // It is used to precompile headers for improved build speed. -#include - #include "linden_common.h" // Work around stupid Microsoft STL warning diff --git a/indra/viewer_components/login/CMakeLists.txt b/indra/viewer_components/login/CMakeLists.txt index 7720619df3..28b87bf663 100644 --- a/indra/viewer_components/login/CMakeLists.txt +++ b/indra/viewer_components/login/CMakeLists.txt @@ -46,6 +46,11 @@ if(LL_TESTS) SET(lllogin_TEST_SOURCE_FILES lllogin.cpp ) + set_source_files_properties( + lllogin.cpp + PROPERTIES + LL_TEST_ADDITIONAL_LIBRARIES "${BOOST_CONTEXT_LIBRARY}" + ) LL_ADD_PROJECT_UNIT_TESTS(lllogin "${lllogin_TEST_SOURCE_FILES}") endif(LL_TESTS) diff --git a/indra/viewer_components/login/lllogin.cpp b/indra/viewer_components/login/lllogin.cpp index bdcb068200..3357ad812d 100644 --- a/indra/viewer_components/login/lllogin.cpp +++ b/indra/viewer_components/login/lllogin.cpp @@ -23,7 +23,6 @@ * $/LicenseInfo$ */ -#include #include "linden_common.h" #include "llsd.h" #include "llsdutil.h" -- cgit v1.3