# Maintainer: Bruno Pagani <archange@archlinux.org>
# Contributor: Guillaume Horel <guillaume.horel@gmail.com>

_pkg=orc
pkgname=apache-${_pkg}
pkgver=2.3.0
pkgrel=1
pkgdesc="Columnar storage for Hadoop workloads."
arch=(x86_64 aarch64)
url="https://orc.apache.org"
license=(Apache-2.0)
depends=(
  abseil-cpp
  glibc
  libgcc
  libstdc++
  lz4
  protobuf
  snappy
  zlib
  zstd
)
makedepends=(cmake git)
checkdepends=(gtest)
source=(
  ${pkgname}::git+https://github.com/apache/orc.git#tag=v${pkgver}
)
sha256sums=('512b8f41f9bbdd789ec4d66d5f9331d93df9af90736ee4f77ea4c252d4967d8b')
validpgpkeys=(F28C9C925C188C35E345614DEDA00CE834F0FC5C  # Dongjoon Hyun (CODE SIGNING KEY) <dongjoon@apache.org>
              AA94E2A8F0A0B7167305C5232D9F6201DECDFA29) # William Hyun (CODE SIGNING KEY) <william@apache.org>

prepare(){
  cd ${pkgname}
  sed -i 's/orc STATIC/orc SHARED/' c++/src/CMakeLists.txt
}

build(){
  # Fix build with protobuf - avoid errors like
  # /usr/bin/ld: /usr/lib/libabsl_log_internal_check_op.so.2508.0.0: error adding symbols: DSO missing from command line
  # Apparently protobuf's cmake targets don't specify all dependencies properly.
  # Solution from https://github.com/protocolbuffers/protobuf/issues/14500#issuecomment-1781292098
  LDFLAGS+=" -Wl,--copy-dt-needed-entries"

  local cmake_options=(
    -B build
    -S ${pkgname}
    -DCMAKE_BUILD_TYPE=None
    -DCMAKE_INSTALL_PREFIX=/usr
    -DSTOP_BUILD_ON_WARNING=OFF
    -DLZ4_HOME=/usr
    -DPROTOBUF_HOME=/usr
    -DSNAPPY_HOME=/usr
    -DZLIB_HOME=/usr
    -DZSTD_HOME=/usr
    -DGTEST_HOME=/usr
    -DORC_PREFER_STATIC_PROTOBUF=OFF
    -DORC_PREFER_STATIC_SNAPPY=OFF
    -DORC_PREFER_STATIC_LZ4=OFF
    -DORC_PREFER_STATIC_ZSTD=OFF
    -DORC_PREFER_STATIC_ZLIB=OFF
    -DBUILD_LIBHDFSPP=OFF
    -DBUILD_JAVA=OFF
    -DINSTALL_VENDORED_LIBS=OFF
    -Wno-dev
  )
  cmake "${cmake_options[@]}"
  cmake --build build
}

check(){
  ctest --test-dir build --output-on-failure
}

package(){
  DESTDIR="${pkgdir}" cmake --install build
}
