#!/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

CHROMITE_BIN="${GCLIENT_ROOT}/chromite/bin"
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=( $(ls -d /usr/lib*/python*/ | cut -d/ -f4 | 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[@]}"
