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 27eeda8 [DLAB-1940]: changed debian package and r installation new f96b95a Merge branch 'DLAB-1748' of https://github.com/apache/incubator-dlab into DLAB-1748 27eeda8 is described below commit 27eeda831cf8b722cefc6071e4e1487d1c614a72 Author: leonidfrolov <frolovl...@gmail.com> AuthorDate: Tue Jul 14 18:45:05 2020 +0300 [DLAB-1940]: changed debian package and r installation --- .../src/general/lib/os/debian/notebook_lib.py | 35 ++++++++++++---------- .../src/general/lib/os/fab.py | 16 +++++----- 2 files changed, 28 insertions(+), 23 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 ea971e2..1d3020c 100644 --- a/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py +++ b/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py @@ -371,23 +371,27 @@ def install_os_pkg(requisites): print("Updating repositories and installing requested tools: {}".format(requisites)) manage_pkg('update', 'remote', '') for os_pkg in requisites: - if os_pkg[1] != '': + if os_pkg[1] != '' and os_pkg[1] !='N/A': os_pkg = "{}={}".format(os_pkg[0], os_pkg[1]) else: os_pkg = os_pkg[0] - 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 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(new_pkgs_parser) : dep.find(" upgraded, ") -1].replace('\r', '')\ - .replace('\n', '').replace(' ', ' ').replace(' {} '.format(os_pkg.split("=")[0]), ' ').strip() - if dep == '' or dep == os_pkg.split("=")[0]: + sudo('DEBIAN_FRONTEND=noninteractive apt-get -y install {0} 2>&1 | tee /tmp/tee.tmp; if ! grep -w -E "({1})" /tmp/tee.tmp > ' + '/tmp/os_install_{0}.log; then echo "" > /tmp/os_install_{0}.log;fi'.format(os_pkg, error_parser)) + err = sudo('cat /tmp/os_install_{}.log'.format(os_pkg)).replace('"', "'") + sudo('cat /tmp/tee.tmp | if ! grep -w -E -A 20 "({1})" /tmp/tee.tmp > ' + '/tmp/os_install_{0}.log; then echo "" > /tmp/os_install_{0}.log;fi'.format(os_pkg, new_pkgs_parser)) + dep = sudo('cat /tmp/os_install_{}.log'.format(os_pkg)) + if err == '': + dep = dep[len(new_pkgs_parser): dep.find(" upgraded, ") - 1].replace('\r', '') \ + .replace('\n', '').replace(' ', ' ').replace(' {} '.format(os_pkg.split("=")[0]), ' ').strip().split(' ') + if dep == '' or dep == os_pkg.split("=")[0]: + dep = [] + else: dep = [] + if 'E: Version' in err and 'was not found' in err: + versions = sudo ('apt-cache policy {} | grep 500 | grep -v Packages'.format(os_pkg.split("=")[0])).replace('\r\n', '').replace(' 500', '').replace(' ', ' ').strip().split(' ') else: - dep = dep.split(' ') + versions = [] 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: @@ -396,12 +400,13 @@ def install_os_pkg(requisites): version = [i for i in ver if os_pkg.split("=")[0] in i][0].split(' ')[1] status.append({"group": "os_pkg", "name": os_pkg.split("=")[0], "version": version, "status": "installed", "add_pkgs": dep}) else: - status.append({"group": "os_pkg", "name": os_pkg.split("=")[0], "status": "failed", "error_message": err, "available_versions": []}) + status.append({"group": "os_pkg", "name": os_pkg.split("=")[0], "status": "failed", "error_message": err, "available_versions": versions}) sudo('unattended-upgrades -v') sudo('export LC_ALL=C') return status - except: - return "Fail to install OS packages" + except Exception as err: + append_result("Failed to install OS packages", str(err)) + sys.exit(1) @backoff.on_exception(backoff.expo, SystemExit, max_tries=10) diff --git a/infrastructure-provisioning/src/general/lib/os/fab.py b/infrastructure-provisioning/src/general/lib/os/fab.py index 595d427..ea98454 100644 --- a/infrastructure-provisioning/src/general/lib/os/fab.py +++ b/infrastructure-provisioning/src/general/lib/os/fab.py @@ -406,20 +406,20 @@ def install_r_pkg(requisites): try: for r_pkg in requisites: 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(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(name, error_parser)) - else: + if vers != '' and vers !='N/A': 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(name, vers, error_parser)) + else: + 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(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(name, error_parser)) dep = sudo('grep "(NA -> " /tmp/tee.tmp | awk \'{print $1}\'').replace('\r\n', ' ') if dep == name or dep == '': dep = [] --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org