Diverting (from R-package-devel) to R-devel, as it is now about
extending R :

>>>>> Jeroen Ooms   on Thu, 20 Feb 2020 20:34:14 +0100 writes:

    > On Tue, Feb 18, 2020 at 1:29 AM Dominic Comtois
    > <dominic.comt...@gmail.com> wrote:
    >> 
    >> Hello,
    >> 
    >> On my package's check results (
    >> https://cran.r-project.org/web/checks/check_results_summarytools.html), I
    >> see a bunch of warnings with "No protocol specified" messages. This 
happens
    >> only with OS X, and I can't reproduce them when actually building on a 
Mac,
    >> nor with rhub::check_on_macos(). I can't really make sense out of them, 
and
    >> they are all over the place. Can they simply be ignored?

    > This happens when your package calls capabilities(), which as a side
    > effect initiates xquartz. It seems the MacOS server has certain
    > permission restrictions that cause X11 to print this warning.

    > I think you can safely ignore it.

Thank you, Jeroen.

The function is currently defined (in base/R/New-Internal.R ) as

capabilities <- function(what = NULL)
{
    z  <- .Internal(capabilities())
    if(!is.null(what))
        z <- z[match(what, names(z), 0L)]
    if(.Platform$OS.type == "windows") return(z)
    ## Now we need to deal with any NA entries if X11 is unknown.
    nas <- names(z[is.na(z)])
    if(any(nas %in% c("X11", "jpeg", "png", "tiff"))) {
        ## This might throw an X11 error
         z[nas] <- tryCatch(.Internal(capabilitiesX11()),
                            error = function(e) FALSE)
    }
    z
}

and we could easily add a 2nd argument, say  'Xchk = TRUE'  like
this

capabilities <- function(what = NULL, Xchk = TRUE)
{
    z  <- .Internal(capabilities())
    if(!is.null(what))
        z <- z[match(what, names(z), 0L)]
    if(.Platform$OS.type == "windows") return(z)
    if(Xchk) {
        ## Now we need to deal with any NA entries if X11 is unknown.
        nas <- names(z[is.na(z)])
        if(any(nas %in% c("X11", "jpeg", "png", "tiff"))) {
            ## This might throw an X11 error
             z[nas] <- tryCatch(.Internal(capabilitiesX11()),
                                error = function(e) FALSE)
        }
    }
    z
}

and as an afterthought rather improve the argument's default, from

    Xchk = TRUE

to

    Xchk = is.null(what) ||
           any(c("X11", "jpeg", "png", "tiff") %in% what)

(or similar smart defaults).

Then, e.g.,  capabilities("long.double")  or
capabilities("profmem")
would never trigger that X11-lookup and neither would

  cap <- capabilities(X = FALSE)

where you'd typically get an  NA  for cap[["X11"]]


Martin

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to