marcoabreu closed pull request #12223: Revert "CI scripts refinements. Separate 
Py2 and Py3 installs cripts.…
URL: https://github.com/apache/incubator-mxnet/pull/12223
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/ci/build.py b/ci/build.py
index 0a1ad4cf575..a9d6a63537f 100755
--- a/ci/build.py
+++ b/ci/build.py
@@ -43,43 +43,6 @@
 
 CCACHE_MAXSIZE = '500G'
 
-
-
-def retry(ExceptionToCheck, tries=4, delay_s=1, backoff=2):
-    """Retry calling the decorated function using an exponential backoff.
-
-    http://www.saltycrane.com/blog/2009/11/trying-out-retry-decorator-python/
-    original from: http://wiki.python.org/moin/PythonDecoratorLibrary#Retry
-
-    :param ExceptionToCheck: the exception to check. may be a tuple of
-        exceptions to check
-    :type ExceptionToCheck: Exception or tuple
-    :param tries: number of times to try (not retry) before giving up
-    :type tries: int
-    :param delay_s: initial delay between retries in seconds
-    :type delay_s: int
-    :param backoff: backoff multiplier e.g. value of 2 will double the delay
-        each retry
-    :type backoff: int
-    """
-    import time
-    from functools import wraps
-    def decorated_retry(f):
-        @wraps(f)
-        def f_retry(*args, **kwargs):
-            mtries, mdelay = tries, delay_s
-            while mtries > 1:
-                try:
-                    return f(*args, **kwargs)
-                except ExceptionToCheck as e:
-                    logging.warning("Exception: %s, Retrying in %d 
seconds...", str(e), mdelay)
-                    time.sleep(mdelay)
-                    mtries -= 1
-                    mdelay *= backoff
-            return f(*args, **kwargs)
-        return f_retry  # true decorator
-    return decorated_retry
-
 def under_ci() -> bool:
     """:return: True if we run in Jenkins."""
     return 'JOB_NAME' in os.environ
@@ -114,8 +77,9 @@ def build_docker(platform: str, docker_binary: str, 
registry: str, num_retries:
     :param num_retries: Number of retries to build the docker image
     :return: Id of the top level image
     """
+
     tag = get_docker_tag(platform=platform, registry=registry)
-    logging.info("Building docker container tagged '%s' with %s", tag, 
docker_binary)
+    logging.info("Building container tagged '%s' with %s", tag, docker_binary)
     #
     # We add a user with the same group as the executing non-root user so 
files created in the
     # container match permissions of the local user. Same for the group.
@@ -127,24 +91,40 @@ def build_docker(platform: str, docker_binary: str, 
registry: str, num_retries:
     # docker pull see: docker_cache.load_docker_cache
     #
     # This doesn't work with multi head docker files.
-    #
-    cmd = [docker_binary, "build",
-           "-f", get_dockerfile(platform),
-           "--build-arg", "USER_ID={}".format(os.getuid()),
-           "--build-arg", "GROUP_ID={}".format(os.getgid()),
-           "--cache-from", tag,
-           "-t", tag,
-           "docker"]
-
-    @retry(subprocess.CalledProcessError, tries=num_retries)
-    def run_cmd():
+    # 
+
+    for i in range(num_retries):
+        logging.info('%d out of %d tries to build the docker image.', i + 1, 
num_retries)
+
+        cmd = [docker_binary, "build",
+               "-f", get_dockerfile(platform),
+               "--build-arg", "USER_ID={}".format(os.getuid()),
+               "--build-arg", "GROUP_ID={}".format(os.getgid()),
+               "--cache-from", tag,
+               "-t", tag,
+               "docker"]
         logging.info("Running command: '%s'", ' '.join(cmd))
-        check_call(cmd)
+        try:
+            check_call(cmd)
+            # Docker build was successful. Call break to break out of the 
retry mechanism
+            break
+        except subprocess.CalledProcessError as e:
+            saved_exception = e
+            logging.error('Failed to build docker image')
+            # Building the docker image failed. Call continue to trigger the 
retry mechanism
+            continue
+    else:
+        # Num retries exceeded
+        logging.exception('Exception during build of docker image', 
saved_exception)
+        logging.fatal('Failed to build the docker image, aborting...')
+        sys.exit(1)
 
-    run_cmd()
     # Get image id by reading the tag. It's guaranteed (except race condition) 
that the tag exists. Otherwise, the
     # check_call would have failed
-    return _get_local_image_id(docker_binary=docker_binary, docker_tag=tag)
+    image_id = _get_local_image_id(docker_binary=docker_binary, docker_tag=tag)
+    if not image_id:
+        raise FileNotFoundError('Unable to find docker image id matching with 
{}'.format(tag))
+    return image_id
 
 
 def _get_local_image_id(docker_binary, docker_tag):
@@ -156,8 +136,6 @@ def _get_local_image_id(docker_binary, docker_tag):
     cmd = [docker_binary, "images", "-q", docker_tag]
     image_id_b = subprocess.check_output(cmd)
     image_id = image_id_b.decode('utf-8').strip()
-    if not image_id:
-        raise RuntimeError('Unable to find docker image id matching with tag 
{}'.format(tag))
     return image_id
 
 
@@ -208,7 +186,7 @@ def container_run(platform: str,
                '-e', "CCACHE_LOGFILE=/tmp/ccache.log",  # a container-scoped 
log, useful for ccache verification.
                tag]
     runlist.extend(command)
-    cmd = ' \\\n\t'.join(runlist)
+    cmd = '\\\n\t'.join(runlist)
     ret = 0
     if not dry_run and not interactive:
         logging.info("Running %s in container %s", command, tag)
@@ -221,14 +199,14 @@ def container_run(platform: str,
         # -ti can't be after the tag, as is interpreted as a command so hook 
it up after the -u argument
         idx = into_cmd.index('-u') + 2
         into_cmd[idx:idx] = ['-ti']
-        cmd = ' \\\n\t'.join(into_cmd)
+        cmd = '\\\n\t'.join(into_cmd)
         logging.info("Executing:\n%s\n", cmd)
         docker_run_cmd = ' '.join(into_cmd)
         ret = call(into_cmd)
 
     if not dry_run and not interactive and ret != 0:
         logging.error("Running of command in container failed (%s):\n%s\n", 
ret, cmd)
-        logging.error("You can get into the container by adding the -i option 
to this script")
+        logging.error("You can get into the container by adding the -i option")
         raise subprocess.CalledProcessError(ret, cmd)
 
     return docker_run_cmd
@@ -325,6 +303,7 @@ def use_cache():
     command = list(chain(*args.command))
     docker_binary = get_docker_binary(args.nvidiadocker)
     shared_memory_size = args.shared_memory_size
+    num_docker_build_retires = args.docker_build_retries
 
     if args.list:
         list_platforms()
@@ -333,7 +312,7 @@ def use_cache():
         tag = get_docker_tag(platform=platform, registry=args.docker_registry)
         if use_cache():
             load_docker_cache(tag=tag, docker_registry=args.docker_registry)
-        build_docker(platform, docker_binary, registry=args.docker_registry, 
num_retries=args.docker_build_retries)
+        build_docker(platform, docker_binary, registry=args.docker_registry, 
num_retries=num_docker_build_retires)
         if args.build_only:
             logging.warning("Container was just built. Exiting due to 
build-only.")
             return 0
@@ -367,7 +346,7 @@ def use_cache():
             tag = get_docker_tag(platform=platform, 
registry=args.docker_registry)
             if use_cache():
                 load_docker_cache(tag=tag, 
docker_registry=args.docker_registry)
-            build_docker(platform, docker_binary, args.docker_registry, 
num_retries=args.docker_build_retries)
+            build_docker(platform, docker_binary, args.docker_registry, 
num_retries=num_docker_build_retires)
             if args.build_only:
                 continue
             build_platform = "build_{}".format(platform)
diff --git a/ci/docker/Dockerfile.build.android_armv7 
b/ci/docker/Dockerfile.build.android_armv7
old mode 100644
new mode 100755
diff --git a/ci/docker/Dockerfile.build.android_armv8 
b/ci/docker/Dockerfile.build.android_armv8
old mode 100644
new mode 100755
diff --git a/ci/docker/Dockerfile.build.armv6 b/ci/docker/Dockerfile.build.armv6
old mode 100644
new mode 100755
diff --git a/ci/docker/Dockerfile.build.armv7 b/ci/docker/Dockerfile.build.armv7
old mode 100644
new mode 100755
diff --git a/ci/docker/Dockerfile.build.armv8 b/ci/docker/Dockerfile.build.armv8
old mode 100644
new mode 100755
diff --git a/ci/docker/Dockerfile.build.centos7_cpu 
b/ci/docker/Dockerfile.build.centos7_cpu
old mode 100644
new mode 100755
diff --git a/ci/docker/Dockerfile.build.centos7_gpu 
b/ci/docker/Dockerfile.build.centos7_gpu
old mode 100644
new mode 100755
diff --git a/ci/docker/Dockerfile.build.jetson 
b/ci/docker/Dockerfile.build.jetson
old mode 100644
new mode 100755
diff --git a/ci/docker/Dockerfile.build.ubuntu_base_cpu 
b/ci/docker/Dockerfile.build.ubuntu_base_cpu
old mode 100644
new mode 100755
diff --git a/ci/docker/Dockerfile.build.ubuntu_base_gpu 
b/ci/docker/Dockerfile.build.ubuntu_base_gpu
old mode 100644
new mode 100755
diff --git a/ci/docker/Dockerfile.build.ubuntu_blc 
b/ci/docker/Dockerfile.build.ubuntu_blc
old mode 100644
new mode 100755
index 208cba2111f..294740ce139
--- a/ci/docker/Dockerfile.build.ubuntu_blc
+++ b/ci/docker/Dockerfile.build.ubuntu_blc
@@ -24,13 +24,8 @@ WORKDIR /work/deps
 
 COPY install/ubuntu_core.sh /work/
 RUN /work/ubuntu_core.sh
-
-COPY install/ubuntu_python2.sh /work/
-RUN /work/ubuntu_python2.sh
-
-COPY install/ubuntu_python3.sh /work/
-RUN /work/ubuntu_python3.sh
-
+COPY install/ubuntu_python.sh /work/
+RUN /work/ubuntu_python.sh
 COPY install/ubuntu_npm_blc.sh /work/
 RUN /work/ubuntu_npm_blc.sh
 
diff --git a/ci/docker/Dockerfile.build.ubuntu_build_cuda 
b/ci/docker/Dockerfile.build.ubuntu_build_cuda
old mode 100644
new mode 100755
index 19e9265f88d..9ed0cbbe3e5
--- a/ci/docker/Dockerfile.build.ubuntu_build_cuda
+++ b/ci/docker/Dockerfile.build.ubuntu_build_cuda
@@ -27,30 +27,20 @@ WORKDIR /work/deps
 
 COPY install/ubuntu_core.sh /work/
 RUN /work/ubuntu_core.sh
-
 COPY install/deb_ubuntu_ccache.sh /work/
 RUN /work/deb_ubuntu_ccache.sh
-
-COPY install/ubuntu_python2.sh /work/
-RUN /work/ubuntu_python2.sh
-
-COPY install/ubuntu_python3.sh /work/
-RUN /work/ubuntu_python3.sh
-
+COPY install/ubuntu_python.sh /work/
+RUN /work/ubuntu_python.sh
 COPY install/ubuntu_scala.sh /work/
 COPY install/sbt.gpg /work/
 RUN /work/ubuntu_scala.sh
-
 COPY install/ubuntu_r.sh /work/
 COPY install/r.gpg /work/
 RUN /work/ubuntu_r.sh
-
 COPY install/ubuntu_perl.sh /work/
 RUN /work/ubuntu_perl.sh
-
 COPY install/ubuntu_clang.sh /work/
 RUN /work/ubuntu_clang.sh
-
 COPY install/ubuntu_mklml.sh /work/
 RUN /work/ubuntu_mklml.sh
 
diff --git a/ci/docker/Dockerfile.build.ubuntu_cpu 
b/ci/docker/Dockerfile.build.ubuntu_cpu
old mode 100644
new mode 100755
index 08fb04df03e..6751465758c
--- a/ci/docker/Dockerfile.build.ubuntu_cpu
+++ b/ci/docker/Dockerfile.build.ubuntu_cpu
@@ -28,11 +28,8 @@ RUN /work/ubuntu_core.sh
 COPY install/deb_ubuntu_ccache.sh /work/
 RUN /work/deb_ubuntu_ccache.sh
 
-COPY install/ubuntu_python2.sh /work/
-RUN /work/ubuntu_python2.sh
-
-COPY install/ubuntu_python3.sh /work/
-RUN /work/ubuntu_python3.sh
+COPY install/ubuntu_python.sh /work/
+RUN /work/ubuntu_python.sh
 
 COPY install/ubuntu_scala.sh /work/
 COPY install/sbt.gpg /work/
diff --git a/ci/docker/Dockerfile.build.ubuntu_gpu 
b/ci/docker/Dockerfile.build.ubuntu_gpu
old mode 100644
new mode 100755
index d99dafb0bd0..8fcbcbbb967
--- a/ci/docker/Dockerfile.build.ubuntu_gpu
+++ b/ci/docker/Dockerfile.build.ubuntu_gpu
@@ -28,11 +28,8 @@ RUN /work/ubuntu_core.sh
 COPY install/deb_ubuntu_ccache.sh /work/
 RUN /work/deb_ubuntu_ccache.sh
 
-COPY install/ubuntu_python2.sh /work/
-RUN /work/ubuntu_python2.sh
-
-COPY install/ubuntu_python3.sh /work/
-RUN /work/ubuntu_python3.sh
+COPY install/ubuntu_python.sh /work/
+RUN /work/ubuntu_python.sh
 
 COPY install/ubuntu_scala.sh /work/
 COPY install/sbt.gpg /work/
diff --git a/ci/docker/Dockerfile.build.ubuntu_gpu_tensorrt 
b/ci/docker/Dockerfile.build.ubuntu_gpu_tensorrt
old mode 100644
new mode 100755
index 3f0bbc666f2..255da316041
--- a/ci/docker/Dockerfile.build.ubuntu_gpu_tensorrt
+++ b/ci/docker/Dockerfile.build.ubuntu_gpu_tensorrt
@@ -24,16 +24,10 @@ WORKDIR /work/deps
 
 COPY install/ubuntu_core.sh /work/
 RUN /work/ubuntu_core.sh
-
 COPY install/deb_ubuntu_ccache.sh /work/
 RUN /work/deb_ubuntu_ccache.sh
-
-COPY install/ubuntu_python2.sh /work/
-RUN /work/ubuntu_python2.sh
-
-COPY install/ubuntu_python3.sh /work/
-RUN /work/ubuntu_python3.sh
-
+COPY install/ubuntu_python.sh /work/
+RUN /work/ubuntu_python.sh
 COPY install/tensorrt.sh /work
 RUN /work/tensorrt.sh
 
diff --git a/ci/docker/Dockerfile.build.ubuntu_nightly_cpu 
b/ci/docker/Dockerfile.build.ubuntu_nightly_cpu
old mode 100644
new mode 100755
index 834710c4ceb..1b126c18be4
--- a/ci/docker/Dockerfile.build.ubuntu_nightly_cpu
+++ b/ci/docker/Dockerfile.build.ubuntu_nightly_cpu
@@ -28,11 +28,8 @@ RUN /work/ubuntu_core.sh
 COPY install/deb_ubuntu_ccache.sh /work/
 RUN /work/deb_ubuntu_ccache.sh
 
-COPY install/ubuntu_python2.sh /work/
-RUN /work/ubuntu_python2.sh
-
-COPY install/ubuntu_python3.sh /work/
-RUN /work/ubuntu_python3.sh
+COPY install/ubuntu_python.sh /work/
+RUN /work/ubuntu_python.sh
 
 COPY install/ubuntu_scala.sh /work/
 COPY install/sbt.gpg /work/
diff --git a/ci/docker/Dockerfile.build.ubuntu_nightly_gpu 
b/ci/docker/Dockerfile.build.ubuntu_nightly_gpu
old mode 100644
new mode 100755
index fb34307063a..deeed8b0d52
--- a/ci/docker/Dockerfile.build.ubuntu_nightly_gpu
+++ b/ci/docker/Dockerfile.build.ubuntu_nightly_gpu
@@ -28,11 +28,8 @@ RUN /work/ubuntu_core.sh
 COPY install/deb_ubuntu_ccache.sh /work/
 RUN /work/deb_ubuntu_ccache.sh
 
-COPY install/ubuntu_python2.sh /work/
-RUN /work/ubuntu_python2.sh
-
-COPY install/ubuntu_python3.sh /work/
-RUN /work/ubuntu_python3.sh
+COPY install/ubuntu_python.sh /work/
+RUN /work/ubuntu_python.sh
 
 COPY install/ubuntu_scala.sh /work/
 COPY install/sbt.gpg /work/
diff --git a/ci/docker/Dockerfile.build.ubuntu_rat 
b/ci/docker/Dockerfile.build.ubuntu_rat
old mode 100644
new mode 100755
diff --git a/ci/docker/install/ubuntu_python2.sh 
b/ci/docker/install/ubuntu_python.sh
similarity index 84%
rename from ci/docker/install/ubuntu_python2.sh
rename to ci/docker/install/ubuntu_python.sh
index f0526e2d830..e71cac8a389 100755
--- a/ci/docker/install/ubuntu_python2.sh
+++ b/ci/docker/install/ubuntu_python.sh
@@ -22,10 +22,12 @@
 
 set -ex
 # install libraries for mxnet's python package on ubuntu
-apt-get install -y python-dev virtualenv wget
+apt-get install -y python-dev python3-dev virtualenv
 
 # the version of the pip shipped with ubuntu may be too lower, install a 
recent version here
 wget -nv https://bootstrap.pypa.io/get-pip.py
+python3 get-pip.py
 python2 get-pip.py
 
-pip2 install nose cpplint==1.3.0 pylint==1.8.3 'numpy<1.15.0,>=1.8.2' 
nose-timer 'requests<2.19.0,>=2.18.4' h5py==2.8.0rc1 scipy==1.0.1 boto3 mock
+pip2 install nose cpplint==1.3.0 pylint==1.8.3 'numpy<1.15.0,>=1.8.2' 
nose-timer 'requests<2.19.0,>=2.18.4' h5py==2.8.0rc1 scipy==1.0.1 boto3
+pip3 install nose cpplint==1.3.0 pylint==1.8.3 'numpy<1.15.0,>=1.8.2' 
nose-timer 'requests<2.19.0,>=2.18.4' h5py==2.8.0rc1 scipy==1.0.1 boto3
diff --git a/ci/docker/install/ubuntu_python3.sh 
b/ci/docker/install/ubuntu_python3.sh
deleted file mode 100755
index 1dad5a7aa20..00000000000
--- a/ci/docker/install/ubuntu_python3.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env bash
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# build and install are separated so changes to build don't invalidate
-# the whole docker cache for the image
-
-set -ex
-# install libraries for mxnet's python package on ubuntu
-apt-get install -y python3-dev virtualenv wget
-
-# the version of the pip shipped with ubuntu may be too lower, install a 
recent version here
-wget -nv https://bootstrap.pypa.io/get-pip.py
-python3 get-pip.py
-
-pip3 install nose cpplint==1.3.0 pylint==1.8.3 'numpy<1.15.0,>=1.8.2' 
nose-timer 'requests<2.19.0,>=2.18.4' h5py==2.8.0rc1 scipy==1.0.1 boto3 mock
diff --git a/ci/docker/runtime_functions.sh b/ci/docker/runtime_functions.sh
index e4aac8b18bd..a0c4723353d 100755
--- a/ci/docker/runtime_functions.sh
+++ b/ci/docker/runtime_functions.sh
@@ -994,7 +994,6 @@ broken_link_checker() {
     ./tests/nightly/broken_link_checker_test/broken_link_checker.sh
 }
 
-
 ##############################################################
 # MAIN
 #
diff --git a/ci/test_docker_cache.py b/ci/test_docker_cache.py
old mode 100755
new mode 100644


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to