From 7b933ef8e071e534c1fdff64190ba7a6314df89f Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 10:28:31 -0400 Subject: [PATCH 01/31] Setup pak --- pak/install_pkg.R | 14 ++++++++++++++ pak/setup.R | 15 +++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 pak/install_pkg.R create mode 100644 pak/setup.R diff --git a/pak/install_pkg.R b/pak/install_pkg.R new file mode 100644 index 0000000..a9b1014 --- /dev/null +++ b/pak/install_pkg.R @@ -0,0 +1,14 @@ + +args <- commandArgs(TRUE) +if (length(args) > 0) { + pkgs <- args[-1] + + # Must match install file + lib <- file.path("pak", "lib", R.Version()$platform, paste0(R.Version()$major, ".", R.Version()$minor)) + # Load pak from our tmp lib + require("pak", character.only = TRUE, lib.loc = lib, quietly = TRUE) + + lapply(pkgs, function(pkg) { + pak::pkg_system_requirements(pkg, execute = TRUE, sudo = TRUE) + }) +} diff --git a/pak/setup.R b/pak/setup.R new file mode 100644 index 0000000..332cbb2 --- /dev/null +++ b/pak/setup.R @@ -0,0 +1,15 @@ +# Must match install file +lib <- file.path("pak", "lib", R.Version()$platform, paste0(R.Version()$major, ".", R.Version()$minor)) +if (!dir.exists(lib)) { + dir.create(lib, recursive = TRUE) +} + +if (system.file(package = "pak", lib.loc = lib) == "") { + # install latest + install.packages("pak", repos = "https://r-lib.github.io/p/pak/dev/", lib = lib) +} else { + # Load pak from our tmp lib + require("pak", character.only = TRUE, lib.loc = lib, quietly = TRUE) + # update to latest version + pak::pak_update() +} From 93362ed527b3e60672070ee5b93ab752d80fdf8b Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 11:44:49 -0400 Subject: [PATCH 02/31] Use local lib path for pak that is ignored for regular execution --- pak/install_pkg.R | 23 ++++++++++++++++++++++- pak/setup.R | 27 ++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/pak/install_pkg.R b/pak/install_pkg.R index a9b1014..7b86bba 100644 --- a/pak/install_pkg.R +++ b/pak/install_pkg.R @@ -1,10 +1,31 @@ +# Returns the file currently being sourced or run with Rscript +thisFile <- function() { + cmdArgs <- commandArgs(trailingOnly = FALSE) + needle <- "--file=" + match <- grep(needle, cmdArgs) + if (length(match) > 0) { + # Rscript + return(normalizePath(sub(needle, "", cmdArgs[match]))) + } else { + # 'source'd via R console + return(normalizePath(sys.frames()[[1]]$ofile)) + } +} +# set to `pak` folder +setwd(dirname(thisFile())) + +os <- tryCatch({ + system("lsb_release -sc", intern = TRUE) +}, error = function(e) { + "local" +}) args <- commandArgs(TRUE) if (length(args) > 0) { pkgs <- args[-1] # Must match install file - lib <- file.path("pak", "lib", R.Version()$platform, paste0(R.Version()$major, ".", R.Version()$minor)) + lib <- file.path("lib", os, paste0(R.Version()$major, ".", R.Version()$minor)) # Load pak from our tmp lib require("pak", character.only = TRUE, lib.loc = lib, quietly = TRUE) diff --git a/pak/setup.R b/pak/setup.R index 332cbb2..3db650a 100644 --- a/pak/setup.R +++ b/pak/setup.R @@ -1,5 +1,27 @@ +# Returns the file currently being sourced or run with Rscript +thisFile <- function() { + cmdArgs <- commandArgs(trailingOnly = FALSE) + needle <- "--file=" + match <- grep(needle, cmdArgs) + if (length(match) > 0) { + # Rscript + return(normalizePath(sub(needle, "", cmdArgs[match]))) + } else { + # 'source'd via R console + return(normalizePath(sys.frames()[[1]]$ofile)) + } +} +# set to `pak` folder +setwd(dirname(thisFile())) + +os <- tryCatch({ + system("lsb_release -sc", intern = TRUE) +}, error = function(e) { + "local" +}) + # Must match install file -lib <- file.path("pak", "lib", R.Version()$platform, paste0(R.Version()$major, ".", R.Version()$minor)) +lib <- file.path("lib", os, paste0(R.Version()$major, ".", R.Version()$minor)) if (!dir.exists(lib)) { dir.create(lib, recursive = TRUE) } @@ -7,6 +29,9 @@ if (!dir.exists(lib)) { if (system.file(package = "pak", lib.loc = lib) == "") { # install latest install.packages("pak", repos = "https://r-lib.github.io/p/pak/dev/", lib = lib) + # quick test + require("pak", character.only = TRUE, lib.loc = lib, quietly = FALSE) + } else { # Load pak from our tmp lib require("pak", character.only = TRUE, lib.loc = lib, quietly = TRUE) From 01142211c79d3fd1257f94b847b417f1101f250b Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 11:44:59 -0400 Subject: [PATCH 03/31] Fix pkgs to be installed --- pak/install_pkg.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pak/install_pkg.R b/pak/install_pkg.R index 7b86bba..89a4238 100644 --- a/pak/install_pkg.R +++ b/pak/install_pkg.R @@ -22,7 +22,7 @@ os <- tryCatch({ args <- commandArgs(TRUE) if (length(args) > 0) { - pkgs <- args[-1] + pkgs <- args # Must match install file lib <- file.path("lib", os, paste0(R.Version()$major, ".", R.Version()$minor)) From fdf66eb33229c8967479653ab7241dd300046439 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 11:46:50 -0400 Subject: [PATCH 04/31] Install pak before packages. If no install file exists, use pak to install sys reqs --- install | 30 ++++++++++++++++++++---------- test | 45 ++++++++++++++++++++++++++------------------- 2 files changed, 46 insertions(+), 29 deletions(-) diff --git a/install b/install index 32b2cde..d64e16d 100755 --- a/install +++ b/install @@ -18,23 +18,33 @@ DIR=`dirname $0` PACKAGES=$@ +echo " ***** SETUP..." | purple +# make sure apt-get is up to date +apt-get update -qq + +# install pak if it doesn't already exist +echo " ***** INSTALL PAK..." | purple +Rscript "$DIR/pak/setup.R" + for PACKAGE in $PACKAGES; do PACKAGE_DIR=$DIR/packages/$PACKAGE - if [ -f $PACKAGE_DIR/install ]; then - echo " ***** PACKAGE $PACKAGE" | purple + echo " ***** PACKAGE $PACKAGE" | purple - echo " ***** INSTALLING..." | purple + echo " ***** INSTALLING..." | purple + if [ -f $PACKAGE_DIR/install ]; then bash $PACKAGE_DIR/install + else + Rscript "$DIR/pak/install_pkg.R" $PACKAGE + fi - return_code=$? - if [[ $return_code != 0 ]] ; then - echo "$PACKAGE... FAILED" | red - exit $return_code - else - echo "$PACKAGE... SUCCESS" | green - fi + return_code=$? + if [[ $return_code != 0 ]] ; then + echo "$PACKAGE... FAILED" | red + exit $return_code + else + echo "$PACKAGE... SUCCESS" | green fi done diff --git a/test b/test index 93f9a37..50b7985 100755 --- a/test +++ b/test @@ -14,6 +14,10 @@ color_text () { echo -e -n "\033[0m" # clear the color } +echo " ***** SETUP..." | purple +# make sure apt-get is up to date +apt-get update -qq + # install ts command (used later in this script) apt-get install -qq -y moreutils @@ -25,33 +29,36 @@ else PACKAGES=$@ fi +# install pak if it doesn't already exist +echo " ***** INSTALL PAK..." | purple +Rscript "$DIR/pak/setup.R" | ts + for PACKAGE in $PACKAGES; do PACKAGE_DIR=$DIR/packages/$PACKAGE - if [ -f $PACKAGE_DIR/install ]; then - echo " ***** PACKAGE $PACKAGE" | purple + echo " ***** PACKAGE $PACKAGE" | purple - echo " ***** INSTALLING..." | purple + echo " ***** INSTALLING $PACKAGE..." | purple + if [ -f $PACKAGE_DIR/install ]; then bash $PACKAGE_DIR/install | ts + else + Rscript "$DIR/pak/install_pkg.R" $PACKAGE | ts + fi + + echo " ***** TESTING $PACKAGE..." | purple + if [ -f $PACKAGE_DIR/test.R ]; then + sudo R --verbose -f $PACKAGE_DIR/test.R + else + sudo R -e "install.packages('$PACKAGE', repos='http://cran.rstudio.com/'); library('$PACKAGE')" + fi - echo " ***** TESTING..." | purple - if [ -f $PACKAGE_DIR/test.R ]; then - sudo R --verbose -f $PACKAGE_DIR/test.R - else - sudo R -e "install.packages('$PACKAGE', repos='http://cran.rstudio.com/'); library('$PACKAGE')" - fi - - return_code=$? - if [[ $return_code != 0 ]] ; then - echo "$PACKAGE... FAILED" | red - exit $return_code - else - echo "$PACKAGE... SUCCESS" | green - fi + return_code=$? + if [[ $return_code != 0 ]] ; then + echo "$PACKAGE... FAILED" | red + exit $return_code else - echo "Unable to find '$PACKAGE' in $DIR/packages, exiting..." | red - exit 1 + echo "$PACKAGE... SUCCESS" | green fi done From bb51c2866b0a7c59de6957fef0644ace20e80b40 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 11:46:57 -0400 Subject: [PATCH 05/31] Ignore lib folder --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a977916..fa088d9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .vagrant/ +pak/lib From 5d590b25d321a52555c13e78635577ce8e50b372 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 11:47:06 -0400 Subject: [PATCH 06/31] Remove gsl install --- packages/gsl/install | 6 ------ packages/gsl/placeholder.txt | 1 + 2 files changed, 1 insertion(+), 6 deletions(-) delete mode 100755 packages/gsl/install create mode 100644 packages/gsl/placeholder.txt diff --git a/packages/gsl/install b/packages/gsl/install deleted file mode 100755 index 2ab3220..0000000 --- a/packages/gsl/install +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -x -set -e - -apt-get update -qq -apt-get install -y libgsl0-dev diff --git a/packages/gsl/placeholder.txt b/packages/gsl/placeholder.txt new file mode 100644 index 0000000..8ae74d7 --- /dev/null +++ b/packages/gsl/placeholder.txt @@ -0,0 +1 @@ +Used to keep folder alive From c722231227a1f702f7fe16a4ff1cee8d846843cd Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 11:56:37 -0400 Subject: [PATCH 07/31] remove pdftools install --- packages/pdftools/install | 6 ------ 1 file changed, 6 deletions(-) delete mode 100755 packages/pdftools/install diff --git a/packages/pdftools/install b/packages/pdftools/install deleted file mode 100755 index 532f13b..0000000 --- a/packages/pdftools/install +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -x -set -e - -apt-get update -qq -apt-get install -y libpoppler-cpp-dev From 4adbd139bff6d8c6ddda4eae4eda06d52a559ad1 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 11:58:14 -0400 Subject: [PATCH 08/31] remove ragg install --- packages/ragg/install | 6 ------ 1 file changed, 6 deletions(-) delete mode 100755 packages/ragg/install diff --git a/packages/ragg/install b/packages/ragg/install deleted file mode 100755 index 36b3022..0000000 --- a/packages/ragg/install +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -x -set -e - -apt-get update -qq -apt-get install -y libfreetype6-dev libpng-dev libtiff5-dev libjpeg-dev libharfbuzz-dev libfribidi-dev From 727e2caa939c3662f04abb5dad5c931962ba475b Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 11:59:23 -0400 Subject: [PATCH 09/31] remove rDEA install and test --- packages/rDEA/install | 4 ---- packages/rDEA/placeholder.txt | 1 + packages/rDEA/test.R | 2 -- 3 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 packages/rDEA/install create mode 100644 packages/rDEA/placeholder.txt delete mode 100644 packages/rDEA/test.R diff --git a/packages/rDEA/install b/packages/rDEA/install deleted file mode 100644 index 95584ff..0000000 --- a/packages/rDEA/install +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -apt-get update -qq -apt-get install -y libglpk-dev diff --git a/packages/rDEA/placeholder.txt b/packages/rDEA/placeholder.txt new file mode 100644 index 0000000..8ae74d7 --- /dev/null +++ b/packages/rDEA/placeholder.txt @@ -0,0 +1 @@ +Used to keep folder alive diff --git a/packages/rDEA/test.R b/packages/rDEA/test.R deleted file mode 100644 index a3e0446..0000000 --- a/packages/rDEA/test.R +++ /dev/null @@ -1,2 +0,0 @@ -options(download.file.method="curl") -install.packages("rDEA", repos="https://cran.rstudio.com") From e9eae2dceca1d4e32a010f5ee06346771e1754c2 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 12:03:00 -0400 Subject: [PATCH 10/31] remove redland install --- packages/redland/install | 7 ------- 1 file changed, 7 deletions(-) delete mode 100755 packages/redland/install diff --git a/packages/redland/install b/packages/redland/install deleted file mode 100755 index cd696a6..0000000 --- a/packages/redland/install +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -set -x -set -e - -apt-get update -qq -apt-get install -y librdf0-dev - From 0f30a34907f6d11b9e597519c07af5498d65cfd1 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 12:03:48 -0400 Subject: [PATCH 11/31] remove rgeos install --- packages/rgeos/install | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 packages/rgeos/install diff --git a/packages/rgeos/install b/packages/rgeos/install deleted file mode 100644 index 6b7da85..0000000 --- a/packages/rgeos/install +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -x -set -e - -apt-get update -qq -apt-get install -y libgeos-dev From 2190bfafa4157af68f1ac6652c7c1f9cbb80f2ab Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 14:01:14 -0400 Subject: [PATCH 12/31] remove rgl --- packages/rgl/install | 6 ------ packages/rgl/placeholder.txt | 1 + 2 files changed, 1 insertion(+), 6 deletions(-) delete mode 100755 packages/rgl/install create mode 100644 packages/rgl/placeholder.txt diff --git a/packages/rgl/install b/packages/rgl/install deleted file mode 100755 index 25067ff..0000000 --- a/packages/rgl/install +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -x -set -e - -apt-get update -qq -apt-get install -y libgl1-mesa-dev libglu1-mesa-dev diff --git a/packages/rgl/placeholder.txt b/packages/rgl/placeholder.txt new file mode 100644 index 0000000..8ae74d7 --- /dev/null +++ b/packages/rgl/placeholder.txt @@ -0,0 +1 @@ +Used to keep folder alive From 066f585ef5ee4b053b3a1d83f805cbe25fb2027e Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 14:02:07 -0400 Subject: [PATCH 13/31] remove Rglpk --- packages/Rglpk/install | 6 ------ packages/Rglpk/placeholder.txt | 1 + 2 files changed, 1 insertion(+), 6 deletions(-) delete mode 100755 packages/Rglpk/install create mode 100644 packages/Rglpk/placeholder.txt diff --git a/packages/Rglpk/install b/packages/Rglpk/install deleted file mode 100755 index 8cac1cc..0000000 --- a/packages/Rglpk/install +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -x -set -e - -apt-get update -qq -apt-get install -y libglpk-dev diff --git a/packages/Rglpk/placeholder.txt b/packages/Rglpk/placeholder.txt new file mode 100644 index 0000000..8ae74d7 --- /dev/null +++ b/packages/Rglpk/placeholder.txt @@ -0,0 +1 @@ +Used to keep folder alive From 8e9d0e3c5151845e52a5de66ad4033571ee17dc7 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 14:03:11 -0400 Subject: [PATCH 14/31] remove Rmpfr install --- packages/Rmpfr/install | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 packages/Rmpfr/install diff --git a/packages/Rmpfr/install b/packages/Rmpfr/install deleted file mode 100644 index b12b8f8..0000000 --- a/packages/Rmpfr/install +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -x -set -e - -apt-get update -qq -apt-get install -y libmpfr-dev From 18fa843b06c1ad2b915e266a853a43d4b059c0a4 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 14:03:42 -0400 Subject: [PATCH 15/31] remove rsvg install --- packages/rsvg/install | 6 ------ 1 file changed, 6 deletions(-) delete mode 100755 packages/rsvg/install diff --git a/packages/rsvg/install b/packages/rsvg/install deleted file mode 100755 index 9be77f2..0000000 --- a/packages/rsvg/install +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -x -set -e - -apt-get update -qq -apt-get install -y librsvg2-dev From 02ea033db2cd79a514ce7b715bb73a4f008e3f04 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 14:37:56 -0400 Subject: [PATCH 16/31] remove tesseract --- packages/tesseract/install | 7 ------- 1 file changed, 7 deletions(-) delete mode 100755 packages/tesseract/install diff --git a/packages/tesseract/install b/packages/tesseract/install deleted file mode 100755 index 4feac56..0000000 --- a/packages/tesseract/install +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -set -x -set -e - -apt-get update -qq -apt-get install -y libtesseract-dev libleptonica-dev tesseract-ocr-eng From c5864a7c0a6a998b6bfbae5921f02c456198068c Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 14:38:11 -0400 Subject: [PATCH 17/31] remove textshaping --- packages/textshaping/install | 6 ------ packages/textshaping/test.R | 3 --- 2 files changed, 9 deletions(-) delete mode 100644 packages/textshaping/install delete mode 100644 packages/textshaping/test.R diff --git a/packages/textshaping/install b/packages/textshaping/install deleted file mode 100644 index f3d20c6..0000000 --- a/packages/textshaping/install +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -x -set -e - -apt-get update -qq -apt-get install -y libharfbuzz-dev libfribidi-dev diff --git a/packages/textshaping/test.R b/packages/textshaping/test.R deleted file mode 100644 index 5c5548f..0000000 --- a/packages/textshaping/test.R +++ /dev/null @@ -1,3 +0,0 @@ -options(download.file.method="curl") -install.packages("textshaping", repos="https://cran.rstudio.com") -textshaping::text_width("test string") From 3314d33019663ac984fff3dda5daeaad87dd62f8 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 14:39:26 -0400 Subject: [PATCH 18/31] Remove tiff --- packages/tiff/install | 6 ------ packages/tiff/placeholder.txt | 1 + 2 files changed, 1 insertion(+), 6 deletions(-) delete mode 100755 packages/tiff/install create mode 100644 packages/tiff/placeholder.txt diff --git a/packages/tiff/install b/packages/tiff/install deleted file mode 100755 index f0da1f9..0000000 --- a/packages/tiff/install +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -x -set -e - -apt-get update -qq -apt-get install -y libtiff-dev diff --git a/packages/tiff/placeholder.txt b/packages/tiff/placeholder.txt new file mode 100644 index 0000000..8ae74d7 --- /dev/null +++ b/packages/tiff/placeholder.txt @@ -0,0 +1 @@ +Used to keep folder alive From e922be75fedbd90c314de3d3b3e2c8e4d626e4d2 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 14:43:25 -0400 Subject: [PATCH 19/31] remove units and udunits2 --- packages/udunits2/install | 6 ------ packages/units/install | 6 ------ 2 files changed, 12 deletions(-) delete mode 100644 packages/udunits2/install delete mode 100644 packages/units/install diff --git a/packages/udunits2/install b/packages/udunits2/install deleted file mode 100644 index 052a85d..0000000 --- a/packages/udunits2/install +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -x -set -e - -apt-get update -qq -apt-get install -y libudunits2-dev diff --git a/packages/units/install b/packages/units/install deleted file mode 100644 index 052a85d..0000000 --- a/packages/units/install +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -x -set -e - -apt-get update -qq -apt-get install -y libudunits2-dev From d56ca26e8ba8d16651d4ff574e1b13e569204930 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 14:44:25 -0400 Subject: [PATCH 20/31] remove V8 install --- packages/V8/install | 1 - 1 file changed, 1 deletion(-) delete mode 100755 packages/V8/install diff --git a/packages/V8/install b/packages/V8/install deleted file mode 100755 index e136d1f..0000000 --- a/packages/V8/install +++ /dev/null @@ -1 +0,0 @@ -apt-get -y install libv8-dev \ No newline at end of file From 62018f88891bf6e4d62bfb04f60cdab3aa6a3ede Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 14:46:11 -0400 Subject: [PATCH 21/31] Rename pak install pkg file --- install | 2 +- pak/{install_pkg.R => install_sys_reqs.R} | 9 +++++++++ test | 3 ++- 3 files changed, 12 insertions(+), 2 deletions(-) rename pak/{install_pkg.R => install_sys_reqs.R} (83%) diff --git a/install b/install index d64e16d..25ef825 100755 --- a/install +++ b/install @@ -36,7 +36,7 @@ for PACKAGE in $PACKAGES; do if [ -f $PACKAGE_DIR/install ]; then bash $PACKAGE_DIR/install else - Rscript "$DIR/pak/install_pkg.R" $PACKAGE + Rscript "$DIR/pak/install_sys_reqs.R" $PACKAGE fi return_code=$? diff --git a/pak/install_pkg.R b/pak/install_sys_reqs.R similarity index 83% rename from pak/install_pkg.R rename to pak/install_sys_reqs.R index 89a4238..767629c 100644 --- a/pak/install_pkg.R +++ b/pak/install_sys_reqs.R @@ -28,8 +28,17 @@ if (length(args) > 0) { lib <- file.path("lib", os, paste0(R.Version()$major, ".", R.Version()$minor)) # Load pak from our tmp lib require("pak", character.only = TRUE, lib.loc = lib, quietly = TRUE) + # Prepend the pak lib path for sys req installation + # No pkg is actually being installed in this step + .libPaths( + c( + lib, + .libPaths() + ) + ) lapply(pkgs, function(pkg) { pak::pkg_system_requirements(pkg, execute = TRUE, sudo = TRUE) }) } +invisible() diff --git a/test b/test index 50b7985..b1fd3a0 100755 --- a/test +++ b/test @@ -43,7 +43,7 @@ for PACKAGE in $PACKAGES; do if [ -f $PACKAGE_DIR/install ]; then bash $PACKAGE_DIR/install | ts else - Rscript "$DIR/pak/install_pkg.R" $PACKAGE | ts + Rscript "$DIR/pak/install_sys_reqs.R" $PACKAGE | ts fi echo " ***** TESTING $PACKAGE..." | purple @@ -60,6 +60,7 @@ for PACKAGE in $PACKAGES; do else echo "$PACKAGE... SUCCESS" | green fi + done exit 0 From fdc6291fca725cd0447580d6dc81faf2d3132a05 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 14:47:00 -0400 Subject: [PATCH 22/31] Create test-pkgs.yaml --- .github/workflows/test-pkgs.yaml | 56 ++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 .github/workflows/test-pkgs.yaml diff --git a/.github/workflows/test-pkgs.yaml b/.github/workflows/test-pkgs.yaml new file mode 100644 index 0000000..b2b7360 --- /dev/null +++ b/.github/workflows/test-pkgs.yaml @@ -0,0 +1,56 @@ +on: + push: + branches: + - main + - master + - ghactions + pull_request: + branches: + - main + - master + # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onschedule + # schedule: + # - cron: '0 0 * * 1' # every monday at midnight + +name: Test packages + +jobs: + packages: + runs-on: ubuntu-latest + outputs: + pkg_names: ${{ steps.set_pkg_names.outputs.pkg_names }} + steps: + - id: set_pkg_names + # https://stackoverflow.com/a/32354503/591574 + run: | + PKGS=`ls packages | jq -R '[.]' | jq -s -c 'add'` + echo "::set-output name=pkg_names::$PKGS" + + test: + runs-on: ubuntu-latest + + name: ${{ matrix.docker_type }} - ${{ matrix.pkg }} + + strategy: + fail-fast: false + + # Test using independent docker images + # Isolated testing so that a prior package doesn't "help" another package + matrix: + # dynamic pkg names from the `./packages` folder + # https://github.blog/changelog/2020-04-15-github-actions-new-workflow-features/ + pkg: ${{ fromJson(needs.packages.outputs.pkg_names) }} + docker_type: + - bonic + - xenial + + steps: + - uses: actions/checkout@v2 + + - name: Build local docker file + run: | + make docker-build-${{ matrix.docker_type }} + + - name: "Test package: ${{ matrix.pkg }}" + run: | + make test-${{ matrix.docker_type }}-${{ matrix.pkg }} From 09bf627377b357fee368cf402df30a9a159910a0 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 14:51:52 -0400 Subject: [PATCH 23/31] Don't forget to checkout the repo. Run on `pak` branch --- .github/workflows/test-pkgs.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test-pkgs.yaml b/.github/workflows/test-pkgs.yaml index b2b7360..941caca 100644 --- a/.github/workflows/test-pkgs.yaml +++ b/.github/workflows/test-pkgs.yaml @@ -4,6 +4,7 @@ on: - main - master - ghactions + - pak pull_request: branches: - main @@ -20,6 +21,7 @@ jobs: outputs: pkg_names: ${{ steps.set_pkg_names.outputs.pkg_names }} steps: + - uses: actions/checkout@v2 - id: set_pkg_names # https://stackoverflow.com/a/32354503/591574 run: | From 8499d49fd9becc6223650b8a4023188c3f8e51bf Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 14:56:56 -0400 Subject: [PATCH 24/31] try using an object and no an array --- .github/workflows/test-pkgs.yaml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test-pkgs.yaml b/.github/workflows/test-pkgs.yaml index 941caca..cc79166 100644 --- a/.github/workflows/test-pkgs.yaml +++ b/.github/workflows/test-pkgs.yaml @@ -19,14 +19,17 @@ jobs: packages: runs-on: ubuntu-latest outputs: - pkg_names: ${{ steps.set_pkg_names.outputs.pkg_names }} + pkgs: ${{ steps.set_pkgs.outputs.pkgs }} steps: - uses: actions/checkout@v2 - - id: set_pkg_names + - id: set_pkgs # https://stackoverflow.com/a/32354503/591574 run: | PKGS=`ls packages | jq -R '[.]' | jq -s -c 'add'` - echo "::set-output name=pkg_names::$PKGS" + echo "::set-output name=pkgs::{\"name\":$PKGS}" + - name: debug + run: | + echo "${{ steps.set_pkgs.outputs.pkgs }}" test: runs-on: ubuntu-latest @@ -41,7 +44,7 @@ jobs: matrix: # dynamic pkg names from the `./packages` folder # https://github.blog/changelog/2020-04-15-github-actions-new-workflow-features/ - pkg: ${{ fromJson(needs.packages.outputs.pkg_names) }} + pkg: ${{ fromJson(needs.packages.outputs.pkgs) }} docker_type: - bonic - xenial @@ -53,6 +56,6 @@ jobs: run: | make docker-build-${{ matrix.docker_type }} - - name: "Test package: ${{ matrix.pkg }}" + - name: "Test package: ${{ matrix.pkg.name }}" run: | - make test-${{ matrix.docker_type }}-${{ matrix.pkg }} + make test-${{ matrix.docker_type }}-${{ matrix.pkg.name }} From 28c37223db2bd965a76a993a74b5cad5a024d419 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 15:00:02 -0400 Subject: [PATCH 25/31] Use a matrix like the example --- .github/workflows/test-pkgs.yaml | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/.github/workflows/test-pkgs.yaml b/.github/workflows/test-pkgs.yaml index cc79166..cbda2cd 100644 --- a/.github/workflows/test-pkgs.yaml +++ b/.github/workflows/test-pkgs.yaml @@ -19,17 +19,17 @@ jobs: packages: runs-on: ubuntu-latest outputs: - pkgs: ${{ steps.set_pkgs.outputs.pkgs }} + matrix: ${{ steps.set_matrix.outputs.matrix }} steps: - uses: actions/checkout@v2 - - id: set_pkgs + - id: set_matrix # https://stackoverflow.com/a/32354503/591574 run: | PKGS=`ls packages | jq -R '[.]' | jq -s -c 'add'` - echo "::set-output name=pkgs::{\"name\":$PKGS}" + echo "::set-output name=matrix::{\"pkg\":$PKGS, \"docker_type\":[\"bionic\", \"xenial\"]}" - name: debug run: | - echo "${{ steps.set_pkgs.outputs.pkgs }}" + echo "${{ steps.set_matrix.outputs.matrix }}" test: runs-on: ubuntu-latest @@ -41,13 +41,9 @@ jobs: # Test using independent docker images # Isolated testing so that a prior package doesn't "help" another package - matrix: - # dynamic pkg names from the `./packages` folder - # https://github.blog/changelog/2020-04-15-github-actions-new-workflow-features/ - pkg: ${{ fromJson(needs.packages.outputs.pkgs) }} - docker_type: - - bonic - - xenial + # dynamic pkg names from the `./packages` folder + # https://github.blog/changelog/2020-04-15-github-actions-new-workflow-features/ + matrix: ${{fromJson(needs.packages.outputs.matrix)}} steps: - uses: actions/checkout@v2 From 79d5525db3b364804ce62744c23afa3030887b87 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 15:03:45 -0400 Subject: [PATCH 26/31] Revert to original single name setup. Say `test` needs `packages` --- .github/workflows/test-pkgs.yaml | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test-pkgs.yaml b/.github/workflows/test-pkgs.yaml index cbda2cd..141acdb 100644 --- a/.github/workflows/test-pkgs.yaml +++ b/.github/workflows/test-pkgs.yaml @@ -19,31 +19,37 @@ jobs: packages: runs-on: ubuntu-latest outputs: - matrix: ${{ steps.set_matrix.outputs.matrix }} + pkg_names: ${{ steps.set_pkg_names.outputs.pkg_names }} steps: - uses: actions/checkout@v2 - - id: set_matrix + - id: set_pkg_names # https://stackoverflow.com/a/32354503/591574 run: | PKGS=`ls packages | jq -R '[.]' | jq -s -c 'add'` - echo "::set-output name=matrix::{\"pkg\":$PKGS, \"docker_type\":[\"bionic\", \"xenial\"]}" + echo "::set-output name=pkg_names::$PKGS" - name: debug run: | - echo "${{ steps.set_matrix.outputs.matrix }}" + echo "${{ steps.set_pkg_names.outputs.pkg_names }}" test: runs-on: ubuntu-latest name: ${{ matrix.docker_type }} - ${{ matrix.pkg }} + needs: + - packages strategy: fail-fast: false # Test using independent docker images # Isolated testing so that a prior package doesn't "help" another package - # dynamic pkg names from the `./packages` folder - # https://github.blog/changelog/2020-04-15-github-actions-new-workflow-features/ - matrix: ${{fromJson(needs.packages.outputs.matrix)}} + matrix: + # dynamic pkg names from the `./packages` folder + # https://github.blog/changelog/2020-04-15-github-actions-new-workflow-features/ + pkg: ${{ fromJson(needs.packages.outputs.pkg_names) }} + docker_type: + - bonic + - xenial steps: - uses: actions/checkout@v2 @@ -52,6 +58,6 @@ jobs: run: | make docker-build-${{ matrix.docker_type }} - - name: "Test package: ${{ matrix.pkg.name }}" + - name: "Test package: ${{ matrix.pkg }}" run: | - make test-${{ matrix.docker_type }}-${{ matrix.pkg.name }} + make test-${{ matrix.docker_type }}-${{ matrix.pkg }} From 8fcb11a6c49afa75713888c9d4006c0abba379fa Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 15:08:54 -0400 Subject: [PATCH 27/31] Use hosted docker images --- .github/workflows/test-pkgs.yaml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test-pkgs.yaml b/.github/workflows/test-pkgs.yaml index 141acdb..db8585b 100644 --- a/.github/workflows/test-pkgs.yaml +++ b/.github/workflows/test-pkgs.yaml @@ -34,30 +34,27 @@ jobs: test: runs-on: ubuntu-latest - name: ${{ matrix.docker_type }} - ${{ matrix.pkg }} + name: ${{ matrix.pkg }} - ${{ matrix.docker_type }} needs: - packages strategy: fail-fast: false - # Test using independent docker images + # Test using independent docker containers # Isolated testing so that a prior package doesn't "help" another package matrix: - # dynamic pkg names from the `./packages` folder + # Dynamic pkg names from the `./packages` folder # https://github.blog/changelog/2020-04-15-github-actions-new-workflow-features/ pkg: ${{ fromJson(needs.packages.outputs.pkg_names) }} docker_type: - - bonic + - bionic - xenial steps: - uses: actions/checkout@v2 - - name: Build local docker file - run: | - make docker-build-${{ matrix.docker_type }} - + # Using dockerhub image - name: "Test package: ${{ matrix.pkg }}" run: | make test-${{ matrix.docker_type }}-${{ matrix.pkg }} From 3bd9e30039b26c752a6e5a945cb7eb5143221bec Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 15:18:43 -0400 Subject: [PATCH 28/31] formatting --- .github/workflows/test-pkgs.yaml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test-pkgs.yaml b/.github/workflows/test-pkgs.yaml index db8585b..3fafedd 100644 --- a/.github/workflows/test-pkgs.yaml +++ b/.github/workflows/test-pkgs.yaml @@ -1,17 +1,11 @@ on: push: branches: - - main - - master - - ghactions - - pak + - master + - pak pull_request: branches: - - main - - master - # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onschedule - # schedule: - # - cron: '0 0 * * 1' # every monday at midnight + - master name: Test packages @@ -54,7 +48,7 @@ jobs: steps: - uses: actions/checkout@v2 - # Using dockerhub image + # Use dockerhub image - name: "Test package: ${{ matrix.pkg }}" run: | make test-${{ matrix.docker_type }}-${{ matrix.pkg }} From e2dc63e191a1ee51643524a3d22f4eec33247c0a Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 15:21:47 -0400 Subject: [PATCH 29/31] Test using focal --- .github/workflows/test-pkgs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-pkgs.yaml b/.github/workflows/test-pkgs.yaml index 3fafedd..3ffb10d 100644 --- a/.github/workflows/test-pkgs.yaml +++ b/.github/workflows/test-pkgs.yaml @@ -42,7 +42,7 @@ jobs: # https://github.blog/changelog/2020-04-15-github-actions-new-workflow-features/ pkg: ${{ fromJson(needs.packages.outputs.pkg_names) }} docker_type: - - bionic + - focal - xenial steps: From a903ac833470ecac339a27d691623296cfee8d24 Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 15:21:53 -0400 Subject: [PATCH 30/31] Delete .travis.yml --- .travis.yml | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index d9b7917..0000000 --- a/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -sudo: required - -services: - - docker - -env: - - TEST_OS=xenial - - TEST_OS=focal - -script: - - make test-all-$TEST_OS From c39737d4ff20a9638d474304f286d711cbb2b61a Mon Sep 17 00:00:00 2001 From: Barret Schloerke Date: Thu, 18 Mar 2021 15:46:53 -0400 Subject: [PATCH 31/31] xenial is missing libpcre2. Build local docker files to test latest --- .github/workflows/test-pkgs.yaml | 4 ++++ Dockerfile.xenial | 1 + 2 files changed, 5 insertions(+) diff --git a/.github/workflows/test-pkgs.yaml b/.github/workflows/test-pkgs.yaml index 3ffb10d..b8e477e 100644 --- a/.github/workflows/test-pkgs.yaml +++ b/.github/workflows/test-pkgs.yaml @@ -48,6 +48,10 @@ jobs: steps: - uses: actions/checkout@v2 + - name: Build docker image + run: | + make docker-build-${{ matrix.docker_type }} + # Use dockerhub image - name: "Test package: ${{ matrix.pkg }}" run: | diff --git a/Dockerfile.xenial b/Dockerfile.xenial index 2718a19..87f1950 100644 --- a/Dockerfile.xenial +++ b/Dockerfile.xenial @@ -37,6 +37,7 @@ RUN apt-get update -qq && \ libgsl0-dev \ libmysqlclient-dev \ libnetcdf-dev \ + libpcre2-dev \ libprocps4-dev \ libproj-dev \ libprotoc-dev \