summaryrefslogtreecommitdiff
path: root/indra/newview/viewer_manifest.py
AgeCommit message (Collapse)Author
2017-12-21MAINT-8119 Fix. A change elsewhere in the viewer_manifest.py script that ↵callum_linden
copies files into the right place after a build impacted the fragment of code that copies over the VLC runtime files (Libvlc.dll, libvlccore.dll and the VLC plugins dir) and they never made it to the right place. This change restores that copy
2017-12-07MAINT-8069: Pass any command-line arguments through to SL_Launcher.Nat Goodspeed
2017-12-07MAINT-8070: Tweak macOS embedded app names (flyover text) per ProductNat Goodspeed
2017-12-06MAINT-7751: Respond to Coyot's code-review suggestions.Nat Goodspeed
2017-12-06MAINT-7751: Add shbang line to macOS trampoline script.Nat Goodspeed
This evidently makes all the difference as to whether the app is considered launchable.
2017-12-04MAINT-7751: Rework DarwinManifest to produce new app bundle structure.Nat Goodspeed
Specifically, Second Life.app is now mostly just a wrapper. Its Contents/ Resources contains nested Launcher.app (the VMP) and Viewer.app (the viewer itself). Most of what used to be in the top-level Second Life.app has been relocated to the embedded Viewer.app. VMP stuff has of course been extracted to Launcher.app. The top-level Second Life.app executable is now a tiny script that runs Launcher.app. This structure permits different icons and different Dock flyover text for the launcher and the viewer, hopefully ameliorating a certain amount of user confusion about the dual icons. This requires a corresponding VMP change: on macOS, the VMP must now find both its resources and the viewer executable by walking up from Launcher.app and down again into its sibling Viewer.app. Since Dock flyover text is determined by the embedded app names, allow Product to change these at will. That means we should be able to tweak exactly one variable assignment to change either of those embedded app names, without having to chase down other references scattered throughout the source repo. For that reason, create top-level trampoline SL_Launcher script dynamically: it must reference the launcher app by name. That means we must also perform (the equivalent of) chmod +x on that generated script. The one mystery surrounding this restructuring is that without a top-level Frameworks symlink pointing to the embedded Viewer.app's Frameworks directory (where CEF lives), CEF refuses to start: no splash screen, no MoP. Perhaps we can fix that someday. Use Python's bundled plistlib to generate Info.plist files for the embedded applications. Reorganize stray code stanzas to try to help the structure of the code more or less resemble the structure of the desired result. Add ViewerManifest.relpath() method to determine the relative path from a specified base to the target path. If base omitted, assumes get_dst_prefix() -- handy for creating symlinks. Determining exactly the right number of os.pardir instances to concatenate into the relative pathname for a symlink (or an install_name_tool stamp) was tedious, fragile and unobvious, difficult to desk-check. Using relpath() should make all that more robust. Migrate symlinkf() from free function to ViewerManifest method, refactoring into _symlinkf_prep_dst() and _symlinkf(), adding relsymlinkf(). This lets us add convenience features such as prepending get_dst_prefix() to the dest (the place where we want to create the symlink), defaulting dest to the basename of target and ensuring that the parent of that dest already exists -- as with LLManifest.path(). Moreover, since it makes no sense whatsoever to create an absolute symlink to some path on the build machine, relsymlinkf() creates every symlink relative to dirname(dest). That, in turn, lets us eliminate a certain amount of boilerplate around existing calls. (Also, since we now ensure the parent directory exists, scrap the logic to diagnose "nonexistent parent directory.") Make llmanifest.LLManifest.run_command() not pass shell=True to subprocess, thereby permitting (requiring) the list form rather than the string form. Change all existing calls to list form. This makes calls more readable, for two reasons. First, many of the arguments are taken from script variables; these can simply be dropped into the list instead of indirecting through string interpolation. Second, it eliminates the need to manually escape individual arguments, since subprocess promises to honor the distinction between list elements. Also fix LLManifest.put_in_file() to ensure the containing directory exists. Consolidate some viewer_manifest.py redundancy, e.g. copying the same set of ten DLLs from either of two directories depending on Release vs. Debug.
2017-11-29MAINT-7751: Tidying up viewer_manifest.py a littleNat Goodspeed
2017-11-28Automated merge with ssh://bitbucket.org/lindenlab/viewer64Nat Goodspeed
2017-11-28MAINT-7751: Remove redundant viewer_manifest.py directory creation.Nat Goodspeed
The LLManifest.copy_action() method ensures that the destination directory for any file copy exists before trying to copy the file, specifically so we don't have to clutter the business logic with tests and explicit directory creation. Remove redundant os.makedirs() stanzas.
2017-11-21MAINT-7684: Stop packaging or signing download_update.exe.Nat Goodspeed
2017-10-30Automated merge with ssh://bitbucket.org/lindenlab/viewer64Nat Goodspeed
2017-10-25MAINT-7911: Set build_data.json's Platform to win for both W32, W64.Nat Goodspeed
2017-10-24MAINT-7081: Merge from lindenlab/viewer64.Nat Goodspeed
2017-10-09MAINT-7831: Merge from tip of https://bitbucket.org/lindenlab/viewer64.Nat Goodspeed
2017-10-09MAINT-7809: Add secondlife.ico to viewer's vmp_icons install dir.Nat Goodspeed
2017-10-09MAINT-7831: Update viewer_manifest.py to use 'with self.prefix(...):'Nat Goodspeed
Now that LLManifest.prefix() supports use as a context manager: with self.prefix(...): ... convert existing calls to that form. This was an interesting exercise because it surfaced at least two places where the indentation did not match the self.prefix() nesting, plus another place where existing code was undented without a self.end_prefix() call. (That last was an uncaught logic bug.) This underscores the value of using a SINGLE consistent, idiomatic mechanism to limit the scope of each self.prefix() call.
2017-10-05MAINT-7684: Don't try to package or sign deleted Windows VMP .exes.Nat Goodspeed
2017-09-29MAINT-7081: Mention nghttp2.dll where it must be mentioned.Nat Goodspeed
2017-09-28MAINT-7081: Package all libnghttp2.*.dylibs.Nat Goodspeed
To support that, enhance path_optional() to accept wildcards and return the expanded filenames.
2017-09-27MAINT-7081: Mention nghttp2 library wherever it must be mentioned.Nat Goodspeed
2017-09-21Clean up running commands under viewer_manifest (at least a little)Oz Linden
* do not redirect stderr to stdout * catch errors generated in platform specific code and display them more nicely * run_command no longer captures output (only used in one place; replaced that with direct use of subprocess)
2017-09-15add address size to build_data.json so that SL_Launcher can log itOz Linden
2017-08-08Added comment block to code signing portion of viewer-manifest.py describing ↵callum_linden
potential gotchas in the future and how to obviate them
2017-06-26MAINT-7514: Fetch needed env vars in WindowsManifest.sign() method.Nat Goodspeed
2017-06-26MAINT-7514: Add (32) or (64) to registry for "install again?" prompt.Nat Goodspeed
Specifically, append (32) or (64) to the four-part version number stored in the registry entry used to detect whether this viewer has already been installed. This is injected as a new VERSION_REGISTRY NSIS variable. (It was tempting to simply change the value of VERSION_LONG with the embedded address size. However, there is one other use of VERSION_LONG in the NSIS template. That use is the subject of MAINT-7533.) Synthesize the VERSION_REGISTRY value in viewer_manifest.py and add it to the substitution dict used to populate the NSIS template. ADDRESS_SIZE isn't passed into viewer_manifest.py, but it can be inferred from the existing 'arch' parameter: 'arch' as well as 'platform' is used to select the specific subclass of the ViewerManifest class to instantiate for this run. Add an appropriate address_size attribute to every such subclass. Change a couple existing tests on 'arch' to tests on self.address_size instead -- clearer to the maintainer. Also, given that subclass selection mechanism, the ViewerManifest base class shouldn't need if / elif tests on 'platform'. Make build_data_json_platform a class attribute as well, removing the base-class stanza that dynamically examines 'platform' and 'arch'. Similarly, move platform-specific tweaks to the build_data_dict used to populate build_data.json into a new finish_build_data_dict() method overridden by individual platform subclasses. Encapsulate the logic around running the Windows code-signing tool into a sign() method, and call it as needed. For obtaining environment variables with fallback values, use os.environ.get() instead of os.path.expandvars() with tests on the returned value.
2017-06-19update viewer-manager, primarily to solve Mac packaging problemOz Linden
2017-06-16remove redundant slash from update service base url (cosmetic)Oz Linden
2017-06-16MAINT-7505: correct packaging of python llbaseOz Linden
2017-06-14SL-700: temporarily use local version of ca-bundle.crt, remove ca-bundle ↵Glenn Glazer
copy calls from viewer manifest
2017-06-14SL-700: temporarily use local version of ca-bundle.crt instead of from ↵Glenn Glazer
voice, misc cleanup
2017-05-24SL-702: refactor to make the viewer-manager easier for TPVs to integrateOz Linden
2017-05-05pull from gatecoyot@coyot-sager-PC.hsd1.ca.comcast.net
2017-05-04SL-617: use final_exe to create exe name in summary.jsoncoyot@coyot-sager-PC.hsd1.ca.comcast.net
2017-05-03MAINT-6928: upgrade VMP package to 504920 and rip out viewer-manifest ↵Glenn Glazer
changes for 2.6
2017-05-02Automated merge with head of lindenlab/viewer64callum@lindenlab.com
2017-05-01Fix MAINT-7360 Investigate removal of MSVCR100.DLL and MSVCP100.DLLCallum Prentice
2017-04-28SL-617: pass final_exe from viewer manifest to NSIS as VIEWER_EXEcoyot@coyot-sager-PC
2017-04-28SL-671: fix string substitutioncoyot@coyot-sager-PC
2017-04-28SL-671: make icon point to launcher, not viewercoyot@coyot-sager-PC
2017-04-26Automated merge with ssh://bitbucket.org/lindenlab/viewer64Nat Goodspeed
2017-04-22DRTVWR-418: Binary search for a good size for temp Mac disk imageNat Goodspeed
2017-04-22DRTVWR-418: Binary search for a good size for temp Mac disk imageNat Goodspeed
2017-04-22DRTVWR-418: Make temporary .sparseimage drive bigger for signing.Nat Goodspeed
2017-04-20DRTVWR-418: Boost fixed max size of temporary Mac volumeNat Goodspeed
used during construction of the eventual installation .dmg. With newer 64-bit Havok packages, we need more elbow room on the temporary volume.
2017-04-19Add back the missing pieces and updated code for the example plugin. It was ↵Callum Prentice
useful during testing SLPlugin changes. Not shipped with release versions of viewer
2017-04-17SL-617: alter viewer manifest to write exe name to summary.json, upgrade VMP ↵Glenn Glazer
package to 504292 to read it
2017-04-11MAINT-6928: revert previous post-move strategy, rename via self.path insteadGlenn Glazer
2017-04-11MAINT-6928: guard shutil.move against retryGlenn Glazer
2017-04-11MAINT-6928: os,rename is retarded, use shutil.move insteadGlenn Glazer
2017-04-11MAINT-6928: upgrade to VMP package 504140, use renamed directory to walk ↵Glenn Glazer
around codesign bug; fix dullahan file copy code