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