From e1af001711429d4784dbf4eca03c15c219c4603c Mon Sep 17 00:00:00 2001 From: Andrea Dell'Amico Date: Tue, 2 Mar 2021 11:27:16 +0100 Subject: [PATCH] Fixes #20613. Support R 4.0 --- README.md | 5 +++++ defaults/main.yml | 16 +++++++++++++--- tasks/r-installation-deb.yml | 8 ++++---- tasks/r-packages-install.yml | 20 ++++++++++++++++++-- tasks/r-packages-updater.yml | 4 +++- 5 files changed, 43 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 7a65fb0..af105cb 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,11 @@ The most important variables are listed below: ``` yaml # Set to True if you want install from the CRAN deb repository r_install_cran_repo: False +# Use 'cran35' for R 3.6 +r_cran_repo_version: 'cran40' +r_cran_repo_url: 'https://cloud.r-project.org/bin/linux/ubuntu {{ ansible_distribution_release }}-{{ r_cran_repo_version }}/' +# Use 'marutter/c2d4u3.5' for R 3.6 +r_cran_ubuntu_packages_ppa: 'ppa:marutter/c2d4u' #r_cran_mirror_site: http://cran.rstudio.com r_cran_set_default_mirror: True r_cran_mirror_site: https://cran.mirror.garr.it/mirrors/CRAN/ diff --git a/defaults/main.yml b/defaults/main.yml index bbfc89e..9b2e406 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -11,18 +11,25 @@ # # Set to True if you want install from the CRAN deb repository r_install_cran_repo: False -#r_cran_mirror_site: http://cran.rstudio.com +# “Michael Rutter marutter@gmail.com” with key ID 0x51716619e084dab9 +# E298A3A825C0D65DFD57CBB651716619E084DAB9 +r_cran_repo_apt_key: 'E298A3A825C0D65DFD57CBB651716619E084DAB9' +# Use 'cran35' for R 3.6 +r_cran_repo_version: 'cran40' +r_cran_repo_url: 'https://cloud.r-project.org/bin/linux/ubuntu {{ ansible_distribution_release }}-{{ r_cran_repo_version }}/' +# Use 'marutter/c2d4u3.5' for R 3.6 +r_cran_ubuntu_packages_ppa: 'ppa:marutter/c2d4u' r_cran_set_default_mirror: True r_cran_mirror_site: https://cran.mirror.garr.it/mirrors/CRAN/ r_base_specific_version: False -r_base_pkg_version: 3.4.4 +r_base_pkg_version: 4.0.3 r_packages_main_state: present r_packages_state: '{{ r_packages_main_state }}' r_sitelib_path: '/usr/local/lib/R/site-library' r_plugins_from_deb: True r_packages_cleanup: False # -r_packages_updater: False +r_packages_updater: True r_package_updater_via_subversion: True r_package_updater_subversion_repo: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-analysis/RConfiguration/RPackagesManagement/ r_packages_svn_base_dir: /srv/r_updater @@ -105,6 +112,9 @@ r_base_packages_java_dev_el: - R-java-devel r_distribution_required_el_packages: [] + +r_cran_ubuntu_packages: [] +r_cran_install_from_sources: True r_plugins_list_to_install: [] # - { name: 'R2WinBUGS', repo: '{{ r_cran_mirror_site }}' } # - { name: 'R2jags', repo: '{{ r_cran_mirror_site }}' } diff --git a/tasks/r-installation-deb.yml b/tasks/r-installation-deb.yml index f231149..60ec2fc 100644 --- a/tasks/r-installation-deb.yml +++ b/tasks/r-installation-deb.yml @@ -1,18 +1,18 @@ --- - block: - name: Add the cran repository key - apt_key: id=E084DAB9 keyserver=keyserver.ubuntu.com state=present + apt_key: id={{ r_cran_repo_apt_key }} keyserver=keyserver.ubuntu.com state=present tags: [ 'r_software', 'r_repo', 'r_repo_key' ] - name: Add the CRAN repository - apt_repository: repo='deb http://cran.rstudio.com/bin/linux/ubuntu {{ ansible_distribution_release }}/' state=present update_cache=yes + apt_repository: repo='deb {{ r_cran_repo_url }}' state=present update_cache=yes when: r_install_cran_repo tags: [ 'r_software', 'r_repo' ] - block: - name: Remove the CRAN repository - apt_repository: repo='deb http://cran.rstudio.com/bin/linux/ubuntu {{ ansible_distribution_release }}/' state=absent update_cache=yes + apt_repository: repo='deb {{ r_cran_repo_url }}' state=absent update_cache=yes when: not r_install_cran_repo tags: [ 'r_software', 'r_repo' ] @@ -26,7 +26,7 @@ tags: [ 'r_software', 'r_pkg', 'r_pkg_hold' ] - name: Install the R base packages. - apt: pkg={{ r_base_packages_list }} state={{ r_packages_main_state }} force=yes update_cache=yes cache_valid_time=3600 + apt: pkg={{ r_base_packages_list }} state={{ r_packages_main_state }} update_cache=yes cache_valid_time=3600 - name: When we install specific R deb packages, put them on hold shell: apt-mark hold {{ item }} diff --git a/tasks/r-packages-install.yml b/tasks/r-packages-install.yml index 2f12fef..0208390 100644 --- a/tasks/r-packages-install.yml +++ b/tasks/r-packages-install.yml @@ -19,9 +19,24 @@ tags: [ 'r_software', 'r_pkg', 'r_plugins', 'r_plugins_version' ] - block: + - name: Add the Ubuntu PPA '{{ r_cran_ubuntu_packages_ppa }}' + apt_repository: repo='{{ r_cran_ubuntu_packages_ppa }}' state=present update_cache=yes + + - name: Install the R plugins from the Ubuntu PPA + apt: pkg={{ r_cran_ubuntu_packages }} state=present cache_valid_time=3600 + tags: [ 'r_software', 'r_pkg', 'r_plugins', 'r_deb_plugins' ] + +- block: + - name: Install the R devtools package from CRAN + command: > + Rscript --slave --no-save --no-restore-history -e "if (! ('devtools' %in% installed.packages()[,'Package'])) { install.packages(pkgs='devtools', repos=c('https://cloud.r-project.org/')); print('Added'); } else { print('Already installed'); }" + register: install_devtools_result + failed_when: "install_devtools_result.rc != 0 or 'had non-zero exit status' in install_devtools_result.stderr" + changed_when: "'Added' in install_devtools_result.stdout" + - name: Install R packages from the cran sources repo or from an alternative repository, latest available version. command: > - Rscript --slave --no-save --no-restore-history -e "if (! ('{{ item.name }}' %in% installed.packages()[,'Package'])) { install.packages(pkgs='{{ item.name }}', repos=c('{{ item.repo | default ('https://cloud.r-project.org') }}/')); print('Added'); } else { print('Already installed'); }" + Rscript --slave --no-save --no-restore-history -e "if (! ('{{ item.name }}' %in% installed.packages()[,'Package'])) { require(devtools); require(methods) ; install.packages(pkgs='{{ item.name }}', repos=c('{{ item.repo | default ('https://cloud.r-project.org') }}/')); print('Added'); } else { print('Already installed'); }" register: install_plugins_result failed_when: "install_plugins_result.rc != 0 or 'had non-zero exit status' in install_plugins_result.stderr" changed_when: "'Added' in install_plugins_result.stdout" @@ -35,7 +50,7 @@ - name: Install R packages from the cran sources, specific versions. command: > - Rscript --slave --no-save --no-restore-history -e "if (! ('{{ item.name }}' %in% installed.packages()[,'Package'])) { install.packages('{{ r_source_plugins_dest_dir }}/{{ item.source }}', repos = NULL, type='source'); print('Added'); } else if (packageVersion('{{ item.name }}') != '{{ item.version }}') { install.packages('{{ r_source_plugins_dest_dir }}/{{ item.source }}', repos = NULL, type='source'); print('Added'); } else { print('Already Installed'); }" + Rscript --slave --no-save --no-restore-history -e "if (! ('{{ item.name }}' %in% installed.packages()[,'Package'])) { install.packages('{{ r_source_plugins_dest_dir }}/{{ item.source }}', repos = NULL, type='source'); print('Added'); } else if (packageVersion('{{ item.name }}') != '{{ item.version }}') { require(devtools); require(methods) ; install.packages('{{ r_source_plugins_dest_dir }}/{{ item.source }}', repos = NULL, type='source'); print('Added'); } else { print('Already Installed'); }" register: install_s_plugins_result failed_when: "install_s_plugins_result.rc != 0 or 'had non-zero exit status' in install_s_plugins_result.stderr" changed_when: '"Added" in install_s_plugins_result.stdout' @@ -62,5 +77,6 @@ with_items: '{{ r_plugins_list_to_remove | default([]) }}' when: r_plugins_list_to_remove is defined + when: r_cran_install_from_sources tags: [ 'r_software', 'r_pkg', 'r_plugins' ] diff --git a/tasks/r-packages-updater.yml b/tasks/r-packages-updater.yml index cbee07f..2623a02 100644 --- a/tasks/r-packages-updater.yml +++ b/tasks/r-packages-updater.yml @@ -34,7 +34,9 @@ state: present when: r_packages_updater_also_upgrades_installed_packages - when: r_packages_updater + when: + - r_cran_install_from_sources + - r_packages_updater tags: [ 'r_software', 'r_pkg', 'r_plugins', 'r_plugins_github', 'r_cran_pkgs', 'r_github_pkgs', 'r_packages_updater' ] - block: