Thank you. tools:::.install_packages works.

It happens that one of the functions in my package is a utility to build 
packages. I guess I should change the install step.

Regards,
Jorgen.



#' Build package from source

#'

#' \code{roxygen2} & \code{devtools} have several steps to build a package, and

#' \code{build.package} wraps them in one function. It can also clean up

#' and protect the description file.

#'

#' @param package.dir the directory with the package files arranged as expected 
by

#' \code{roxygen2} except as noted below

#' @param clean whether to remove old \code{Rd} files before starting

#' @param install whether to install the package after building it, which may 
make the latest

#' version available in the current R session

#'

#' @note The description file should be in \code{DESC.source} rather than 
\code{DESCRIPTION}.

#' \code{build.package} will then overwrite the machine-generated 
\code{DESCRIPTION} from the

#' previous build with the true source.

#'

#' @return \code{invisible()}

#'

#' @export



build.package <- function(package.dir,clean=TRUE,install=TRUE)

{ if (!require(roxygen2))

    stop("Please install roxygen2 and its dependencies.")

  if (!require(devtools))

    stop("Please install devtools and its dependencies.")

  if ( file.exists(file.path(package.dir,"DESC.source") -> DESC.source) )

    file.copy(DESC.source, file.path(package.dir,"DESCRIPTION"), overwrite=TRUE)

  roxygenise(package.dir,clean=clean)

  tar <- devtools::build(package.dir)

  if (install)

    install.packages(tar,type='source',repos=NULL)

  invisible()

}



From: Ivan Krylov <ikry...@disroot.org>
Date: Wednesday, March 20, 2024 at 14:12
To: Jorgen Harmse <jhar...@roku.com>
Cc: Jorgen Harmse via R-help <r-help@r-project.org>
Subject: [EXTERNAL] Re: [R] Building Packages.
� Wed, 20 Mar 2024 17:00:34 +0000
Jorgen Harmse <jhar...@roku.com> �����:

> Thank you, but I think I was already using utils.
>
> Regards,
> Jorgen.
>
>
> > environment(install.packages)
>
> <environment: namespace:utils>
>
> > utils::install.packages('/Users/jharmse/Library/CloudStorage/OneDrive-RokuInc/jhBase_1.0.1.tar.gz',type='source',repos=NULL)
> >
>
> Error in library(jhBase) : there is no package called �jhBase�

Sorry, then it has been my mistake to blame RStudio for this.

We can try debugging this. If you start a fresh R process and run
tools:::.install_packages(path_to_tarball), the installation will (try
to) proceed in the current process instead of a child process. Once it
fails, traceback() will be available to show you where the error
condition has been raised. What does it say?

Alternatively,

1. Check the package R files for stray library() calls. Generally,
packages should not be calling library().

2. Try a "binary search" approach. Make a copy of your package code but
remove half of the files (or half of the functions if they live in a
single file). Keep removing a half (or go to the other half) depending
on whether the same error keeps happening.

Good luck!

--
Best regards,
Ivan

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to