[R-SIG-Mac] Mac OS X tcltk/X11 issues

John Fox jfox at mcmaster.ca
Tue Jul 15 02:08:25 CEST 2014


Dear Marc and Kasper,

I already know how to test whether the Rcmdr is running under Mac OS X and
to test whether X11 is installed. But AFAICS there is no way for me to run
this code in the Rcmdr package at startup *before* tcltk fails to load -- I
did try to do this, both in .onLoad() and in .onAttach(). 

I thought that I'd made this problem clear in my initial message but
apparently I hadn't. I'd be happy if someone proved me wrong by showing me
another way to intercept the problem on startup of the Rcmdr package, but I
think that the fix has to go into tcltk, as Kasper suggests.

Best,
 John

> -----Original Message-----
> From: Marc Schwartz [mailto:marc_schwartz at me.com]
> Sent: Monday, July 14, 2014 6:33 PM
> To: Kasper Daniel Hansen
> Cc: John Fox; urbanek at research.att.com; r-sig-mac at r-project.org
> Subject: Re: [R-SIG-Mac] Mac OS X tcltk/X11 issues
> 
> Kasper,
> 
> Understood. I was not sure if there was someplace in John's startup
> code that might catch it early on before tcltk loads, but that may be
> confounded by the sequence of the package import process as John notes
> below.
> 
> Reading R-exts and the related help files does not make it clear to me
> that there is a window of opportunity to run the check before the
> import occurs, but I would defer to Simon et al on the finer points
> here.
> 
> Regards,
> 
> Marc
> 
> 
> On Jul 14, 2014, at 5:07 PM, Kasper Daniel Hansen
> <kasperdanielhansen at gmail.com> wrote:
> 
> 
> 	Basically John is asking for code like this to be included in
> tcltk.
> 
> 	Best,
> 	Kasper
> 
> 
> 	On Mon, Jul 14, 2014 at 11:53 PM, Marc Schwartz
> <marc_schwartz at me.com> wrote:
> 
> 
> 		On Jul 14, 2014, at 4:13 PM, John Fox <jfox at mcmaster.ca>
> wrote:
> 
> 		> Dear Simon and list members,
> 		>
> 		> As many of you are aware, when X11 isn't installed on Mac
> OS X, loading the
> 		> tcltk package produces an error, with a message that many
> users find
> 		> cryptic. There was yet another instance of this problem
> reported to the list
> 		> today.
> 		>
> 		> I'm interested in the issue because the Rcmdr package uses
> tcltk and thus
> 		> fails to load when X11 is absent. Rcmdr users tend to be
> inexperienced and
> 		> so, unless they find their way to the Rcmdr installation
> webpage, where
> 		> detailed installation instructions are provided, they tend
> to be stymied by
> 		> the problem.
> 		>
> 		> If I could, I'd intercept the problem by checking
> capabilities()["X11"] in
> 		> the Rcmdr .onLoad() or .onAttach() function, but because
> the Rcmdr package
> 		> imports the tcltk namespace, the error occurs before these
> startup functions
> 		> are executed -- a chicken-and-egg problem.
> 		>
> 		> It occurs to me that tcltk could fail more gracefully on
> Mac OS X when X11
> 		> is absent, perhaps popping up a webpage in a browser with
> instructions and a
> 		> link for installing XQuartz. I'd do this myself in the
> Rcmdr package if I
> 		> could. Or tcltk could check for the presence of X11 and
not
> try to start it
> 		> if it's absent, reporting a warning rather than throwing
an
> error.
> 		>
> 		> Alternatively, I'd be grateful if someone could suggest
how
> I might detect
> 		> the problem in the Rcmdr package before loading fails. The
> only thing that I
> 		> could think of was writing a separate RcmdrInstall package
> that bypasses
> 		> tcltk, but that would be awkward and would only help users
> who discovered
> 		> that RcmdrInstall exists.
> 		>
> 		> Thanks,
> 		> John
> 
> 
> 
> 		John,
> 
> 		Is there someplace in your startup process where you could
> run code along the lines of:
> 
> 		if (grepl("apple", R.version$platform) &
> length(list.files("/opt/X11/bin", pattern = "Xquartz")) == 0) {
> 		     cat("X11 is required. Please visit
> http://xquartz.macosforge.org <http://xquartz.macosforge.org/>  to
> download and install Xquartz.")
> 		     stop()
> 		}
> 
> 
> 		The above code will check to see if the user is running R on
> OS X and also if the Xquartz binary is present in the default location.
> 
> 		Not sure if this is helpful.
> 
> 		Regards,
> 
> 		Marc Schwartz
> 
> 
> 		_______________________________________________
> 		R-SIG-Mac mailing list
> 		R-SIG-Mac at r-project.org
> 		https://stat.ethz.ch/mailman/listinfo/r-sig-mac
> 
> 
>



More information about the R-SIG-Mac mailing list