From 6f510ab68e498e0ff557a158b052c77febd9e2d0 Mon Sep 17 00:00:00 2001 From: lshep Date: Wed, 20 Nov 2024 09:20:21 -0500 Subject: [PATCH] Update Sys Deps (#127) * Fix link * Fixes typo Fix #109 * Update what to expect * strengthen wording for basilisk requirement instead of reticulate as requested by Vince * Update System Dependency section with @vjctin suggested text --- description-file.Rmd | 3 ++- install-file.Rmd | 7 +++++-- r-code.Rmd | 36 ++++++++++++++++++++++++------------ 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/description-file.Rmd b/description-file.Rmd index 744a45e..472be7e 100644 --- a/description-file.Rmd +++ b/description-file.Rmd @@ -157,7 +157,8 @@ If the installation process is non-trivial, a top-level [`INSTALL` file](#sysdep be included to document the process. If a user facing [`README`](#readme) is included it is also recommended to document the process there; do not try to install a dependency for a user anywhere in the package (i.e. readme, r code, man pages, -vignette). You may show instructions only in unevaluated sections. +vignette). You may show instructions only in unevaluated sections. See also +[Additional files and dependencies](#rcode-sysdep) ## `biocViews` {#description-biocviews} diff --git a/install-file.Rmd b/install-file.Rmd index 7584a0e..9087d2d 100644 --- a/install-file.Rmd +++ b/install-file.Rmd @@ -3,8 +3,11 @@ An INSTALL file does not have to be included with the package. An INSTALL file is utilized for specifying external system requirements needed. It should be used in combination with the `SystemRequirements` field of the [Description -file](#description-sysdep). This file should contain installation instructions -for the required system dependency. +file](#description-sysdep). This file should provide instructions for installing +the external software on the 3 major OS that we support: Linux, Windows, and +Mac. This will not only help your users get the external software on their +machines, but it will also help us install it on the build machines if it's not +already there. Specifying this requirement does not guarantee that _Bioconductor_ will agree to install the external system requirement. It is encouraged to discuss any diff --git a/r-code.Rmd b/r-code.Rmd index 812c5a7..ca2b71e 100644 --- a/r-code.Rmd +++ b/r-code.Rmd @@ -206,20 +206,32 @@ helper functions. #### Additional files and dependencies {#rcode-sysdep} -Do NOT install anything on a users system. - -System dependencies, applications, and additionally needed packages should be -assumed already present on the user's system. - -If necessary, package maintainers should provide instructions for download and -setup, but should not execute those instructions on behalf of a -user. Complicated or additional system dependency instructions could be part of -the [README file](#readme) and/or [INSTALL file](#sysdep). All package -dependencies must actively be on CRAN or [_Bioconductor_][]. +Do NOT install anything on a users system! System dependencies, applications, +and additionally needed packages should be assumed already present on the user's +system. + +Direct calls to external commands via +system() or system2() are not ideal so should only be used when there is no +other alternative. For example, if a CRAN or Bioconductor package already +provides the functionality that you are after, you should use that instead. + +Now if your package **absolutely** must rely on external software then you +need to make sure that those requirements are listed in +the SystemRequirements field of the DESCRIPTION file of the package. These +requirements should be "reasonable" requirements, that is, trusted software +only, open source, and relatively easy to install. + +Additionally we ask that the package contains an [INSTALL file](#sysdep) (in the +top-level folder) that provides instructions for installing the external +software on the 3 major OS that we support: Linux, Windows, and Mac. This +will not only help your users get the external software on their machines, +but it will also help us install it on the build machines if it's not +already there. All system and package dependencies should be the latest publically available -version. - +version. All package dependencies must actively be on CRAN or +Bioconductor. Bioconductor will not recognize Remotes in Description and will +not install a lower version of a package or dependency. #### Namespaces {#rcode-namespaces}