#!/bin/bash

  #
  # COMMON HELPER FUNCTIONS
  #

  get_packages_folder(){
     # Check the packages folder of a particular python interpreter
     # $1 -> python version (2 or 3)
     packages_folder=$( $1 -c "import site
if hasattr(site, 'getsitepackages'):
    # Normal execution
    import os
    if os.getuid() == 0:
        # Sudo installation
        packages = site.getsitepackages()[0]
        if isinstance(packages, list):
            print(packages[0])
        else:
            print(packages)
    else:
        # User installation
        packages = site.getusersitepackages()
        if isinstance(packages, list):
            print(packages[0])
        else:
            print(packages)
else:
    # Workaround for virtualenv
    from distutils.sysconfig import get_python_lib
    print([get_python_lib()][0])
" )
  }

  unify_installed_versions (){
    # Remove version 3 sources and setup a symbolic link to version 2
    # (the sources are the same for both versions)

    target_dir=$1

    # Copy compiled sources - find recursively and copy __pycache__ folders.
    find "${target_dir}/3" -name '__pycache__' -type d | while read line; do
      relative=${line#"${target_dir}/3"}
      cp -r $line "${target_dir}/2${relative}"
    done

    # Remove and link
    rm -rf "${target_dir}/3/pycompss"
    ln -sfn "${target_dir}/2/pycompss" "${target_dir}/3/pycompss"
  }

  create_symbolic_links (){
    # Setup the appropriate symbolic links to site-packages/dist-packages
    # $1 -> python version (2 or 3)
    # $2 -> origin path
    
    version=$1
    origin=$2
    
    echo "Looking for package where to place the symbolic links."
    get_packages_folder python${version}

    echo "Checking if the folder exists."
    if [ ! -d "${packages_folder}" ]; then
        echo "Could not find folder: ${packages_folder} - Creating it."
        mkdir -p ${packages_folder}
    fi

    # Setup a symbolic link to pycompss
    ln -sfn ${origin}/pycompss ${packages_folder}/pycompss
    if [ $? -ne 0 ]; then
      echo "Failed, to create symbolic link from ${origin}/pycompss to ${packages_folder}/pycompss"
      exit 1
    else
      echo "Created symbolic link from ${origin}/pycompss to ${packages_folder}/pycompss"
    fi

    # Setup a symbolic link to compss module
    ln -sfn ${origin}/compss.* ${packages_folder}/
    if [ $? -ne 0 ]; then
      echo "Failed, to create symbolic link from ${origin}/compss.* to ${packages_folder}/compss.*"
      exit 1
    else
      echo "Created symbolic link from ${origin}/compss.* to ${packages_folder}/compss.*"
    fi

    # Setup a symbolic link to thread affinity module
    ln -sfn ${origin}/thread_affinity.* ${packages_folder}/
    if [ $? -ne 0 ]; then
      echo "Failed, to create symbolic link from ${origin}/thread_affinity.* to ${packages_folder}/thread_affinity.*"
      exit 1
    else
      echo "Created symbolic link from ${origin}/thread_affinity.* to ${packages_folder}/thread_affinity.*"
    fi
  }
