Merge fix for MAINT-5360

Mon, 07 Mar 2016 18:42:17 +0200

author
AndreyL ProductEngine <alihatskiy@productengine.com>
date
Mon, 07 Mar 2016 18:42:17 +0200
changeset 48914
9951ebb842b6
parent 48910
c11071c1f802
parent 48913
45d214139f46
child 48915
b11d9da3c1bf
child 48918
ca9da6367c91

Merge fix for MAINT-5360

autobuild.xml file | annotate | diff | revisions
     1.1 --- a/BuildParams	Thu Mar 03 00:15:33 2016 +0200
     1.2 +++ b/BuildParams	Mon Mar 07 18:42:17 2016 +0200
     1.3 @@ -70,15 +70,12 @@
     1.4  # the viewer_channel_suffix is prefixed by a blank and then appended to the viewer_channel
     1.5  # for the package in a setting that overrides the compiled-in value
     1.6  ################################################################
     1.7 -## Removed 2015-07-02 (MAINT-5360) until we fix packaging step in Team City
     1.8 -## additional_packages = "EDU"
     1.9 +additional_packages = "EDU"
    1.10  
    1.11  # The EDU package allows us to create a separate release channel whose expirations
    1.12  # are synchronized as much as possible with the academic year
    1.13 -## Removed 2015-07-02 (MAINT-5360) until we fix packaging step in Team City
    1.14 -## EDU_sourceid = ""
    1.15 -## Removed 2015-07-02 (MAINT-5360) until we fix packaging step in Team City
    1.16 -## EDU_viewer_channel_suffix = "edu"
    1.17 +EDU_sourceid = ""
    1.18 +EDU_viewer_channel_suffix = "edu"
    1.19  
    1.20  # Notifications - to configure email notices, add a setting like this:
    1.21  # <username>_<reponame>.email = <email-address>
     2.1 --- a/indra/llcorehttp/CMakeLists.txt	Thu Mar 03 00:15:33 2016 +0200
     2.2 +++ b/indra/llcorehttp/CMakeLists.txt	Mon Mar 07 18:42:17 2016 +0200
     2.3 @@ -141,6 +141,43 @@
     2.4                            "${CMAKE_CURRENT_SOURCE_DIR}/tests/test_llcorehttp_peer.py"
     2.5                            )
     2.6  
     2.7 +if (DARWIN)
     2.8 +  # Path inside the app bundle where we'll need to copy libraries
     2.9 +  set(LL_TEST_DESTINATION_DIR
    2.10 +    ${CMAKE_SOURCE_DIR}/../build-darwin-i386/sharedlibs/Resources
    2.11 +  )
    2.12 +
    2.13 +  # Create the Contents/Resources directory
    2.14 +  add_custom_command(
    2.15 +    TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
    2.16 +    COMMAND ${CMAKE_COMMAND}
    2.17 +    ARGS
    2.18 +      -E
    2.19 +      make_directory
    2.20 +      ${LL_TEST_DESTINATION_DIR}
    2.21 +    COMMENT "Creating Resources directory in app bundle."
    2.22 +  )
    2.23 +  
    2.24 +  # Copy the required libraries to the package app
    2.25 +  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
    2.26 +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libapr-1.0.dylib ${LL_TEST_DESTINATION_DIR}
    2.27 +    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libapr-1.0.dylib
    2.28 +  )
    2.29 +  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
    2.30 +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libaprutil-1.0.dylib ${LL_TEST_DESTINATION_DIR}
    2.31 +    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libaprutil-1.0.dylib
    2.32 +  )
    2.33 +  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
    2.34 +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexception_handler.dylib ${LL_TEST_DESTINATION_DIR}
    2.35 +    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexception_handler.dylib
    2.36 +  )
    2.37 +  add_custom_command(TARGET INTEGRATION_TEST_llcorehttp PRE_BUILD
    2.38 +    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexpat.1.5.2.dylib ${LL_TEST_DESTINATION_DIR}
    2.39 +    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexpat.1.5.2.dylib
    2.40 +  )
    2.41 +
    2.42 +endif (DARWIN)
    2.43 +
    2.44    #
    2.45    # Example Programs
    2.46    #
     3.1 --- a/indra/media_plugins/cef/CMakeLists.txt	Thu Mar 03 00:15:33 2016 +0200
     3.2 +++ b/indra/media_plugins/cef/CMakeLists.txt	Mon Mar 07 18:42:17 2016 +0200
     3.3 @@ -114,4 +114,12 @@
     3.4      LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp"
     3.5    )
     3.6  
     3.7 +  add_custom_command(TARGET media_plugin_cef
     3.8 +    POST_BUILD COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "@executable_path/Chromium Embedded Framework"
     3.9 +        "@executable_path/../../../../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework"
    3.10 +        "$<TARGET_FILE:media_plugin_cef>"
    3.11 +    VERBATIM
    3.12 +    COMMENT "Fixing path to CEF Framework"
    3.13 +  )
    3.14 +
    3.15  endif (DARWIN)
     4.1 --- a/indra/newview/viewer_manifest.py	Thu Mar 03 00:15:33 2016 +0200
     4.2 +++ b/indra/newview/viewer_manifest.py	Mon Mar 07 18:42:17 2016 +0200
     4.3 @@ -28,6 +28,7 @@
     4.4  """
     4.5  import sys
     4.6  import os.path
     4.7 +import shutil
     4.8  import errno
     4.9  import re
    4.10  import tarfile
    4.11 @@ -855,14 +856,17 @@
    4.12                  # This code constructs a relative path from the
    4.13                  # target framework folder back to the location of the symlink.
    4.14                  # It needs to be relative so that the symlink still works when
    4.15 -                # (as is normal) the user moves the app bunlde out of the DMG
    4.16 +                # (as is normal) the user moves the app bundle out of the DMG
    4.17                  # and into the /Applications folder. Note we also call 'raise'
    4.18                  # to terminate the process if we get an error since without
    4.19                  # this symlink, Second Life web media can't possibly work.
    4.20                  # Real Framework folder:
    4.21                  #   Second Life.app/Contents/Frameworks/Chromium Embedded Framework.framework/
    4.22 -                # Location of symlink and why it'ds relavie 
    4.23 +                # Location of symlink and why it'ds relative 
    4.24                  #   Second Life.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework/
    4.25 +                # Real Frameworks folder, with the symlink inside the bundled SLPlugin.app (and why it's relative)
    4.26 +                #   <top level>.app/Contents/Frameworks/Chromium Embedded Framework.framework/
    4.27 +                #   <top level>.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework ->
    4.28                  frameworkpath = os.path.join(os.pardir, os.pardir, os.pardir, os.pardir, "Frameworks", "Chromium Embedded Framework.framework")
    4.29                  try:
    4.30                      symlinkf(frameworkpath, pluginframeworkpath)
    4.31 @@ -872,10 +876,6 @@
    4.32  
    4.33              self.end_prefix("Contents")
    4.34  
    4.35 -        # fix up media_plugin.dylib so it knows where to look for CEF files it needs
    4.36 -        self.run_command('install_name_tool -change "@executable_path/Chromium Embedded Framework" "@executable_path/../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework" "%(config)s/Second Life.app/Contents/Resources/llplugin/media_plugin_cef.dylib"' %
    4.37 -                        { 'config' : self.args['configuration'] })
    4.38 -
    4.39          # NOTE: the -S argument to strip causes it to keep enough info for
    4.40          # annotated backtraces (i.e. function names in the crash log).  'strip' with no
    4.41          # arguments yields a slightly smaller binary but makes crash logs mostly useless.
    4.42 @@ -1247,12 +1247,33 @@
    4.43          # file, but that strategy doesn't work so well if we don't have
    4.44          # permissions to remove it. Check to see if it's already the
    4.45          # symlink we want, which is the usual reason for EEXIST.
    4.46 -        if not (os.path.islink(dst) and os.readlink(dst) == src):
    4.47 -            # Here either dst isn't a symlink or it's the wrong symlink.
    4.48 -            # Remove and recreate. Caller will just have to deal with any
    4.49 -            # exceptions at this stage.
    4.50 +        elif os.path.islink(dst):
    4.51 +            if os.readlink(dst) == src:
    4.52 +                # the requested link already exists
    4.53 +                pass
    4.54 +            else:
    4.55 +                # dst is the wrong symlink; attempt to remove and recreate it
    4.56 +                os.remove(dst)
    4.57 +                os.symlink(src, dst)
    4.58 +        elif os.path.isdir(dst):
    4.59 +            print "Requested symlink (%s) exists but is a directory; replacing" % dst
    4.60 +            shutil.rmtree(dst)
    4.61 +            os.symlink(src, dst)
    4.62 +        elif os.path.exists(dst):
    4.63 +            print "Requested symlink (%s) exists but is a file; replacing" % dst
    4.64              os.remove(dst)
    4.65              os.symlink(src, dst)
    4.66 +        else:
    4.67 +            # see if the problem is that the parent directory does not exist
    4.68 +            # and try to explain what is missing
    4.69 +            (parent, tail) = os.path.split(dst)
    4.70 +            while not os.path.exists(parent):
    4.71 +                (parent, tail) = os.path.split(parent)
    4.72 +            if tail:
    4.73 +                raise Exception("Requested symlink (%s) cannot be created because %s does not exist"
    4.74 +                                % os.path.join(parent, tail))
    4.75 +            else:
    4.76 +                raise
    4.77  
    4.78  if __name__ == "__main__":
    4.79      main()

mercurial