# Maintainer: David Runge <dvzrv@archlinux.org>
# Contributor: ChaosKid42 <christoph.scholz@gmail.com>
# Contributor: Andy Weidenbaum <archbaum@gmail.com>

_name=rugged
# ideally this should match $pkgver, as package() might fail otherwise. thanks, github
_libgit2_pkgver=1.9.0
pkgname=ruby-rugged
pkgver=1.9.0
pkgrel=1
pkgdesc="A Ruby binding to the libgit2 linkable library"
arch=(x86_64 aarch64)
url="https://github.com/libgit2/rugged"
license=(MIT)
depends=(
  glibc
  ruby
)
makedepends=(
  libgit2
  ruby-rdoc
)
checkdepends=(
  git
  ruby-base64
  ruby-minitest
  ruby-rake
  ruby-rake-compiler
)
options=(!emptydirs)
source=(
  $_name-$pkgver.tar.gz::https://github.com/libgit2/$_name/archive/v$pkgver.tar.gz
  libgit2-$_libgit2_pkgver.tar.gz::https://github.com/libgit2/libgit2/archive/v$_libgit2_pkgver.tar.gz
  $pkgname-1.6.2-remove_broken_libgit2_detection.patch
)
sha512sums=('09efc6fee3deb697c389c632798bb6ed75b8e5ee8cb7865bc92ed6e5ce925f4b3b26e6f46bbb2e7938675cce86e30ad5c255827f464d6329062490b2084dbec6'
            '38547ace676b933a3146c2a00405fc6815063a7af923b9f2c09c536ec717be77d19c513b383939054913ce617d7917c100a5cbd3378d101fcdb5eacd1d14f687'
            '955a01271852fcae00750f2bc155e7697e033429fa4f47615d7a611eab5e9296038324d0c486942d878ade118872d1f895f580c08e463b854ab405419673824e')
b2sums=('8e4bc248450e26ca8d4006d66ff9c8c03e9ef09ad2f06c8e4cc2a552d21f23868a340d0e08d74f32e0b89c67cd0594ec307d3133fcef97dd46538992618a89a9'
        'c81beab379bd78a66d28a48600527979a6c51d33f946df1f996f52ac274cadc88f7afb8c90683f584300941a214bc69389412fb6c9be3b48d22c708b41ca0e1d'
        'bf6339a9e4cf26336ea8c693e0ef115b7e4afb1dc56d8b7a5ee3faff7e07eac4b420c67d694c690e78328780730787eec64e816e4c840391500af29a5f4818b0')

prepare() {
  # remove broken and useless libgit2 "version check":
  # https://github.com/libgit2/rugged/issues/698
  patch -Np1 -d $_name-$pkgver -i ../$pkgname-1.6.2-remove_broken_libgit2_detection.patch

  cd $_name-$pkgver
  # we don't do version pinning
  sed -r 's|~>|>=|g' -i $_name.gemspec
  # source tarball doesn't include vendored libgit2 version, which is only
  # needed for test fixtures (resources): https://github.com/libgit2/rugged/issues/801
  mv -v ../libgit2-$_libgit2_pkgver/* vendor/libgit2
  # remove all tests requiring an internet connection
  rm -rv test/online/*
  # remove deprecated `date` element from gemspec. Removing it makes the package reproducible
  sed --in-place '/s\.date/d' "${_name}.gemspec"
  # disable broken test: https://github.com/libgit2/rugged/issues/978
  sed 's/test_each_line_patch_header/off/' -i test/diff_test.rb
}

build() {
  cd $_name-$pkgver
  export CI_BUILD=true
  export RUGGED_USE_SYSTEM_LIBRARIES=true
  export CMAKE_FLAGS=" --use-system-libraries"
  export CONFIGURE_ARGS="--with-cflags=\"$(ruby -r rbconfig -e 'print RbConfig::CONFIG["CFLAGS"]') -Wno-error=incompatible-pointer-types\""
  rake compile
  rake gem
}

check(){
  cd $_name-$pkgver
  # ConfigTest#test_read_global_config_file fails, if no gitconfig is set for
  # user...
  # https://github.com/libgit2/rugged/issues/432
  git config --global user.name "Foo Bar"
  rake test --trace --verbose TESTOPTS="--verbose"
}

package() {
  local _gemdir="$(gem env gemdir)"
  depends+=(libgit2.so)

  cd $_name-$pkgver
  gem install \
    --local \
    --verbose \
    --ignore-dependencies \
    --no-user-install \
    --install-dir "$pkgdir/$_gemdir" \
    --bindir "$pkgdir/usr/bin" \
    "pkg/$_name-$pkgver.gem"

  # remove unrepreducible files
  rm -frv \
    "$pkgdir/$_gemdir/cache/" \
    "$pkgdir/$_gemdir/gems/$_name-$pkgver/vendor/" \
    "$pkgdir/$_gemdir/doc/$_name-$pkgver/ri/ext/"

  find "$pkgdir/$_gemdir/gems/" \
    -type f \
    \( \
        -iname "*.o" -o \
        -iname "*.c" -o \
        -iname "*.so" -o \
        -iname "*.time" -o \
        -iname "gem.build_complete" -o \
        -iname "Makefile" \
    \) \
    -delete

  find "$pkgdir/$_gemdir/extensions/" \
    -type f \
    \( \
      -iname "mkmf.log" -o \
      -iname "gem_make.out" \
    \) \
    -delete

  install -vDm 644 "$pkgdir/$_gemdir/gems/$_name-$pkgver/LICENSE" -t "$pkgdir/usr/share/licenses/$pkgname/"
  install -vDm 644 README.md CHANGELOG.md -t "$pkgdir/usr/share/doc/$pkgname"
}
