[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