anchor.diff:  # This is all in a single "RUN" command so that if anything changes, "apt update" is run to fetch
   # the most current package versions (instead of potentially using old versions cached by docker).
   RUN apt-get clean && apt-get update && $APT_INSTALL gnupg ca-certificates && \
  -  echo 'deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran40/' >> /etc/apt/sources.list && \
  +  echo 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' >> /etc/apt/sources.list && \
     gpg --keyserver keyserver.ubuntu.com --recv-key E298A3A825C0D65DFD57CBB651716619E084DAB9 && \
     gpg -a --export E084DAB9 | apt-key add - && \
     apt-get clean && \
  
positive.code:   apt-get clean && \
    apt-get update && \
    $APT_INSTALL software-properties-common && \
    apt-add-repository -y ppa:brightbox/ruby-ng && \
    apt-get update && \
    # Install openjdk 8.
    $APT_INSTALL openjdk-8-jdk && \
  
negative.code: # limitations under the License.
  #
  
  # Image for building Spark releases. Based on Ubuntu 20.04.
  #
  # Includes:
  # * Java 8
  # * Ivy
  # * Python (3.8.5)
  # * R-base/R-base-dev (4.0.3)
  # * Ruby (2.7.0)
  #
  # You can test it as below:
  #   cd dev/create-release/spark-rm
  #   docker build -t spark-rm --build-arg UID=$UID .
  
  FROM ubuntu:20.04
  
  # For apt to be noninteractive
  ENV DEBIAN_FRONTEND noninteractive
  