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
[R-pkg-devel] CRAN submission struggle
9 messages · Christiaan Pieterse, Dirk Eddelbuettel, Roy Mendelssohn - NOAA Federal +1 more
On Dec 16, 2023, at 9:41 AM, Christiaan Pieterse <pietie.cjp.1908 at gmail.com> wrote: 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.
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)
>
dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
And a second good starting place would be: https://r-pkgs.org HTH, -Roy
On Dec 16, 2023, at 9:48 AM, Roy Mendelssohn - NOAA Federal <roy.mendelssohn at noaa.gov> wrote:
On Dec 16, 2023, at 9:41 AM, Christiaan Pieterse <pietie.cjp.1908 at gmail.com> wrote: 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.
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.
********************** "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:
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)
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.
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).
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).
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.
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>.
I've been told before not to include my package as an attachment, so can someone please help me with the submission process?
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.
It is a 10mb file
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.
Best regards, Ivan
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:
base::assign(".ptime", proc.time(), pos = "CheckExEnv")
### Name: IOPS
### Title: IOPS
### Aliases: IOPS
### ** Examples
# Load the example data
data(ExampleTradeData)
Warning in data(ExampleTradeData) : data set 'ExampleTradeData' not found
oldwd <- getwd() temp_dir <- tempdir() # Set the working directory to a temporary directory setwd(temp_dir) # Then use it in your function IOPS(
+ 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 Sat, 16 Dec 2023 19:41:16 +0200 Christiaan Pieterse <pietie.cjp.1908 at gmail.com> wrote:
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)
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.
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).
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).
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.
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>.
I've been told before not to include my package as an attachment, so can someone please help me with the submission process?
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.
It is a 10mb file
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. -- Best regards, Ivan
On Sun, 17 Dec 2023 15:29:34 +0200
Christiaan Pieterse <pietie.cjp.1908 at gmail.com> wrote:
But, I've uploaded the newly created package as discussed in my first email, available at: https://github.com/ChristiaanPieterse/iopspackage2.1.0
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.
* checking CRAN incoming feasibility ... [25s] NOTE Maintainer: 'C.J Pieterse <pietie.cjp.1908 at gmail.com>' New submission
"New submission" is to be expected.
Unknown, possibly misspelled, fields in DESCRIPTION: 'Exports'
"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.
* 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
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).
* 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
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.
data(ExampleTradeData)
Warning in data(ExampleTradeData) : data set 'ExampleTradeData' not found
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' ))
* checking for detritus in the temp directory ... NOTE Found the following files/directories: 'lastMiKTeXException'
Is this on R-hub? This usually happens on R-hub and doesn't indicate a problem with your package.
#' temp_dir <- tempdir() #' #' # Set the working directory to a temporary directory #' setwd(temp_dir)
<...>
#' # Clean up the temporary directory #' unlink(temp_dir, recursive = TRUE)
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.
Best regards, Ivan
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:
base::assign(".ptime", proc.time(), pos = "CheckExEnv")
### Name: IOPS
### Title: IOPS
### Aliases: IOPS
### ** Examples
# Load the example data
ExampleTradeData <-
read.csv(system.file("extdata","ExampleTradeData.csv",package="iopspackage"))
# Create a temporary directory temp_dir <- tempfile() dir.create(temp_dir) # Set the working directory to the temporary directory old_dir <- setwd(temp_dir) # Then use it in your function IOPS(
+ 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 15:29:34 +0200 Christiaan Pieterse <pietie.cjp.1908 at gmail.com> wrote:
But, I've uploaded the newly created package as discussed in my first email, available at: https://github.com/ChristiaanPieterse/iopspackage2.1.0
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.
* checking CRAN incoming feasibility ... [25s] NOTE Maintainer: 'C.J Pieterse <pietie.cjp.1908 at gmail.com>' New submission
"New submission" is to be expected.
Unknown, possibly misspelled, fields in DESCRIPTION: 'Exports'
"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.
* 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
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).
* 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
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.
data(ExampleTradeData)
Warning in data(ExampleTradeData) : data set 'ExampleTradeData' not found
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' ))
* checking for detritus in the temp directory ... NOTE Found the following files/directories: 'lastMiKTeXException'
Is this on R-hub? This usually happens on R-hub and doesn't indicate a problem with your package.
#' temp_dir <- tempdir() #' #' # Set the working directory to a temporary directory #' setwd(temp_dir)
<...>
#' # Clean up the temporary directory #' unlink(temp_dir, recursive = TRUE)
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. -- Best regards, Ivan
On Sun, 17 Dec 2023 21:48:51 +0200
Christiaan Pieterse <pietie.cjp.1908 at gmail.com> wrote:
Warning in complexity_measures(Mbin, method = "reflections", iterations = iterCompl) : 'iterations' was changed to 'iterations + 1' to work with an even number of iterations Killed
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.
* checking HTML version of manual ... NOTE Skipping checking HTML validation: no command 'tidy' found
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>?
Best regards, Ivan