Utilities for basilisk installation

Who is this package for?

This document and package is strictly for the developers of basilisk. If you are a developer of a client package, you probably want to read the basilisk vignette instead. If you are an end-user of some client package, you are better off reading the documentation for that client instead.

Why does this package exist?

This package centralizes various R functions that are required for installing basilisk. By default, these functions are (potentially) called in basiliskStart() during client run-time. However, under certain conditions, they are called via the configure file during basilisk installation.

Ideally, we would put these functions inside basilisk for use in all situations. However, this is not possible as configure runs before installation, i.e., before any functions are actually available! The naive option is to simply duplicate the code in both the package and configure; this is unappealing as it requires us to maintain twice as much code and circumvents R CMD check’s code quality checks.

The basilisk.utils package provides R functions that can be called in both configure and basiliskStart(). This allows us to avoid code duplication and enjoy the safety of R CMD check. The consequence of this approach is that basilisk.utils has no direct relevance to other packages or end-users, and thus should never be explicitly loaded into a package namespace or R session.

Session information

sessionInfo()
## R version 4.4.2 (2024-10-31)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 24.04.1 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so;  LAPACK version 3.12.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=C              
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## time zone: Etc/UTC
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] basilisk.utils_1.19.0 BiocStyle_2.35.0     
## 
## loaded via a namespace (and not attached):
##  [1] digest_0.6.37       R6_2.5.1            fastmap_1.2.0      
##  [4] xfun_0.49           dir.expiry_1.15.0   maketools_1.3.1    
##  [7] cachem_1.1.0        filelock_1.0.3      knitr_1.49         
## [10] htmltools_0.5.8.1   rmarkdown_2.29      buildtools_1.0.0   
## [13] lifecycle_1.0.4     cli_3.6.3           sass_0.4.9         
## [16] jquerylib_0.1.4     compiler_4.4.2      sys_3.4.3          
## [19] tools_4.4.2         evaluate_1.0.1      bslib_0.8.0        
## [22] yaml_2.3.10         BiocManager_1.30.25 jsonlite_1.8.9     
## [25] rlang_1.1.4