# 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.7.2
pkgname=ruby-rugged
pkgver=1.7.2
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-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=('e179c99c968496f32004bdb799d96cf5d81f7b5dc242f52d2f89b2dd10d56a9bb1e6e7774e07628f146d4bbbf4d95b9530b62cce2d18f6f4a2836b200de4ff09'
            '825737e4a1991fba50ea535f15b0e560ebe76ead752e04aeba36925b944d0da77fe9826a70980a1aa3d0bf9afbedfab79dd92e799c9252931384c89ebec9b012'
            '955a01271852fcae00750f2bc155e7697e033429fa4f47615d7a611eab5e9296038324d0c486942d878ade118872d1f895f580c08e463b854ab405419673824e')
b2sums=('497ad4180e962db1a2e2557852f19fac358981268cb8aa175519e4d26306a7e6ab5518825ca501896ffeeb4fc6024692af3dcc48c1a7549a2d3f288af1a443d7'
        'c27870124c7e63a37794014a802a6fce46c577313f3b6081580f920fa842a65305b5bc56aa6ab02cf87c533d6052afdc37317f96aa1fd67387b07f52415ccbe3'
        '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"
}

build() {
  cd $_name-$pkgver
  export CI_BUILD=true
  export RUGGED_USE_SYSTEM_LIBRARIES=true
  export CMAKE_FLAGS=" --use-system-libraries"
  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"
}
