# Maintainer: George Rawlinson <grawlinson@archlinux.org>
# Contributor: Felix Yan <felixonmars@archlinux.org>
# Contributor: Mario Finelli <mario at finel dot li>
# Contributor: Artem Vorotnikov <artem at vorotnikov dot me>

_gemname=ffi
pkgname=ruby-$_gemname
pkgver=1.17.2
pkgrel=1
pkgdesc='Ruby FFI'
arch=('x86_64' 'aarch64')
url='https://github.com/ffi/ffi'
license=('BSD-3-Clause' 'MIT')
depends=(
  glibc
  libffi
  ruby
)
makedepends=(
  git
  ruby-bundler
  ruby-rake
  ruby-rake-compiler
  ruby-rdoc
  ruby-rspec
)
checkdepends=(ruby-bigdecimal)
options=('!emptydirs')
source=(
  "$pkgname::git+$url#tag=v$pkgver"
  "github.com-libffi-libffi::git+https://github.com/libffi/libffi"
)
sha512sums=('c48ef741bd54af6b0e95699b9e21c689f0c52182bee9ba8da652c9b0820784b231290dbbd89392da79b17cc30e3073996c9cc7211c00360d9660aaf042f3db75'
            'SKIP')
b2sums=('eac62f5668e1d4f9c51a78bcec3d51efaf89a2f8526aa4119d44ff82bd505e00189802cb14e3f721ab392aee0956c00a045ed05d0b2de8ba14ea4f0d2e08e086'
        'SKIP')

prepare() {
  cd "$pkgname"

  git submodule init
  git config submodule.ext/ffi_c/libffi.url "$srcdir/github.com-libffi-libffi"
  git -c protocol.file.allow=always submodule update
}

build() {
  cd "$pkgname"

  local _gemdir="$(ruby -e'puts Gem.default_dir')"

  rake compile
  gem build --verbose "${_gemname}.gemspec"

  gem install \
    --verbose \
    --ignore-dependencies \
    --no-document \
    --no-user-install \
    --install-dir "tmp_install${_gemdir}" \
    --bindir "tmp_install/usr/bin" \
    "$_gemname-$pkgver.gem"

  # delete unnecessary files & folders
  cd "tmp_install/$_gemdir"
  find . -type f -name 'gem_make.out' -delete -o -name 'mkmf.log' -delete
  rm -vrf cache
  cd "gems/$_gemname-$pkgver"
  rm -vrf Gemfile Rakefile "$_gemname.gemspec" ext rakelib
  find lib/ffi/platform/* -prune -not -name "$CARCH-linux" -exec rm -rf {} +

  # move documentation
  install -vd "$srcdir/$pkgname/tmp_install/usr/share/doc/$pkgname"
  mv -v samples CHANGELOG.md README.md "$srcdir/$pkgname/tmp_install/usr/share/doc/$pkgname"

  # move licenses
  install -vd "$srcdir/$pkgname/tmp_install/usr/share/licenses/$pkgname"
  mv -v LICENSE* COPYING "$srcdir/$pkgname/tmp_install/usr/share/licenses/$pkgname"

  # generate Ruby documentation
  rdoc \
    --format ri \
    --output "$srcdir/$pkgname/tmp_install$_gemdir/doc/$_gemname-$pkgver/ri" \
    ./lib
  # delete unnecessary artifacts
  rm -rf "$srcdir/$pkgname/tmp_install$_gemdir/doc/$_gemname-$pkgver/ri/"{lib,created.rid}
}

check() {
  cd "$pkgname"

  local _gemdir="$(ruby -e'puts Gem.default_dir')"

  GEM_HOME="tmp_install${_gemdir}" rake test
}

package() {
  cd "$pkgname"

  cp --archive --verbose tmp_install/* "${pkgdir}"
}
