You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by lf...@apache.org on 2020/07/09 10:16:41 UTC

[incubator-dlab] 02/03: [DLAB-1748]: made changes to apt and pip installation

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

commit 31a9b8b097f8e6c3ec076b4c1fe82a16791281ba
Author: leonidfrolov <fr...@gmail.com>
AuthorDate: Thu Jul 9 12:47:17 2020 +0300

    [DLAB-1748]: made changes to apt and pip installation
---
 .../src/general/lib/os/debian/notebook_lib.py      | 11 +++++----
 .../src/general/lib/os/fab.py                      | 28 ++++++++++++----------
 2 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py b/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py
index 4d905e6..1ad4975 100644
--- a/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py
+++ b/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py
@@ -366,7 +366,7 @@ def install_nodejs(os_user):
 def install_os_pkg(requisites):
     status = list()
     error_parser = "Could not|No matching|Error:|E:|failed|Requires:"
-    add_pkgs_parser = "The following additional packages will be installed:"
+    new_pkgs_parser = "The following NEW packages will be installed:"
     try:
         print("Updating repositories and installing requested tools: {}".format(requisites))
         manage_pkg('update', 'remote', '')
@@ -378,13 +378,16 @@ def install_os_pkg(requisites):
             sudo('DEBIAN_FRONTEND=noninteractive apt-get -y install {0} 2>&1 > /tmp/os_install_{0}.log'.format(os_pkg))
             sudo('cat /tmp/os_install_{0}.log | if ! grep -w -E "({1})" /tmp/os_install_{0}.log > '
                  '/tmp/os_install_{0}_err.log; then echo "" > /tmp/os_install_{0}_err.log;fi'.format(os_pkg, error_parser))
-            sudo('cat /tmp/os_install_{0}.log | if ! grep -w -E -A 10 "({1})" /tmp/os_install_{0}.log > '
-                 '/tmp/os_install_{0}_dep.log; then echo "" > /tmp/os_install_{0}_dep.log;fi'.format(os_pkg, add_pkgs_parser))
+            sudo('cat /tmp/os_install_{0}.log | if ! grep -w -E -A 20 "({1})" /tmp/os_install_{0}.log > '
+                 '/tmp/os_install_{0}_dep.log; then echo "" > /tmp/os_install_{0}_dep.log;fi'.format(os_pkg, new_pkgs_parser))
             err = sudo('cat /tmp/os_install_{}_err.log'.format(os_pkg)).replace('"', "'")
             dep = sudo('cat /tmp/os_install_{}_dep.log'.format(os_pkg))
-            dep = dep[len(add_pkgs_parser):dep.find("Suggested packages:")].replace('\r', '').replace('\n', '').replace('  ', ' ').strip().split(' ')
+            dep = dep[len(new_pkgs_parser) : dep.find(" upgraded, ") -1].replace('\r', '')\
+                .replace('\n', '').replace('  ', ' ').replace(os_pkg.split("=")[0], '').strip()
             if dep == '':
                 dep = "none"
+            else:
+                dep.split(' ')
             sudo('apt list --installed | if ! grep {0}/ > /tmp/os_install_{1}.list; then  echo "" > /tmp/os_install_{1}.list;fi'.format(os_pkg.split("=")[0], os_pkg))
             res = sudo('cat /tmp/os_install_{}.list'.format(os_pkg))
             if res:
diff --git a/infrastructure-provisioning/src/general/lib/os/fab.py b/infrastructure-provisioning/src/general/lib/os/fab.py
index 2af2cc4..18f3d1f 100644
--- a/infrastructure-provisioning/src/general/lib/os/fab.py
+++ b/infrastructure-provisioning/src/general/lib/os/fab.py
@@ -72,13 +72,11 @@ def install_pip_pkg(requisites, pip_version, lib_group):
             res = sudo('cat /tmp/{0}install_{1}.list'.format(pip_version, pip_pkg))
             changed_pip_pkg = False
             if res == '':
-                changed_pip_pkg = pip_pkg.split("=")[0].replace("_", "-").split('-')
+                changed_pip_pkg = pip_pkg.split("==")[0].replace("_", "-").split('-')
                 changed_pip_pkg = changed_pip_pkg[0]
-                sudo(
-                    '{0} freeze | if ! grep -w -i {1} > /tmp/{0}install_{1}.list; then  echo "" > /tmp/{0}install_{1}.list;fi'.format(
-                        pip_version, changed_pip_pkg))
-                res = sudo(
-                    'cat /tmp/{0}install_{1}.list'.format(pip_version, changed_pip_pkg))
+                sudo('{0} freeze | if ! grep -w -i {1} > /tmp/{0}install_{1}.list; then  echo "" > '
+                     '/tmp/{0}install_{1}.list;fi'.format(pip_version, changed_pip_pkg))
+                res = sudo('cat /tmp/{0}install_{1}.list'.format(pip_version, changed_pip_pkg))
             if res:
                 res = res.lower()
                 ansi_escape = re.compile(r'\x1b[^m]*m')
@@ -87,22 +85,26 @@ def install_pip_pkg(requisites, pip_version, lib_group):
                     version = [i for i in ver if changed_pip_pkg.lower() in i][0].split('==')[1]
                 else:
                     version = \
-                    [i for i in ver if pip_pkg.split("=")[0].lower() in i][0].split(
+                    [i for i in ver if pip_pkg.split("==")[0].lower() in i][0].split(
                         '==')[1]
-                dep = sudo('{0} show {1} 2>&1 | grep "Requires: "'.format(pip_version, pip_pkg.split("=")[0])).replace(
-                    '\r', '').replace('\n', '').replace('Requires: ', '').strip().split(' ')
+                dep = sudo('{0} show {1} 2>&1 | grep "Requires: "'.format(pip_version, pip_pkg.split("==")[0])).replace(
+                    '\r', '').replace('\n', '').replace('Requires:', '').strip()
                 if dep == '':
                     dep = "none"
-                status.append({"group": "{}".format(lib_group), "name": pip_pkg.split("=")[0], "version": version, "status": "installed", "add_pkgs": dep})
+                else:
+                    dep.split(' ')
+                status.append({"group": "{}".format(lib_group), "name": pip_pkg.split("==")[0], "version": version, "status": "installed", "add_pkgs": dep})
             else:
                 if "Could not find a version that satisfies the requirement" in err:
-                    versions = [err[err.find("(from versions: ") + 16: err.find(")\r\n")]].split(' ')
+                    versions = err[err.find("(from versions: ") + 16: err.find(")\r\n")]
                     if versions == '':
                         versions = "none"
-                    status.append({"group": "{}".format(lib_group), "name": pip_pkg.split("=")[0], "status": "failed",
+                    else:
+                        versions.split(' ')
+                    status.append({"group": "{}".format(lib_group), "name": pip_pkg.split("==")[0], "status": "failed",
                                    "error_message": err, "available_versions": versions})
                 else:
-                    status.append({"group": "{}".format(lib_group), "name": pip_pkg.split("=")[0], "status": "failed", "error_message": err})
+                    status.append({"group": "{}".format(lib_group), "name": pip_pkg.split("==")[0], "status": "failed", "error_message": err})
         return status
     except Exception as err:
         append_result("Failed to install {} packages".format(pip_version), str(err))


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org