Closed
Bug 299991
Opened 19 years ago
Closed 19 years ago
XULRunner stub executable for mac
Categories
(Toolkit Graveyard :: XULRunner, defect, P1)
Tracking
(Not tracked)
RESOLVED
FIXED
mozilla1.8beta4
People
(Reporter: benjamin, Assigned: benjamin)
References
Details
Attachments
(1 file, 2 obsolete files)
|
21.27 KB,
patch
|
shaver
:
approval1.8b4+
|
Details | Diff | Splinter Review |
The XULRunner needs a stub executable which find the appropriate XULRunner(GRE) installation based on version checks and then run that xulrunner installation. It will use the standalone XPCOM glue to accomplish this task. It will set up LD_LIBRARY_PATH so that the shell scripts that have traditionally been used are no longer necessary. On Mac and Windows this binary will be installed with every xulrunner application. On *nix it will be installed in the path /usr/bin/xulrunner (the newest XULRunner RPM should take precedence here, is that possible without causing massive conflicts between concurrently installed XULRunner RPMs?)
Comment 1•19 years ago
|
||
I see no really clean solution. It would be possible to do some magic in the postinstall-scripts and using symlinks to the newest xulrunner-bin binary. The bad thing is then, that the link (or binary) does not belong to any RPM package. I'll think about it some more minutes though.
Comment 2•19 years ago
|
||
This is a mac specific executable I'm using to test bug 300139 with. One thing I'm wondering is do we need this extra executable? It's going to make debugging a little bit more tricky for people, also, all we're really doing here is using this stub to pass the application.ini to the xulrunner-bin. I'm wondering if this can be done directly through the application bundle, Info.plist?
| Assignee | ||
Comment 3•19 years ago
|
||
I don't understand the question. How is the application bundle going to be able to find the proper XULRunner without a binary?
| Assignee | ||
Comment 4•19 years ago
|
||
The folks on freenode#macdev were extraordinarily helpful in describing how to lie to an executable about what bundle it's in.
Attachment #188935 -
Attachment is obsolete: true
Attachment #189052 -
Flags: first-review?(darin)
| Assignee | ||
Comment 6•19 years ago
|
||
Take a look at attachment 189049 [details]: that's the structure for a mac application bundle I am hoping to follow: the xulrunner stub sits by itself in Cotnents/MacOS and the xulapp contents are in Contents/Resources (I did this for easy development/debugging, so that a developer could make Contents/Resources a symlink to their xulapp development directory or even directly into dist/xpi-stage/foo). The stub itself is very simple, it just finds the path of the GRE (using the glue functions) and it's own internal application.ini and then execvs to the XUL framework xulrunner-bin. The "trick" is when we pass argv[0] to xulrunner-bin: if you pass /Library/Frameworks/XUL.framework/Versions/blah/xulrunner-bin as argv[0] xulrunner-bin acts like an unbundled binary (no menus, no dock icon, etc). Instead, we pass /Path/To/Simple.app/Contents/MacOS/xulrunner as argv[0], which makes CFBundleGetMainBundle return the path to the correct appliction bundle and all is happy, except now the xulrunner itself is confused: XRE_GetBinaryPath uses CFBundleGetMainBundle which is now incorrect, so I am passing the xulrunner directory as an evironment variable to xulrunner-bin in XRE_BINARY_PATH. The change to configure.in was required because if you use the -l<lib> syntax the lib is not added to LIBS_DEPS at http://lxr.mozilla.org/mozilla/source/config/rules.mk#681, which means that depend builds don't work correctly. Since there is never a chance that xpcomglue/xpcomglue_s will be sharedlibs, this change should be meaningless except to our dependency system.
Comment 7•19 years ago
|
||
Thanks for the details. This sounds really good. I'll try to review this shortly.
| Assignee | ||
Updated•19 years ago
|
Priority: -- → P1
Target Milestone: --- → mozilla1.8beta4
Comment 8•19 years ago
|
||
Comment on attachment 189052 [details] [diff] [review] XULRunner stub executable for mac, rev. 1 >Index: toolkit/xre/nsAppRunner.cpp > NS_IMETHODIMP >+nsXULAppInfo::GetPlatformVersion(nsACString& aResult) >+{ >+ aResult.AssignLiteral(TOOLKIT_EM_VERSION); >+ >+ return NS_OK; >+} It looks like this is already checked in on the trunk. >+#ifdef XP_MACOSX >+static char *gBinaryPath; >+#endif ... >+#ifdef XP_MACOSX >+ // The xulrunner stub executable tricks CFBundleGetMainBundle on >+ // purpose into lying about the main bundle path. It will set >+ // XRE_BINARY_PATH to inform us of our real location. >+ gBinaryPath = getenv("XRE_BINARY_PATH"); >+ >+ if (gBinaryPath && !*gBinaryPath) >+ gBinaryPath = nsnull; >+ >+ printf("gBinaryPath = %s\n", gBinaryPath); >+#endif Can gBinaryPath be declared |const char*|? Shouldn't this printf be removed? >Index: xulrunner/stub/Makefile.in This file needs a LICENSE header. >+MODULE = xpcom >+PROGRAM = xulrunner$(BIN_SUFFIX) module = xpcom ??? are you sure? >Index: xulrunner/stub/nsXULStubOSX.cpp LICENSE header! >+ if (NS_FAILED(rv)) { >+ // XXXbsmedberg: Do something much smarter here: notify the >+ // user/offer to download/? >+ return 1; >+ } How about at least using fprintf(stderr,... so that the user can at least see a message in the OSX console. >+ CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault, >+ absResourcesURL, >+ CFSTR("application.ini"), >+ false); Ah, so now application.ini becomes the canonical name. OK. r=darin with these nits fixed
Attachment #189052 -
Flags: first-review?(darin) → first-review+
| Assignee | ||
Comment 9•19 years ago
|
||
Nits updated, requesting approval... this should have no affect on the current toolkit apps, which do not use the glue.
Attachment #189052 -
Attachment is obsolete: true
Attachment #190401 -
Flags: approval1.8b4?
Comment 10•19 years ago
|
||
Comment on attachment 190401 [details] [diff] [review] XULRunner stub executable for mac, rev. 1.1 a=shaver
Attachment #190401 -
Flags: approval1.8b4? → approval1.8b4+
| Assignee | ||
Comment 11•19 years ago
|
||
Fixed on trunk for 1.8b4
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
| Assignee | ||
Updated•19 years ago
|
OS: Windows XP → MacOS X
Hardware: PC → Macintosh
Summary: XULRunner stub executable → XULRunner stub executable for mac
Updated•9 years ago
|
Product: Toolkit → Toolkit Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•