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 <frolovl...@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-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org