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

set -exu

if [ $# -lt 2 ]; then
  echo "Usage: $0 VERSION rc"
  echo "       $0 VERSION release"
  echo "       $0 VERSION local"
  echo " e.g.: $0 0.13.0 rc                # Verify 0.13.0 RC"
  echo " e.g.: $0 0.13.0 release           # Verify 0.13.0"
  echo " e.g.: $0 0.13.0-dev20210203 local # Verify 0.13.0-dev20210203 on local"
  exit 1
fi

VERSION="$1"
TYPE="$2"

SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TOP_SOURCE_DIR="${SOURCE_DIR}/../.."
local_prefix="${TOP_SOURCE_DIR}/dev/tasks/linux-packages"


echo "::group::Prepare repository"

export DEBIAN_FRONTEND=noninteractive

retry()
{
  local n_retries=0
  local max_n_retries=3
  while ! "$@"; do
    n_retries=$((n_retries + 1))
    if [ ${n_retries} -eq ${max_n_retries} ]; then
      echo "Failed: $@"
      return 1
    fi
    echo "Retry: $@"
  done
}

APT_INSTALL="retry apt install -y -V --no-install-recommends"

apt update
${APT_INSTALL} \
  base-files \
  ca-certificates \
  curl \
  lsb-release

code_name="$(lsb_release --codename --short)"
distribution="$(lsb_release --id --short | tr 'A-Z' 'a-z')"
artifactory_base_url="https://packages.apache.org/artifactory/arrow/${distribution}"
if [ "${TYPE}" = "rc" ]; then
  suffix=${TYPE%-release}
  artifactory_base_url+="-${suffix}"
fi

workaround_missing_packages=()
case "${distribution}-${code_name}" in
  debian-*)
    sed \
      -i"" \
      -e "s/ main$/ main contrib non-free/g" \
      /etc/apt/sources.list.d/debian.sources
    ;;
esac

if [ "${TYPE}" = "local" ]; then
  case "${VERSION}" in
    *-dev*)
      package_version="$(echo "${VERSION}" | sed -E -e 's/-(dev.*)$/~\1/g')"
      ;;
    *-rc*)
      package_version="$(echo "${VERSION}" | sed -e 's/-rc.*$//g')"
      ;;
    *)
      package_version="${VERSION}"
      ;;
  esac
  package_version+="-1"
  apt_source_path="${local_prefix}/apt/repositories"
  apt_source_path+="/${distribution}/pool/${code_name}/main"
  apt_source_path+="/a/apache-arrow-apt-source"
  apt_source_path+="/apache-arrow-apt-source_${package_version}_all.deb"
  find "${local_prefix}/apt/repositories/"
  ${APT_INSTALL} "${apt_source_path}"
else
  package_version="${VERSION}-1"
  apt_source_base_name="apache-arrow-apt-source-latest-${code_name}.deb"
  curl \
    --output "${apt_source_base_name}" \
    "${artifactory_base_url}/${apt_source_base_name}"
  ${APT_INSTALL} "./${apt_source_base_name}"
fi

if [ "${TYPE}" = "local" ]; then
  sed \
    -i.bak \
    -e "s,^URIs: .*$,URIs: file://${local_prefix}/apt/repositories/${distribution},g" \
    /etc/apt/sources.list.d/apache-arrow.sources
  keys="${local_prefix}/KEYS"
  if [ -f "${keys}" ]; then
    gpg \
      --no-default-keyring \
      --keyring /tmp/apache-arrow-apt-source.kbx \
      --import "${keys}"
    gpg \
      --no-default-keyring \
      --keyring /tmp/apache-arrow-apt-source.kbx \
      --armor \
      --export > /usr/share/keyrings/apache-arrow-apt-source.asc
  fi
elif [ "${TYPE}" = "rc" ]; then
  sed \
    -i.bak \
    -e "s,^URIs: \\(.*\\)/,URIs: \\1-${suffix}/,g" \
    /etc/apt/sources.list.d/apache-arrow.sources
fi

apt update

echo "::endgroup::"


echo "::group::Test Apache Arrow C++"
mkdir -p build
${APT_INSTALL} libarrow-dev=${package_version}
required_packages=()
required_packages+=(cmake)
required_packages+=(g++)
required_packages+=(git)
required_packages+=(make)
required_packages+=(pkg-config)
required_packages+=(${workaround_missing_packages[@]})
${APT_INSTALL} ${required_packages[@]}
# cmake version 3.31.6 -> 3.31.6
cmake_version=$(cmake --version | head -n1 | sed -e 's/^cmake version //')
# 3.31.6 -> 3.31
cmake_version_major_minor=${cmake_version%.*}
# 3.31 -> 3
cmake_version_major=${cmake_version_major_minor%.*}
# 3.31 -> 31
cmake_version_minor=${cmake_version_major_minor#*.}
if [ "${cmake_version_major}" -gt "3" ] || \
   [ "${cmake_version_major}" -eq "3" -a "${cmake_version_minor}" -ge "25" ]; then
  cp -a "${TOP_SOURCE_DIR}/cpp/examples/minimal_build" build/
  pushd build/minimal_build
  cmake -S . -B build_shared
  make -C build_shared -j$(nproc)
  build_shared/arrow-example
  cmake -S . -B build_static -DARROW_LINK_SHARED=OFF
  make -C build_static -j$(nproc)
  build_static/arrow-example
  mkdir -p build_pkg_config
  c++ \
    example.cc \
    -o build_pkg_config/arrow-example \
    $(pkg-config --cflags --libs arrow) \
    -std=c++20
  build_pkg_config/arrow-example
  popd
fi
echo "::endgroup::"


echo "::group::Test Apache Arrow GLib"
export G_DEBUG=fatal-warnings

${APT_INSTALL} libarrow-glib-dev=${package_version}
${APT_INSTALL} libarrow-glib-doc=${package_version}

${APT_INSTALL} valac
cp -a "${TOP_SOURCE_DIR}/c_glib/example/vala" build/
pushd build/vala
valac --pkg arrow-glib --pkg posix build.vala
./build
popd


${APT_INSTALL} ruby-dev rubygems-integration
MAKEFLAGS="-j$(nproc)" gem install gobject-introspection
ruby -r gi -e "p GI.load('Arrow')"
echo "::endgroup::"


echo "::group::Test Apache Arrow Dataset"
${APT_INSTALL} libarrow-dataset-glib-dev=${package_version}
${APT_INSTALL} libarrow-dataset-glib-doc=${package_version}
ruby -r gi -e "p GI.load('ArrowDataset')"
echo "::endgroup::"


echo "::group::Test Apache Arrow Flight"
${APT_INSTALL} libarrow-flight-glib-dev=${package_version}
${APT_INSTALL} libarrow-flight-glib-doc=${package_version}
ruby -r gi -e "p GI.load('ArrowFlight')"
echo "::endgroup::"

echo "::group::Test Apache Arrow Flight SQL"
${APT_INSTALL} libarrow-flight-sql-glib-dev=${package_version}
${APT_INSTALL} libarrow-flight-sql-glib-doc=${package_version}
ruby -r gi -e "p GI.load('ArrowFlightSQL')"
echo "::endgroup::"


echo "::group::Test Gandiva"
${APT_INSTALL} libgandiva-glib-dev=${package_version}
${APT_INSTALL} libgandiva-glib-doc=${package_version}
ruby -r gi -e "p GI.load('Gandiva')"
echo "::endgroup::"


echo "::group::Test Apache Parquet"
${APT_INSTALL} libparquet-glib-dev=${package_version}
${APT_INSTALL} libparquet-glib-doc=${package_version}
ruby -r gi -e "p GI.load('Parquet')"
echo "::endgroup::"

echo "::group::Prepare downgrade test"
can_downgrade=false
if [ "${distribution}" = 'debian' ] && [[ "$(cat /etc/debian_version)" =~ /sid$ ]]; then
  # Skip downgrade test on Debian testing.
  # Debian testing and unstable use "${testing_code_name}/"sid" as /etc/debian_version content.
  :
elif [ -f /etc/apt/sources.list.d/apache-arrow.sources.bak ]; then
  mv /etc/apt/sources.list.d/apache-arrow.sources \
     /etc/apt/sources.list.d/apache-arrow-current.sources
  mv /etc/apt/sources.list.d/apache-arrow.sources{.bak,}
  cp -a /usr/share/keyrings/apache-arrow-apt-source{,-current}.asc
  sed \
    -i.bak \
    -e 's/\.asc$/-current.asc/g' \
    /etc/apt/sources.list.d/apache-arrow-current.sources
  if curl \
       --fail \
       --output "apache-arrow-apt-source-latest.deb" \
       https://packages.apache.org/artifactory/arrow/${distribution}/apache-arrow-apt-source-latest-${code_name}.deb; then
    ${APT_INSTALL} --allow-downgrades ./apache-arrow-apt-source-latest.deb
    apt update
    can_downgrade=true
  fi
fi

# 22.0.0.dev54 -> 22
# 22.0.0 -> 22
current_major_version=${package_version%%.*}
# 22 -> 21
previous_major_version=$[current_major_version -1]
# 22 -> 21
previous_package_version="${previous_major_version}.0.0-1"
echo "::endgroup::"

if [ "${can_downgrade}" != "true" ]; then
  exit 0
fi

echo "::group::Downgrade Gandiva"
${APT_INSTALL} --allow-downgrades \
  libarrow-acero-dev=${previous_package_version} \
  libarrow-compute-dev=${previous_package_version} \
  libarrow-dev=${previous_package_version} \
  libarrow-glib-dev=${previous_package_version} \
  libgandiva-dev=${previous_package_version} \
  libgandiva-glib-dev=${previous_package_version} \
  libparquet-dev=${previous_package_version}
echo "::endgroup::"

echo "::group::Downgrade Apache Arrow Flight SQL"
${APT_INSTALL} --allow-downgrades \
  libarrow-acero-dev=${previous_package_version} \
  libarrow-compute-dev=${previous_package_version} \
  libarrow-dev=${previous_package_version} \
  libarrow-flight-dev=${previous_package_version} \
  libarrow-flight-glib-dev=${previous_package_version} \
  libarrow-flight-sql-dev=${previous_package_version} \
  libarrow-flight-sql-glib-dev=${previous_package_version} \
  libarrow-glib-dev=${previous_package_version}
echo "::endgroup::"

echo "::group::Downgrade Apache Arrow Dataset"
${APT_INSTALL} --allow-downgrades \
  libarrow-acero-dev=${previous_package_version} \
  libarrow-compute-dev=${previous_package_version} \
  libarrow-dataset-dev=${previous_package_version} \
  libarrow-dataset-glib-dev=${previous_package_version} \
  libarrow-dev=${previous_package_version} \
  libarrow-glib-dev=${previous_package_version} \
  libparquet-dev=${previous_package_version} \
  libparquet-glib-dev=${previous_package_version}
echo "::endgroup::"


echo "::group::Prepare upgrade test"
mv /etc/apt/sources.list.d/apache-arrow-current.sources \
   /etc/apt/sources.list.d/apache-arrow.sources
apt update
echo "::endgroup::"

echo "::group::Upgrade Gandiva"
${APT_INSTALL} libgandiva-glib-dev=${package_version}
echo "::endgroup::"

echo "::group::Upgrade Apache Arrow Flight SQL"
${APT_INSTALL} libarrow-flight-sql-glib-dev=${package_version}
echo "::endgroup::"

echo "::group::Upgrade Apache Arrow Dataset"
${APT_INSTALL} libarrow-dataset-dev=${package_version}
echo "::endgroup::"
