This is an automated email from the ASF dual-hosted git repository.

lfrolov pushed a commit to branch DLAB-1748
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git


The following commit(s) were added to refs/heads/DLAB-1748 by this push:
     new 9ab3b43  [DLAB-1748]: made some changes for r pkg installation
9ab3b43 is described below

commit 9ab3b43ed7d435ecd34c10ef0dd57c6ca818851d
Author: leonidfrolov <[email protected]>
AuthorDate: Mon Jul 13 18:57:57 2020 +0300

    [DLAB-1748]: made some changes for r pkg installation
---
 .../src/general/lib/os/fab.py                      | 58 +++++++++++-----------
 1 file changed, 28 insertions(+), 30 deletions(-)

diff --git a/infrastructure-provisioning/src/general/lib/os/fab.py 
b/infrastructure-provisioning/src/general/lib/os/fab.py
index 6973d6b..595d427 100644
--- a/infrastructure-provisioning/src/general/lib/os/fab.py
+++ b/infrastructure-provisioning/src/general/lib/os/fab.py
@@ -87,7 +87,8 @@ def install_pip_pkg(requisites, pip_version, lib_group):
                     version = \
                     [i for i in ver if pip_pkg.split("==")[0].lower() in 
i][0].split(
                         '==')[1]
-                dep = sudo('cat /tmp/tee.tmp | grep "Installing collected 
packages: "').replace('\r\n', '').strip()[31:]
+                sudo('if grep -w -i -E  "Installing collected packages:" 
/tmp/tee.tmp > /tmp/{0}install_{1}.log; then  echo "" > 
/tmp/{0}install_{1}.log;fi'.format(pip_version, pip_pkg))
+                dep = sudo('cat /tmp/{0}install_{1}.list'.format(pip_version, 
pip_pkg)).replace('\r\n', '').strip()[31:]
                 if dep == '' or dep == pip_pkg.split("==")[0]:
                     dep = []
                 else:
@@ -401,52 +402,49 @@ def ensure_ciphers():
 
 def install_r_pkg(requisites):
     status = list()
-    error_parser = "ERROR:|error:|Cannot|failed|Please run|requires|Error"
+    error_parser = "ERROR:|error:|Cannot|failed|Please 
run|requires|Error|Skipping"
     try:
         for r_pkg in requisites:
-            if r_pkg[1] == '':
-                r_pkg = pip_pkg[0]
-                if r_pkg == 'sparklyr':
+            name, vers = r_pkg
+            if vers == '':
+                if name == 'sparklyr':
                     run('sudo -i R -e \'install.packages("{0}", 
repos="https://cloud.r-project.org";, dep=TRUE)\' 2>&1 | '
-                        'tee /tmp/tee.tmp; if ! grep -w -E  "({1})" 
/tmp/tee.tmp > /tmp/install_{0}.log; then  echo "" >'
-                        ' /tmp/install_{0}.log;fi'.format(r_pkg, error_parser))
+                        'tee /tmp/tee.tmp; if ! grep -w -E  "({1})" 
/tmp/tee.tmp > /tmp/install_{0}.log; then  echo "" > 
/tmp/install_{0}.log;fi'.format(name, error_parser))
                 else:
                     sudo('R -e \'install.packages("{0}", 
repos="https://cloud.r-project.org";, dep=TRUE)\' 2>&1 | '
-                         'tee /tmp/tee.tmp; if ! grep -w -E  "({1})" 
/tmp/tee.tmp >  /tmp/install_{0}.log; then  echo "" >'
-                         ' /tmp/install_{0}.log;fi'.format(r_pkg, 
error_parser))
+                         'tee /tmp/tee.tmp; if ! grep -w -E  "({1})" 
/tmp/tee.tmp >  /tmp/install_{0}.log; then  echo "" > 
/tmp/install_{0}.log;fi'.format(name, error_parser))
             else:
-                if r_pkg == 'sparklyr':
-                    run('sudo -i R -e \'devtools::install_version("{0}", 
version = "{1}", repos = "http://cran.us.r-project.org";, '
-                        'dep=TRUE)\' 2>&1 | tee /tmp/tee.tmp; if ! grep -w -E  
"({2})" /tmp/tee.tmp > /tmp/install_{0}.log; '
-                        'then  echo "" > 
/tmp/install_{0}.log;fi'.format(r_pkg[0], r_pkg[1], error_parser))
+                if name == 'sparklyr':
+                    run('sudo -i R -e \'devtools::install_version("{0}", 
version = "{1}", repos = "http://cran.us.r-project.org";, dep=TRUE)\' 2>&1 | '
+                        'tee /tmp/tee.tmp; if ! grep -w -E  "({2})" 
/tmp/tee.tmp > /tmp/install_{0}.log; then  echo "" > 
/tmp/install_{0}.log;fi'.format(name, vers, error_parser))
                 else:
-                    sudo('R -e \'devtools::install_version("{0}", version = 
"{1}", repos = "http://cran.us.r-project.org";, '
-                         'dep=TRUE)\' 2>&1 | tee /tmp/tee.tmp; if ! grep -w -E 
 "({2})" /tmp/tee.tmp > /tmp/install_{0}.log; '
-                         'then  echo "" > 
/tmp/install_{0}.log;fi'.format(r_pkg[0], r_pkg[1], args.version))
+                    sudo('R -e \'devtools::install_version("{0}", version = 
"{1}", repos = "http://cran.us.r-project.org";, dep=TRUE)\' 2>&1 | '
+                         'tee /tmp/tee.tmp; if ! grep -w -E  "({2})" 
/tmp/tee.tmp > /tmp/install_{0}.log; then  echo "" > 
/tmp/install_{0}.log;fi'.format(name, vers, error_parser))
             dep = sudo('grep "(NA -> " /tmp/tee.tmp | awk \'{print 
$1}\'').replace('\r\n', ' ')
-            if dep == r_pkg or dep == '':
+            if dep == name or dep == '':
                 dep = []
             else:
                 dep = dep.split(' ')
-            err = sudo('cat /tmp/install_{0}.log'.format(r_pkg)).replace('"', 
"'")
-            sudo('R -e \'installed.packages()[,c(3:4)]\' | if ! grep -w {0} > 
/tmp/install_{0}.list; then  echo "" > /tmp/install_{0}.list;fi'.format(r_pkg))
-            res = sudo('cat /tmp/install_{0}.list'.format(r_pkg))
+            err = sudo('cat /tmp/install_{0}.log'.format(name)).replace('"', 
"'")
+            sudo('R -e \'installed.packages()[,c(3:4)]\' | if ! grep -w {0} > 
/tmp/install_{0}.list; then  echo "" > /tmp/install_{0}.list;fi'.format(name))
+            res = sudo('cat /tmp/install_{0}.list'.format(name))
             if res:
                 ansi_escape = re.compile(r'\x1b[^m]*m')
                 version = ansi_escape.sub('', 
res).split("\r\n")[0].split('"')[1]
-                status.append({"group": "r_pkg", "name": r_pkg, "version": 
version, "status": "installed", "add_pkgs": dep})
+                status.append({"group": "r_pkg", "name": name, "version": 
version, "status": "installed", "add_pkgs": dep})
             else:
                 if 'Error in download_version_url(package, version, repos, 
type) :' in err:
-                    versions = sudo('R -e \'library(versions); 
available.versions("' + r_pkg + '")\' 2>&1 | grep -A 50 '
-                                    '\'date available\' | awk \'{print 
$2}\'').replace('\r\n', ' ')[5:]
-                    if versions == '':
-                        versions = []
-                    else:
-                        versions = versions.split(' ')
-                status.append({"group": "r_pkg", "name": r_pkg, "status": 
"failed", "error_message": err, "available_versions": versions})
+                    sudo('R -e \'install.packages("versions", 
repos="https://cloud.r-project.org";, dep=TRUE)\'')
+                    versions = sudo('R -e \'library(versions); 
available.versions("' + name + '")\' 2>&1 | grep -A 50 '
+                                    '\'date available\' | awk \'{print 
$2}\'').replace('\r\n', ' ')[5:].split(' ')
+                else:
+                    versions = []
+                status.append({"group": "r_pkg", "name": name, "status": 
"failed", "error_message": err, "available_versions": versions})
         return status
-    except:
-        return "Fail to install R packages"
+    except Exception as err:
+        append_result("Failed to install R packages", str(err))
+        print("Failed to install R packages")
+        sys.exit(1)
 
 
 def update_spark_jars(jars_dir='/opt/jars'):


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to