From e1c88a3bc2f2c6e8bd8ca8d596319762e762519e Mon Sep 17 00:00:00 2001 From: thomas Date: Fri, 4 Jul 2025 13:56:07 +0200 Subject: [PATCH] R: add version 4.5.1 This package is intended for people that may need to test against the latest version of R/Bioconductor. Following packages were removed (compared to R-4.4.1): * ExomeDepth pkgmaker RNAseq123 git2r (RNAseq123 is available, but has some version issue with git2r) --- R-4.5.1-0.build.sh | 405 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 405 insertions(+) create mode 100755 R-4.5.1-0.build.sh diff --git a/R-4.5.1-0.build.sh b/R-4.5.1-0.build.sh new file mode 100755 index 0000000..d8e82cd --- /dev/null +++ b/R-4.5.1-0.build.sh @@ -0,0 +1,405 @@ +#! /usr/bin/bash + +# COOKIE=$(mcookie|cut -c-8); grep -v V_GREP_ME $0 > /dev/shm/runme-$COOKIE.sh ; sleep 0.3; exec bash /dev/shm/runme-$COOKIE.sh +# TESTING=1 + +# Use this when R is build & installed and the package list is 'work in progress' +# PKGDEBUG=1 + +PKG=R +VERSION=4.5.1 +BUILD=0 + +# https://www.r-project.org/ +# https://cran.r-project.org/mirrors.html + +# A caching proxy under /project/retarded/rproxy +CRANMIRROR=http://platsch:8010/cran/$PKG-$VERSION-$BUILD/cran +BIOCMIRROR=http://platsch:8010/bioconductor/$PKG-$VERSION-$BUILD/bioc +GITMIRROR=http://platsch:8010/gitclone/$PKG-$VERSION-$BUILD + +PREFIX=/pkg/$PKG-$VERSION-$BUILD +if [ -n "$TESTING" ]; then PREFIX=/scratch/local2/$PKG-$VERSION-$BUILD ; fi + +echo "# Ready player one." +date + +set -vxe +umask 022 + +BUILD_TMPDIR=/scratch/local2/$PKG-$VERSION-$BUILD-$USER.build.tmp +test -d $BUILD_TMPDIR && rm -fr $BUILD_TMPDIR/build/* +test -d $BUILD_TMPDIR && rm -r $BUILD_TMPDIR +mkdir -p $BUILD_TMPDIR/home +export TMPDIR=$BUILD_TMPDIR +export HOME=$BUILD_TMPDIR/home + +exec $PREFIX/profile <<-EOF + PATH=$PREFIX/bin:\$PATH + PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig\${PKG_CONFIG_PATH:+:\$PKG_CONFIG_PATH} + LD_LIBRARY_PATH=$PREFIX/lib\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH} + if [ -d $PREFIX/.compatlibs ]; then export LD_LIBRARY_PATH=$PREFIX/.compatlibs\${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH} ; fi + export PKG_CONFIG_PATH LD_LIBRARY_PATH +EOF +source $PREFIX/profile + + +NPROC=$(( $(nproc) * 4 / 5 + 1 )) +export MAKEFLAGS="-j $NPROC" + +BUILDDIR=$BUILD_TMPDIR/build +mkdir -p $BUILDDIR +cd $BUILDDIR + +if [ -z "$PKGDEBUG" ]; then + +# Start with some extra stuff. Mostly owed to the inability to keep dependencies under control :/ + +( # for 'dynverse/dyno', see UDUNITS2_INCLUDE, UDUNITS2_LIBS below + UNITSVER=2.2.28 + # Orig:https://downloads.unidata.ucar.edu/udunits/2.2.28/udunits-2.2.28.tar.gz + BEEHIVE=https://beehive.molgen.mpg.de/58259d94f766c13b5b0cf1aed92ebbe3/udunits-2.2.28.tar.gz + test -e udunits-$UNITSVER.tar.gz || wget -nv $BEEHIVE + test -d udunits-$UNITSVER || tar -xf udunits-$UNITSVER.tar.gz + cd udunits-$UNITSVER + CFLAGS='-O2 -fPIC' \ + ./configure --prefix=$PREFIX --libdir=$PREFIX/lib --enable-shared=no + make + make install +) + +( + PROJVER=9.2.0 + # Orig: http://download.osgeo.org/proj/proj-9.2.0.tar.gz + BEEHIVE=https://beehive.molgen.mpg.de/1241c7115d8c380ea19469ba0828a22a/proj-9.2.0.tar.gz + test -e proj-$PROJVER.tar.gz || wget -nv $BEEHIVE + test -d proj-$PROJVER || tar -xf proj-$PROJVER.tar.gz + cd proj-$PROJVER + + mkdir -p build; cd build + + cmake \ + -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DBUILD_TESTING=OFF \ + -DBUILD_BENCHMARKS=OFF \ + -DRUN_NETWORK_DEPENDENT_TESTS=OFF \ + .. + + make + make install +) + +( + GEOSVER=3.11.2 + # Orig: http://download.osgeo.org/geos/geos-3.11.2.tar.bz2 + BEEHIVE=https://beehive.molgen.mpg.de/5967d369c641f0fad42258fcb22af6b5/geos-3.11.2.tar.bz2 + test -e geos-$GEOSVER.tar.bz2 || wget -nv $BEEHIVE + test -d geos-$GEOSVER || tar -xf geos-$GEOSVER.tar.bz2 + cd geos-$GEOSVER + + mkdir -p build; cd build + + cmake \ + -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DBUILD_TESTING=OFF \ + .. + + make + make install +) + +( + GDALVER=3.6.4 + # Orig: http://download.osgeo.org/gdal/3.6.4/gdal-3.6.4.tar.gz + BEEHIVE=https://beehive.molgen.mpg.de/7128d0309f9fe2266d72ea7228a3817f/gdal-3.6.4.tar.gz + test -e gdal-$GDALVER.tar.gz || wget -nv $BEEHIVE + test -d gdal-$GDALVER || tar -xf gdal-$GDALVER.tar.gz + cd gdal-$GDALVER + + mkdir -p build; cd build + + # still required for building... (and why use -DBUILD_CSHARP_BINDINGS and -DBUILD_JAVA_BINDINGS ???) + source /pkg/mono-6.10.0-0/profile + source /pkg/openjdk-11.0.3.2-0/profile + + cmake \ + -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DBUILD_CSHARP_BINDINGS=OFF \ + -DBUILD_JAVA_BINDINGS=OFF \ + -DBUILD_PYTHON_BINDINGS=OFF \ + -DBUILD_TESTING=OFF \ + -DGDAL_BUILD_OPTIONAL_DRIVERS=OFF \ + -DOGR_BUILD_OPTIONAL_DRIVERS=OFF \ + .. + + make + make install +) + +# ########### +# Now Build R + +# orig: https://cran.r-project.org/src/base/R-4/R-4.5.1.tar.gz +BEEHIVE=https://beehive.molgen.mpg.de/e22eee30af90ec66eb179b66d122ffd9/R-4.5.1.tar.gz + + +test -e R-$VERSION.tar.gz || wget -nv $BEEHIVE +test -d R-$VERSION || tar -xf R-$VERSION.tar.gz +cd R-$VERSION + +sed -i 's/en_GB/en_US/g' tests/reg-tests-3.R tests/reg-tests-3.Rout.save + +# set R_LD_LIBRARY_PATH for etc/ldpaths, so R gets the correct +# env if it is started without sourcing the profile +R_LD_LIBRARY_PATH=${PREFIX}/lib:${PREFIX}/.compatlibs \ +./configure \ + --prefix=$PREFIX \ + --libdir=$PREFIX/lib \ + --with-pic \ + --with-recommended-packages \ + --enable-shared \ + --with-x \ + --enable-R-shlib \ + LDFLAGS=-Wl,-rpath,$PREFIX/lib/R/lib + +export TZ=CEST # some tests need timezone +make +# make check +make install + +cd $BUILDDIR + +cat <<- RCODEXXX | Rscript - + options(repos=structure(c(CRAN='$CRANMIRROR'))) + options(BioC_mirror = '$BIOCMIRROR') + install.packages('BiocManager') + install.packages('remotes') + install.packages('devtools') + BiocManager::install(update = TRUE, ask = FALSE) # update the 'base' packages +RCODEXXX + +# java stuff seems to be a troublemaker, install first +cat <<- RCODEXXX | Rscript - + options(repos=structure(c(CRAN='$CRANMIRROR'))) + options(BioC_mirror = '$BIOCMIRROR') + BiocManager::install(c('rJava', 'RWeka', 'RWekajars'), update = FALSE) +RCODEXXX + +# same applies for V8 (JavaScript, Google) +( + export DOWNLOAD_STATIC_LIBV8=1 + cat <<- RCODEXXX | Rscript - + options(repos=structure(c(CRAN='$CRANMIRROR'))) + install.packages('V8') + RCODEXXX +) + +# apaches 'arrow' library is said to be hard to build under linux, +# so use the binary package from rstudio (now 'posit') +# https://arrow.apache.org/docs/r/articles/install.html +( + cat <<- RCODEXXX | Rscript - + options( HTTPUserAgent = sprintf( "R/%s R (%s)", getRversion(), + paste( getRversion(), R.version["platform"], R.version["arch"], R.version["os"] ) + ) + ) + install.packages("arrow", repos = "https://packagemanager.rstudio.com/all/__linux__/focal/latest") + RCODEXXX +) + +# ncdf4 (netcdf binding), suffers a bit from our statically build netcdf, which requires some basic libs itself +( + #orig: https://cran.r-project.org/src/contrib/ncdf4_1.22.tar.gz + BEEHIVE=https://beehive.molgen.mpg.de/cdfddec28e78da74ed216052d469a585/ncdf4_1.22.tar.gz + test -e ncdf4_1.22.tar.gz || wget -nv $BEEHIVE + test -d ncdf4_1.22 || tar -xf ncdf4_1.22.tar.gz + cd ncdf4 # not ncdf4_1.22 ! + export LDFLAGS="$(nc-config --all | grep -e '--static' | cut -d'>' -f2)" + R CMD INSTALL -d . +) + +echo "# State of lib/R/library after initial setup:" +ls -la $PREFIX/lib/R/library + +fi ### -z "$PKGDEBUG" + +unset DISPLAY # avoid warnings about 'RGL: unable to open X11 display' +export UDUNITS2_INCLUDE=$PREFIX/include +export UDUNITS2_LIBS=$PREFIX/lib + +# List of packages + +# Format hint: +# cat package_list | sed -e 's/\s\s*/\n/g' | grep -v '!' | sort -f | uniq | tr '\n' ' ' | fmt -w 120 +# only packages after the last '!' go into the current package_list, so just +# tag failures when priming a new build. +( tr '\n' ' ' | sed -e 's/.*!//' | fmt -w 120 ) <<- RCODEXXX > package_list + abind acepack ACME ade4 AdequacyModel affy affyio affyPLM akima ALL annotate AnnotationDbi AnnotationForge aod + ape apeglm arrayQualityMetrics ash assertthat AUCell bamsignals base64 base64enc batchelor BatchJobs BayesDA + BBmisc bdsmatrix beadarray BeadDataPackR beanplot beeswarm bgmm BH bigmemory bigmemory.sri Biobase BiocGenerics + BiocParallel biomaRt BioNet Biostrings biovizBase bit bitops boot bootstrap Boruta bpca BradleyTerry2 brew + brglm BSgenome BSgenome.Ecoli.NCBI.20080805 bumphunter c060 C50 Cairo car caret Category caTools CellNOptR + checkmate ChIPpeakAnno chipseq chron circlize CircStats Ckmeans.1d.dp class clue cluster CNEr coda codetools + coin colorspace combinat corpcor corrgram corrplot cowplot crayon cummeRbund curl cvTools data.table DBI + DelayedArray DelayedMatrixStats deldir DEoptimR DESeq2 deSolve DEXSeq dichromat digest DirichletMultinomial + DNAcopy doMC doParallel doRNG doSNOW dostats dplyr dtw dynamicTreeCut e1071 earth EBImage edgeR elasticnet + energy entropy evaluate evd exactRankTests ExperimentHub fail fANCOVA fastcluster fastICA fastmatch + FDb.InfiniumMethylation.hg19 fdrtool fields filehash flashClust foreach foreign formatR Formula futile.logger + futile.options gbm gclus gcrma gdata genefilter GeneNet geneplotter genetics GenomeInfoDb genomeIntervals + GenomicAlignments GenomicFeatures GenomicRanges GEOquery getopt GGally ggbio ggExtra ggformula ggm ggplot2 + ggpubr ggstatsplot glasso Glimma glmnet GlobalAncova GlobalOptions globaltest gmp gnm GO.db GOstats GOTHiC + gplots graph gRbase gridBase gridExtra gridSVG GSEABase GSEAlm gsl gsubfn gtable gtools Gviz h2o haplo.stats + HardyWeinberg hash hdf5r hdi hdrcde hexbin hflights hgu95av2 hgu95av2.db hgu95av2cdf HiCcompare highr HiveR + Hmisc HMM Homo.sapiens htmltools httpuv httr hwriter igraph illuminaio imcRtools impute infotheo inline + intervals ipred IRanges IRkernel iterators itertools jsonlite kernlab KernSmooth knitr ks kSamples labeling + Lahman lambda.r lars lattice latticeExtra lava lazyeval leaps LearnBayes lhs limma linprog lintr lme4 lmtest + locfit longitudinal lpSolve lpSolveAPI LSD lumi magrittr manipulate mapproj maps maptree markdown MASS MAST + Matrix MatrixEQTL matrixStats mclust mda MEDIPS memoise meta MethylSeekR methylumi mgcv mice microbenchmark + mime minfi minqa misc3d mitools mixtools mlegp modeltools multcomp multicool multiHiCcompare multtest + munsell muscle mvtnorm mzR nleqslv nlme nloptr NMF nnet nor1mix numDeriv OmicCircos optparse org.Hs.eg.db + OrganismDbi pamr party partykit pbapply pbkrtest pcalg pcaMethods penalizedSVM peperr pheatmap PhyloProfile + plotmo plotrix pls plyr ppcor pracma preprocessCore pROC prodlim profileModel proto proxy pwr qsea qtl + quadprog quantreg QuasR qvalue qvcalc R.cache R.matlab R.methodsS3 R.oo R.utils R2HTML R6 RaMS randomForest + randomGLM rbenchmark RBGL RCircos RcisTarget RColorBrewer Rcpp RcppArmadillo RcppEigen RCurl readxl registry + relaimpo relimp remotes reshape reshape2 reticulate rex rFerns rgl Rgraphviz rhandsontable rhdf5 RhpcBLASctl + Rhtslib rJava rjson RJSONIO rlecuyer RMariaDB rmarkdown rmeta Rmpfr RMySQL rnaseqGene rngtools robustbase + ROC ROCR roxygen2 rpart RPostgres RPostgreSQL RRF Rsamtools RSQLite rstudioapi rtracklayer RUnit rversions + S4Vectors sandwich scales scalreg scatterplot3d SCnorm scone SCORPIUS sda segmented sendmailR seqinr seqLogo + seriation setRNG Seurat sf shape shiny shinythemes ShortRead siggenes SingleCellExperiment sm snow snowfall + snpStats som sp spam SparseM spatial splancs spls statmod stepPlr stringdist stringi stringr strucchange + SummarizedExperiment SuppDists survey svMisc svTools tables TeachingDemos terra testthat TFBSTools TFMPvalue + tgp TH.data tidyr tidyverse tiff topGO tradeSeq TSP TxDb.Hsapiens.UCSC.hg19.knownGene VariantAnnotation vcd + VennDiagram venneuler verification VGAM vsn waveslim WGCNA whisker writexl xlsx xlsxjars XML xml2 xtable + XVector yaml yeastCC zinbwave zipfR zlibbioc zoo +RCODEXXX + +cat <<- RCODEXXX | Rscript - + XSAVE_PATH <- Sys.getenv('PATH') + options(repos=structure(c(CRAN='$CRANMIRROR'))) + options(BioC_mirror = '$BIOCMIRROR') + pkgs <- scan('package_list', what = character()) + for (pk in pkgs) { + pa <- unlist(strsplit(pk, '/')); p <- pa[1]; if (! is.na(pa[2])) p <- pa[2] + # there is no simple way to get rid of the error message, so avoid mimimi... + cat('* if there is no package, install it - errors here are part of the test!\n') + chk <- NULL; try(chk <- find.package(p)) + if (is.null(chk)) { + cat( sprintf('* About to install: %s\n', pk), file='work_monitor_list', append = TRUE) + BiocManager::install(pk, update = FALSE) + ret <- library(p, character.only = TRUE, logical.return = TRUE) + if (! ret) q(save = "no", status = 2) + # the logic fails for 'cole-trapnell-lab/cicero-release', fixed below + detach( paste("package", p, sep = ":"), unload = TRUE, character.only=TRUE) + if (Sys.getenv('PATH') != XSAVE_PATH) { + cat( sprintf('*** PATH SCREWUP OCCURED (package %s)\n', pk)) + cat( sprintf('*** expected: %s\n', XSAVE_PATH)) + cat( sprintf('*** now: %s\n', Sys.getenv('PATH'))) + } + Sys.setenv(PATH = XSAVE_PATH) + cat( sprintf('* REALLY_DONE with: %s\n', pk)) + } else { + cat( sprintf('* ALREADY_DONE with: %s\n', pk)) + } + } +RCODEXXX + +( # github nghiavtr/BPSC + mkdir -p BPSC + cd BPSC + # --trust-server-names makes wget use the 'redirected' name + wget -nv --trust-server-names platsch $GITMIRROR/nghiavtr/BPSC && test -e *.latest.tar.gz + tar -xf *.latest.tar.gz + cd BPSC + cat <<- RCODEXXX | Rscript - + devtools::install_local('.') + RCODEXXX +) + +# simple test: can everything be found? +cat <<- RCODEXXX | Rscript - + pkgs <- scan('package_list', what = character()) + for (pk in pkgs) { + pa <- unlist(strsplit(pk, '/')); p <- pa[1]; if (! is.na(pa[2])) p <- pa[2] + chk <- NULL; try(chk <- find.package(p)) + if (is.null(chk)) { + cat( sprintf('* ERROR: Missing package: %s\n', pk)) + q(save = "no", status = 3) + } + } +RCODEXXX + +# stress test: load all packages (uses 4G, claims 16G) +cat <<- RCODEXXX | Rscript - + pkgs <- scan('package_list', what = character()) + for (pk in pkgs) { + pa <- unlist(strsplit(pk, '/')); p <- pa[1]; if (! is.na(pa[2])) p <- pa[2] + ret <- library(p, character.only = TRUE, logical.return = TRUE) + if (! ret) { + cat( sprintf('* ERROR: Failed to load package/library: %s\n', pk)) + q(save = "no", status = 4) + } + } +RCODEXXX + +# do the remaining git things. + +# do 'cole-trapnell-lab/cicero-release' seperately +echo "BiocManager::install('cole-trapnell-lab/cicero-release', update = FALSE)" | Rscript - + +# # same with 'GreenleafLab/ArchR', https://www.archrproject.com/index.html +# cat <<- RCODEXXX | Rscript - +# options(repos=structure(c(CRAN='$CRANMIRROR'))) +# options(BioC_mirror = '$BIOCMIRROR') +# devtools::install_github("GreenleafLab/ArchR", ref="master", repos = BiocManager::repositories()) +# library(ArchR) +# ArchR::installExtraPackages() +# RCODEXXX + +# support for handling DiaNN output (https://github.com/vdemichev/DiaNN) +cat <<- RCODEXXX | Rscript - + options(repos=structure(c(CRAN='$CRANMIRROR'))) + options(BioC_mirror = '$BIOCMIRROR') + devtools::install_github("https://github.com/vdemichev/diann-rpackage", upgrade="never") +RCODEXXX + +# finally a source build, this is/was intended to provide a clean velocyto.R package. +# velocyto.R uses an inappropriate makefile and has a silly multitreading issue + +cd $BUILDDIR +mkdir -p velocyto_fixup +cd velocyto_fixup + +git clone https://github.com/velocyto-team/velocyto.R +cd velocyto.R +git checkout 0.6 --force +git clean -dffx + +mv src/Makevars src/Makevars.weird +# yields just -fopenmp, which won't work on macs with clang +echo 'PKG_CXXFLAGS=-Wall $(SHLIB_OPENMP_CXXFLAGS)' > src/Makevars + +# intercept the inane 'grab all cores' policy +# defaultNCores <- function() { parallel::detectCores(logical=F) } + +cp -p R/momentum_routines.R R/momentum_routines.R.orig +sed -e '/^defaultNCores/ d' -i R/momentum_routines.R +cat <<__NCores_HACK >> R/momentum_routines.R +defaultNCores <- function() { + env <- Sys.getenv('VELOCYTO_CORES') + if (env != "") { return(as.integer(env)) } + parallel::detectCores(logical=F) +} +__NCores_HACK + +R CMD INSTALL . + +echo "# Game over ..." +date + +exit