#!/bin/bash
# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

. "$(dirname "$0")/common.sh" || exit 1

# Script must run inside the chroot
assert_inside_chroot "$@"

# Do not run as root
assert_not_root_user

FLAGS_HELP="usage: $(basename $0) [flags]
Updates the host python and associated packages. This script is called as part
of build_packages, so there is typically no need to call this script directly.
"
show_help_if_requested "$@"

# The following options are advanced options, only available to those willing
# to read the source code. They are not shown in help output, since they are
# not needed for the typical developer workflow.
DEFINE_integer jobs -1 \
  "How many packages to build in parallel at maximum."

# Parse command line flags
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"

# Only now can we die on error.  shflags functions leak non-zero error codes,
# so will die prematurely if 'switch_to_strict_mode' is specified before now.
switch_to_strict_mode

EMERGE_CMD="${CHROMITE_BIN}/parallel_emerge"

do_cleanup=${FLAGS_FALSE}
cmds=()

# If we've got multiple versions of python installed, clear them out.
PYTHON_VERSIONS=( $(qlist -ICv -e dev-lang/python | sort -nr) )
if [[ ${#PYTHON_VERSIONS[@]} -gt 1 ]]; then
  info "Cleaning up system python"
  cmds+=(
    # Make sure we have the latest version selected.
    'eselect python update'
    # Unmerge all the older versions.
    "CLEAN_DELAY=0 emerge -Cq ${PYTHON_VERSIONS[*]:1}"
  )
  do_cleanup=${FLAGS_TRUE}
fi

# If the user still has old python modules installed, update them.
PYTHON_VERSIONS=(
  # Filter out the new python-exec package.
  $(ls -d /usr/lib*/python*/ | cut -d/ -f4 | grep -v python-exec | sort -uV)
)
if [[ ${#PYTHON_VERSIONS[@]} -gt 1 ]]; then
  PY_UPDATE_FLAGS=()
  if [[ ${FLAGS_jobs} -ne -1 ]]; then
    PY_UPDATE_FLAGS+=( --jobs=${FLAGS_jobs} )
  fi
  cmds+=(
    "python-updater --package-manager-command ${EMERGE_CMD} -- \
      ${PY_UPDATE_FLAGS[*]}"
  )

  # python-updater does not handle /usr/local, so do it ourselves.
  # We have to run this after python-updater though since these packages
  # might rely on other dev-python stuff in /usr.
  pkgs=( $(qfile -qC /usr/local/lib*/python* | sort -u) )
  if [[ ${#pkgs[@]} -gt 0 ]]; then
    cmds+=( "${EMERGE_CMD} ${PY_UPDATE_FLAGS[*]} ${pkgs[*]}" )
  fi
  old_py_dir=${PYTHON_VERSIONS[0]}
  do_cleanup=${FLAGS_TRUE}
else
  old_py_dir=
fi

if [[ ${do_cleanup} -eq ${FLAGS_TRUE} ]]; then
  cmds+=(
    # Make sure chromite can be found.  We also clean up old chromite paths
    # that might have been accidentally created (make_chroot/etc...).
    'rm -f /usr/lib64/python*/{site-packages/,}chromite'
    'ln -sf /mnt/host/source/chromite \
      /usr/lib64/python$(eselect python show --ABI)/site-packages/chromite'
  )

  if [[ -n ${old_py_dir} ]]; then
    cmds+=(
      # Trim generated pyc files if they've been left behind.
      "find /usr/lib*/${old_py_dir}/ /usr/local/lib*/${old_py_dir}/ \
        -name '*.pyc' -delete 2>/dev/null || :"

      "find /usr/lib*/${old_py_dir}/ /usr/local/lib*/${old_py_dir}/ \
        -depth -type d -delete 2>/dev/null || :"
    )
  fi

  cmds+=(
    # Remove empty dirs if possible.
    'rmdir /usr/local/lib*/python*/site-packages /usr/local/lib*/python*/ \
      /usr/lib*/python*/site-packages /usr/lib*/python*/ 2>/dev/null || :'
  )
fi

sudo_multi "${cmds[@]}"
