Skip to content

[R-pkg-devel] CRAN submission struggle

9 messages · Christiaan Pieterse, Dirk Eddelbuettel, Roy Mendelssohn - NOAA Federal +1 more

#
Good day fellow developers!

I am trying to upload a package to CRAN that I developed.
I've tried before to upload it but ended up with a package file that is a
complete mess so I decided to restart.
Here are the steps I followed when I created my file:

   1. Created a folder on my desktop called "iopspackage".
   2. Created a subfolder called 'R' which contained my .R package. This .R
   file contained the Roxygen2 comments. (I was very unsure what comments to
   include in this so it might be wrong, I'm unsure)
   3. Included a DESCRIPTION file is the 'iopspackage' folder. (Once again
   I was very unsure what to include in this file so it might be wrong).
   4. My package requires a dataset in order to run the example so I
   created a file and sub file called 'inst'/'extdata' which contained the
   .csv datasets.
   5. Created an empty 'man' folder to be populated when the Roxygen2
   function is run.
   6. I ran the Roxygen2 function with the correct directory, using
   roxygen2::roxygenize()
   7. I built the package using *R CMD build
   "C:/Users/pieti/Desktop/iopspackage".*
   8. I checked the tar file using *R CMD check --as-cran
   "iopspackage_2.1.0.tar.gz". *This yielded errors, warnings and notes
   which I don't know how to solve and suspect are due to me setting the file
   up wrong.

I've been told before not to include my package as an attachment, so can
someone please help me with the submission process? I've been struggling
with this for months. Any help would be greatly appreciated.
I can send my zip file over a private email so as not to disturb all the
developers and their storage space (It is a 10mb file)

Kind regards
Christiaan
#
A good start might be to provide the "errors, warnings and notes"

Thanks,

-Roy
**********************
"The contents of this message do not reflect any position of the U.S. Government or NOAA."
**********************
Roy Mendelssohn
Supervisory Operations Research Analyst
NOAA/NMFS
Environmental Research Division
Southwest Fisheries Science Center
***Note new street address***
110 McAllister Way
Santa Cruz, CA 95060
Phone: (831)-420-3666
Fax: (831) 420-3980
e-mail: Roy.Mendelssohn at noaa.gov www: https://www.pfeg.noaa.gov/

"Old age and treachery will overcome youth and skill."
"From those who have been given much, much will be expected" 
"the arc of the moral universe is long, but it bends toward justice" -MLK Jr.
#
Christiaan,

You say "errors" but you don't say which.

You say you have a package, but don't provide a source reference.

This makes it awfully hard to say or do anything. In case you are on github
or gitlab or ... it would simply be easiest to share a reference to the
repository.  Emailing 10mb blobs to every list subscriber is not ideal.

Dirk

PS Fortunes has that covered too

   > fortunes::fortune("mind read")

   There are actual error messages, and until you show them, we can not help as the mind
   reading machine is currently off for repairs.
      -- Dirk Eddelbuettel (after reports about errors with R CMD check)
         R-help (July 2010)

   >
#
And a second good starting place would be:

https://r-pkgs.org

HTH,

-Roy
**********************
"The contents of this message do not reflect any position of the U.S. Government or NOAA."
**********************
Roy Mendelssohn
Supervisory Operations Research Analyst
NOAA/NMFS
Environmental Research Division
Southwest Fisheries Science Center
***Note new street address***
110 McAllister Way
Santa Cruz, CA 95060
Phone: (831)-420-3666
Fax: (831) 420-3980
e-mail: Roy.Mendelssohn at noaa.gov www: https://www.pfeg.noaa.gov/

"Old age and treachery will overcome youth and skill."
"From those who have been given much, much will be expected" 
"the arc of the moral universe is long, but it bends toward justice" -MLK Jr.
#
On Sat, 16 Dec 2023 19:41:16 +0200
Christiaan Pieterse <pietie.cjp.1908 at gmail.com> wrote:

            
If you like roxygen2 and would like to keep using it, you're welcome to
keep the roxygen2 comments in your R files. Just don't forget to re-run
roxygenise() every time you update them.
Does it help to follow the guide at
<https://cran.r-project.org/doc/manuals/R-exts.html#The-DESCRIPTION-file>?
Start with the mandatory fields Package, Version, License,
Description, Title and Authors at R (to generate Author: and Maintainer:
from).
Can you show us the log from the check? It should be fine to copy &
paste the entries that don't say OK (i.e. NOTEs, WARNINGs, and ERRORs).

Most of what you'll need to fix is described in "Writing R Extensions"
(link above) and the CRAN policy at
<https://cran.r-project.org/web/packages/policies.html>.
Can you publish the code anywhere? Ideally, this place should provide
instant access to the latest version of every source code file inside
your package. The most popular option nowadays is GitHub, but it does
not have to be GitHub. Two GDPR-friendly alternatives are Codeberg and
SourceHut. If you don't like Git (which does take effort to learn),
there's R-Forge and Chiselapp.com. If you don't want to learn software
version control right now, any free web/file hosting will suffice as
long as you keep the files updated and accessible.
I think we've discussed this before. A 10-megabyte package mostly
consisting of example data is not a good fit for CRAN. It's possible to
use free Web hosting services to distribute data packages (see the
'drat' package and the function tools::writePACKAGES) separate from the
CRAN package that should mainly contain the code.
#
Hi, thank you for all the responses.

I have uploaded the previous package to GitHub, available at:
https://github.com/WoutersResearchGroup/R-IO-PS . Note that this works when
installed via GitHub using devtools, but is a bit messy. Hence I decided to
start over for CRAN release. If you can help me to get this uploaded to
cran it would be awesome!

But, I've uploaded the newly created package as discussed in my first
email, available at: https://github.com/ChristiaanPieterse/iopspackage2.1.0
This doesn't have a readme. See the readme at the first link above.

Here are the Errors, Warnings and Notes from the check:

* checking CRAN incoming feasibility ... [25s] NOTE
Maintainer: 'C.J Pieterse <pietie.cjp.1908 at gmail.com>'
New submission
Unknown, possibly misspelled, fields in DESCRIPTION:
  'Exports'

* checking whether package 'iopspackage' can be installed ... [27s] WARNING
Found the following significant warnings:
  Warning: package 'Rcpp' was built under R version 4.3.2

* checking dependencies in R code ... NOTE
Namespaces in Imports field not imported from:
  'openxlsx' 'roxygen2' 'tibble'
  All declared Imports should be used.

* checking R code for possible problems ... [12s] NOTE
IOPS: no visible global function definition for 'createWorkbook'
IOPS: no visible global function definition for 'addWorksheet'
IOPS: no visible global function definition for 'writeData'
IOPS: no visible global function definition for 'saveWorkbook'
Undefined global functions or variables:
  addWorksheet createWorkbook saveWorkbook writeData

* checking examples ... ERROR
Running examples in 'iopspackage-Ex.R' failed
The error most likely occurred in:
Warning in data(ExampleTradeData) :
  data set 'ExampleTradeData' not found
+   CountryCode = 710,
+   tradeData = ExampleTradeData,
+   ComplexMethod = "reflections",
+   iterCompl = 5,
+   GVCMapping = NULL,
+   tradedigit = 6
+ )
Selected country: ZAF
Error: object 'ExampleTradeData' not found
Execution halted

* checking for detritus in the temp directory ... NOTE
Found the following files/directories:
  'lastMiKTeXException'

I've struggled for a while with the error on my example that doesn't want
to run. I'd like to know if I've uploaded the ExampleTradeDate correctly as
seen in the inst/extdata file. I was also told previously to create a
temporary directory for the function output and delete the temporary
directory after the example, but I'm unsure if I did it correctly.

Thank you for the assistance
Christiaan
On Sat, 16 Dec 2023 at 20:07, Ivan Krylov <krylov.r00t at gmail.com> wrote:

            

  
  
#
On Sun, 17 Dec 2023 15:29:34 +0200
Christiaan Pieterse <pietie.cjp.1908 at gmail.com> wrote:

            
Are you sure it wouldn't be better to clean up the existing package
instead of creating unrelated forks? If you're afraid of breaking
something that works, do the work on a separate branch
<https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell>
until it both works as well as your current repo currently does *and*
passes R CMD check --as-cran.
"New submission" is to be expected.
"Writing R Extensions" doesn't define a field named "Exports". The
exports are declared in the NAMESPACE file. Since you're using
roxygen2, use its @export tag to export your functions and remove the
Exports: field.
This is probably not a problem with your package (but may be a problem
with the way the machine running R CMD check is set up).
Are you sure you should be importing roxygen2? You only run
roxygenise() before running R CMD build in order to generate
man/*.Rd and NAMESPACE; I don't think it's used after that.

If you don't use functions from tibble, there's no need to import it
or depend on it either. I also don't see you directly using Rcpp, but
there's no warning about it for some reason.

Use the @importFrom tags to import individual functions that you
actually use (i.e. createWorkbook and friends). See
<https://cran.r-project.org/doc/manuals/R-exts.html#Package-namespaces>
for more information on importing.

Also, remove all library() calls from R/iopspackage2.R. Packages live
in namespaces, not in the global environment; your package should rely
upon the dependency information in DESCRIPTION and NAMESPACE (the
latter generated by roxygen2) for its dependencies.
There's no 'data' directory and no file named ExampleTradeData.* in it.
Data for use by the function data() should be prepared as described in
<https://cran.r-project.org/doc/manuals/R-exts.html#Data-in-packages>.
If you want to use files under inst/extdata, you have to read them
manually:

ETD <- read.csv(system.file(
 file.path('extdata','ExampleTradeData.csv'),
 package = 'iopspackage'
))
Is this on R-hub? This usually happens on R-hub and doesn't indicate a
problem with your package.
<...>
Please make it a subdirectory of the session temporary directory:

temp_dir <- tempfile()
dir.create(temp_dir)
...

Removing the session temporary directory is not as bad as directly
overwriting user data (it's all going away after the process is shut
down), but quite a lot of parts of R and other packages rely on
tempdir() being a directory that exists, not to mention that there
could be other temporary files in use by other packages.
#
Hi Ivan

I have decided to clean up the existing package using a branch, as you
suggested. The branch I've created is available at:
https://github.com/WoutersResearchGroup/R-IO-PS/tree/CRAN-prep.

I've cleaned, built and checked this branch package but I get one error and
2 notes (one is the new submission note).
The error is related to the example I'm running. I suspect it might be due
to the way I am trying to import the ExampleTradeData. Here is the error
and note:

* checking examples ... ERROR
Running examples in ?iopspackage-Ex.R? failed
The error most likely occurred in:
read.csv(system.file("extdata","ExampleTradeData.csv",package="iopspackage"))
+   CountryCode = 710,
+   tradeData = ExampleTradeData,
+   ComplexMethod = "reflections",
+   iterCompl = 5,
+   GVCMapping = NULL,
+   tradedigit = 6
+ )
Selected country: ZAF
Export data 6-digit summation complete
Trade data successfully imported
M-matrices calculated
RCA calculated
Starting calculation of complexity measures using the 'reflections' method
Warning in complexity_measures(Mbin, method = "reflections", iterations =
iterCompl) :
  'iterations' was changed to 'iterations + 1' to work with an even number
of iterations
Killed

* checking HTML version of manual ... NOTE
Skipping checking HTML validation: no command 'tidy' found

Note that I also updated the iopspackage2.0.R as you suggested, and I did
re-run roxygen before building and checking (using roxygen2::roxygenize()).
All the updated folders are in the "CRAN-prep" branch (link provided above).

Regards
Christiaan
On Sun, 17 Dec 2023 at 16:06, Ivan Krylov <krylov.r00t at gmail.com> wrote:

            

  
  
#
On Sun, 17 Dec 2023 21:48:51 +0200
Christiaan Pieterse <pietie.cjp.1908 at gmail.com> wrote:

            
If this is happening on Linux, this could mean the current example (or
some other, completely unrelated process running at the same time)
allocating too much memory and summoning the OOM-killer.

In the current HEAD of the CRAN-prep branch, the man/*.Rd files are
empty, which prevents the package from being installed, so I couldn't
reproduce the problem. Are there any local changes you need to commit
and push to GitHub? If you're not comfortable keeping the package
source in sync with GitHub, we can consider other options.
This is a problem with the system running R CMD check, not your
package. In order to check the validity of generated HTML
documentation, R needs to use the program called HTML-Tidy, which is
not installed on this computer.

Where are you getting these results from? Win-Builder
<https://win-builder.r-project.org/>? macOS builder
<https://mac.r-project.org/macbuilder/submit.html>?