Commit Graph

158 Commits (d0be7ba28b2fb80f82004be9ca21ae7eec76c4e7)

Author SHA1 Message Date
Tonya Souther 45e9b40be9 More OS X build fixes. 2018-01-27 08:40:18 -06:00
Ansariel 2c6beeba31 Merge viewer64 and completely comment out the new VMP trampoline circus stunts for Mac 2017-12-07 13:51:00 +01:00
Nat Goodspeed 488d165895 MAINT-7751: Rework DarwinManifest to produce new app bundle structure.
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-12-04 17:15:47 -05:00
Ansariel 8d0d93e8d4 Merge viewer64 2017-10-11 17:49:03 +02:00
Nat Goodspeed d9d6df313c MAINT-7831: Allow LLManifest.prefix() to be a context manager.
LLManifest.prefix() dates back to before Python had a 'with' statement or the
notion of a context manager. That's why every prefix() call requires a
corresponding end_prefix() call.

Existing usage is of the form:

    if self.prefix(...some args...):
        self.path(...)
        ...
        self.end_prefix()

The use of an 'if' statement is solely to allow the coder to indent the
statements between the self.prefix() call and the corresponding call to
self.end_prefix() -- there is no intention to make that code conditional.
self.prefix() unconditionally returned True to facilitate that usage.

But now that we have the 'with' statement, this all feels a little silly. Make
prefix() return an instance of a context-manager class so that it's reasonable
to say instead:

    with self.prefix(...some args...):
        self.path(...)
        ...

and have the Right Things happen simply by leaving the 'with' block.

The only tricky part is code to preserve compatibility with old-style usage:

* The context manager has a __nonzero__() method so that if it's tested in an
  'if' statement, it can unconditionally return True.

* On leaving the 'with' block, rather than simply popping the top of each
  prefix stack, the context manager restores its length to the same length it
  had before that prefix() call. This allows for (erroneous but hardly
  unlikely) usage of the form:

    with self.prefix(...some args...):
        self.path(...)
        ...
        self.end_prefix()

Restoring the previous length makes the context manager insensitive to whether
or not end_prefix() has popped the most recent prefix() entries.
2017-10-09 16:28:35 -04:00
Ansariel 547df251e4 Merge viewer64 2017-10-02 17:57:56 +02:00
Oz Linden 38d9454cbf remove redundant exception constructor code, and
generalize exception catching for platform specific code
2017-09-21 19:24:04 -04:00
Oz Linden 6ac6826192 Clean up running commands under viewer_manifest (at least a little)
* 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-21 15:50:29 -04:00
Ansariel 43012fdd88 More fixing and cleaning up of the Windows installer and manifest scripts 2017-07-29 11:59:53 +02:00
Ansariel b54ba18e20 Don't pass the bundle ID so we sign the Mac DMG file with the developer certificate - probably... 2017-07-28 08:56:14 +02:00
Ansariel e6f9a5e2db Merge viewer64 2017-07-27 21:07:14 +02:00
Ansariel 8d9c2925ce Trash some old stuff 2017-06-23 18:08:50 +02:00
Oz Linden e044902aaf SL-702: refactor to make the viewer-manager easier for TPVs to integrate 2017-05-24 09:41:44 -04:00
Ansariel d47f8e1abe Merge viewer-bear 2016-08-10 21:29:01 +02:00
Glenn Glazer 609595e938 MAINT-6585: put back indra/ipc files needed for scripts/template_verifier.py 2016-07-21 16:51:47 -07:00
Glenn Glazer d7636753e8 MAINT=6585: hg rm everything we don't need 2016-07-20 13:51:58 -07:00
Nicky 46d5cd7f24 Merge with https://bitbucket.org/callum_linden/viewer-cef 2015-09-03 14:38:13 +02:00
Nat Goodspeed c7842dda37 Update llmanifest.LLManifest.copy_action() to handle symlinks
for directories as well as for files.
2015-06-18 18:56:01 -04:00
Nicky cf512d6815 Fix build error in copy_w_viewer_manifest for Windows x86 and x64. 2015-05-08 14:02:39 +02:00
Nicky 6b0722598a Allow side-by-side installation of FS-Win64. 2014-05-13 19:29:21 +02:00
Tank_Master 7b2cc02863 Merge LL fitted mesh 2014-02-06 00:41:33 -08:00
Oz Linden 2ea9f3d700 merge changes for 3.6.12-release 2013-12-17 11:15:01 -05:00
Oz Linden 79919ef9b6 move setting default grid to settings_install.xml so that it works on all platforms 2013-11-24 13:18:12 -05:00
Oz Linden 6d6b0edfe2 normalize format of and add arch to all installer names 2013-11-24 13:16:36 -05:00
Oz Linden ecb2220afd add handler for socket.error to fix OPEN-196 2013-11-18 12:12:31 -05:00
Nicky 4720f67bf7 Merge with viewer-release. 2013-12-13 21:21:45 +01:00
JJ Linden bcff609fb8 changes for additional packages to be packaged from the same build. see BuildParams for example environment variables used to specify the packages and their channels and sourceids. also updated mac packages to use a larger virtual drive and auto-open on download 2013-09-16 12:58:40 -07:00
Nat Goodspeed a207b24d33 CHOP-955: Include app_settings/settings_install.xml in file_list.
viewer_manifest.py uses its base-class llmanifest.LLManifest.put_in_file()
method to create several different files in the install image being
marshalled. I based the logic to create settings_install.xml on that example.
Unfortunately I failed to notice that after every existing call, the script
also explicitly appended the newly-created file to self.file_list... which
only matters on Windows. file_list is fed to the NSIS installer.
Change put_in_file() method to implicitly append to self.file_list.
Change every existing viewer_manifest.py call to pass new put_in_file(src=)
param instead of explicitly appending to self.file_list.
2013-07-26 10:42:13 -04:00
Oz Linden cb5289e02a remove files incorrectly brought back from the past by merges 2013-06-18 12:31:54 -04:00
Oz Linden 3bb708d706 merge up to latest viewer-development for merge to 3.5.2 2013-04-19 14:42:56 -04:00
Graham Madarasz bf6182daa8 Update Mac and Windows breakpad builds to latest 2013-03-29 07:50:08 -07:00
Tank_Master 6007d1235e merge snowstorm repo 2013-10-19 23:48:44 -07:00
Nicky 329ca38457 Merge with -lgpl. 2013-09-14 23:23:26 +02:00
Tank_Master 5a8d94c50f Merge LL 3.6.4 pass 1 2013-08-28 00:10:39 -07:00
Nicky 0addf213ed Merge with FS tip. First pass. 2013-08-02 00:40:48 +02:00
Nicky fd696b0322 Merge with LGPL. 2013-08-02 00:10:52 +02:00
Nicky 1085e1c7b8 - New options for 64 bit builds and only copy artworks.
- Handle 64 bit versions of Windows dlls.
2013-08-01 23:51:00 +02:00
Nicky 1fd560c7ca When generating symbols do include the viewer flavor (oss or havok) in the symbols filename.
Before: Phoenix_Firestorm-Release_4-4-0-33720_symbols-windows.tar.bz2
Now: Phoenix_Firestorm-Release_4-4-0-33720_hvk_symbols-windows.tar.bz2 / Phoenix_Firestorm-Release_4-4-0-33720_oss_symbols-windows.tar.bz2
2013-05-26 23:42:14 +02:00
Tank_Master 718f6fa0ff merge LL 3.6.1 2013-07-10 00:23:23 -07:00
Tank_Master d4640277d0 Merge LL 3.5.3 release. 2013-07-09 16:24:58 -07:00
Oz Linden 237a48721d clarify windows installer name 2013-02-15 09:29:09 -05:00
Oz Linden 5ea68c69a4 convert to new channel name scheme and remove login_channel build time parameter 2013-02-12 10:50:47 -05:00
Oz Linden d7e90f4160 derive version number from indra/VIEWER_VERSION.txt 2013-02-07 11:56:57 -05:00
Oz Linden d35c4f4c9d merge changes for DRTVWR-223 2012-11-06 14:54:27 -05:00
Nat Goodspeed a507df6e28 SWAT-711: Create Mac app bundle symlinks only for .dylib files that exist.
Previous viewer_manifest.py unconditionally created Mac symlinks for all expected
.dylib files. Recent change to revert to statically linking llcommon means we
no longer build libllcommon.dylib, therefore we no longer copy it, therefore
any symlink to that library will be broken by definition.
Change to create symlinks for .dylib files that were successfully copied.
2012-09-18 11:40:45 -04:00
callum_linden 78854c9baa Fix to build with code signing option (patch from STORM-1900) 2012-07-25 16:42:37 -07:00
Tank_Master cc44316aed Merge LL 3.4.3,
Note: aligned some of our code with LL's, spcifically feature table, gpu table, texture fetching, and some rendering defaults behavior.
2012-12-18 00:36:35 -08:00
Tank_Master 5b5f4c8bf5 Merge LL 3.4.2 release,
broken revision, KDU package needs updating, mac packager also likely broken
2012-12-14 07:59:55 -08:00
Tank_Master 991d43709c merge LL 3.3.3 beta 2012-06-16 07:22:27 -07:00
Nat Goodspeed acd46062fd Eliminate ManifestError for wildcards matching 0 files.
Turns out that some (many?) wildcard LLManifest.path(wildcard) calls are "just
in case": sweep up any (e.g.) "*.tga" files there may be, but no problem if
there are none.
Change path() logic so it tries the next tree (source, artwork, build) if
either a specific (non-wildcard) filename doesn't exist, as now, OR if a
wildcard matches 0 files in the current tree. This continues to support "just
in case" wildcards, while permitting wildcards to work in the artwork and
build trees as well as the source tree.
Use a more specific exception than ManifestError for missing file. Only in
that case should we try the next tree. Any other ManifestError should
propagate.
2012-02-10 16:45:18 -05:00