# Contributor: Tom Gundersen <teg@jklm.no>
# Contributor: Judd <jvinet@zeroflux.org>

pkgbase=libevent
pkgname=(libevent libevent-docs)
pkgver=2.1.12
pkgrel=5
pkgdesc="Event notification library"
url="https://libevent.org/"
arch=(x86_64 aarch64)
license=(BSD-3-Clause-Modification)
makedepends=(
  cmake
  doxygen
  ninja
  openssl
  python
)
source=(
  https://github.com/libevent/libevent/releases/download/release-$pkgver-stable/libevent-$pkgver-stable.tar.gz{,.asc}
  EVENT__SIZEOF_TIME_T.patch
  libevent-2.1.12-openssl-compat.patch
)
sha256sums=('92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb'
            'SKIP'
            '945fc885b15692721bc7ae52f5774ef4fab8cc0f6108baa8860ab368de8675cf'
            'e41527c55f6dacc6453b13eeeea2664798496896b796abcd2a5c8304c9eb2bae')
validpgpkeys=('B35BF85BF19489D04E28C33C21194EBB165733EA'
              '9E3AC83A27974B84D1B3401DB86086848EF8686D')

prepare() {
  cd libevent-$pkgver-stable

  # Fix Firefox build
  patch -Np1 -i ../EVENT__SIZEOF_TIME_T.patch

  # Fix build with OpenSSL 3.0
  patch -Np1 -i ../libevent-2.1.12-openssl-compat.patch
}

build() {
  local cmake_options=(
    -B build
    -S libevent-$pkgver-stable
    -D CMAKE_BUILD_TYPE=None
    -D CMAKE_INSTALL_PREFIX=/usr
    -D CMAKE_POLICY_VERSION_MINIMUM=3.5
    -D CMAKE_SKIP_INSTALL_RPATH=TRUE
    -D EVENT__DISABLE_REGRESS=OFF
    -D EVENT__DOXYGEN=ON
    -D EVENT__LIBRARY_TYPE=SHARED
    -G Ninja
  )

  cmake "${cmake_options[@]}"
  cmake --build build
}

check() {
  local ctest_options=(
    # Disable flaky tests: https://github.com/libevent/libevent/issues/1407
    # Note: Backporting e.g. https://github.com/libevent/libevent/pull/1555 didn't resolve this!
    --exclude-regex '(regress__timerfd_EPOLL|regress__timerfd_EPOLL_debug|regress__changelist_EPOLL|regress__changelist_EPOLL_debug|regress__timerfd_changelist_EPOLL|regress__timerfd_changelist_EPOLL_debug|regress__SELECT|regress__SELECT_debug|regress__POLL|regress__POLL_debug)'
    --output-on-failure
    --stop-on-failure
    # As in https://github.com/libevent/libevent/pull/917/, disable parallel tests to avoid
    # rate-limit test false positive.
    -j1
  )

  cd build
  ctest "${ctest_options[@]}"
}

package_libevent() {
  provides=(libevent{,_core,_extra,_openssl,_pthreads}-2.1.so)
  depends=(
    glibc
    openssl
  )
  optdepends=('python: event_rpcgen.py')

  DESTDIR="$pkgdir" cmake --install build

  mkdir -p doc/usr/share
  mv {"$pkgdir",doc}/usr/share/doc

  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 libevent-$pkgver-stable/LICENSE
}

package_libevent-docs() {
  pkgdesc+=" (documentation)"

  mv -v doc/* "$pkgdir"
  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 libevent-$pkgver-stable/LICENSE
}
