# Maintainer: Laurent Carlier <lordheavym@gmail.com>
# Contributor: Konsta Kokkinen <kray@tsundere.fi>

pkgname=('minetest' 'minetest-server' 'minetest-common')
pkgver=5.0.1
pkgrel=1
arch=('x86_64')
url='http://minetest.net/'
license=('GPL')
makedepends=('sqlite' 'freetype2' 'leveldb' 'openal' 'libvorbis' 'curl' 'irrlicht'
             'hicolor-icon-theme' 'cmake' 'hiredis' 'luajit')
source=($pkgname-$pkgver.tar.gz::https://github.com/minetest/minetest/archive/${pkgver}.tar.gz
        $pkgname-data-$pkgver.tar.gz::https://github.com/minetest/minetest_game/archive/${pkgver}.tar.gz
        minetest.service
        sysusers.d
        tmpfiles.d)
sha256sums=('aa771cf178ad1b436d5723e5d6dd24e42b5d56f1cfe9c930f6426b7f24bb1635'
            '965d2cf3ac8c822bc9e60fb8f508182fb2f24dde46f46b000caf225ebe2ec519'
            '2d80b4ff925770bdf3d857debb2ad11227cc9b022eb01a358b18f8d5f2641a5c'
            'e4166d639b35efda2cd72269208184ab1e72c54541344cd202ff2005c90b9433'
            'd9405cf7cd0a657ef06082570783383a1f527fbc0bd122ea506d4fbe26950d4a')

prepare() {
  install -d build-{client,server}
}

build() {
  cd "$srcdir"/build-client
  cmake ../$pkgname-$pkgver \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DBUILD_CLIENT=1 \
    -DENABLE_GETTEXT=1 \
    -DENABLE_FREETYPE=1 \
    -DENABLE_LEVELDB=0 \
    -DENABLE_REDIS=0
  make

  cd "$srcdir"/build-server
  cmake ../$pkgname-$pkgver \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DBUILD_CLIENT=0 \
    -DBUILD_SERVER=1 \
    -DENABLE_LEVELDB=1 \
    -DENABLE_REDIS=1
  make
}

package_minetest() {
  pkgdesc='Multiplayer infinite-world block sandbox game'
  depends=('minetest-common' 'irrlicht' 'curl' 'libvorbis' 'sqlite'
           'openal' 'hicolor-icon-theme' 'desktop-file-utils' 'xdg-utils'
           'freetype2' 'luajit')

  cd build-client
  make DESTDIR="$pkgdir" install
  cp -r locale "$pkgdir"/usr/share/

  rm -rf "$pkgdir"/usr/share/{minetest,doc}
  rm "$pkgdir"/usr/share/man/man6/minetestserver.6
}

package_minetest-server() {
  pkgdesc='Server of infinite-world block sandbox game'
  depends=('minetest-common' 'leveldb' 'curl' 'sqlite' 'hiredis' 'luajit')

  cd build-server
  make DESTDIR="$pkgdir" install
  install -d  "$pkgdir"/etc/minetest
  install -Dm644 ../minetest.service \
    "$pkgdir"/usr/lib/systemd/system/minetest@.service

  rm -rf "$pkgdir"/usr/share/{minetest,metainfo,appdata,applications,icons,doc}
  mv "$pkgdir"/usr/share/man/man6/minetest.6 "$pkgdir"/usr/share/man/man6/minetestserver.6

  install -Dm644 ${srcdir}/tmpfiles.d ${pkgdir}/usr/lib/tmpfiles.d/minetest-server.conf
  install -Dm644 ${srcdir}/sysusers.d ${pkgdir}/usr/lib/sysusers.d/minetest-server.conf
}

package_minetest-common() {
  pkgdesc='Common data files for minetest and minetest-server'

  cd $pkgbase-$pkgver
  install -d "$pkgdir"/usr/share/minetest

  cp -r games builtin client fonts textures "$pkgdir"/usr/share/minetest/
  cp -r "$srcdir"/minetest_game-$pkgver "$pkgdir"/usr/share/minetest/games/minetest
  rm "$pkgdir"/usr/share/minetest/games/minetest/.gitignore

  for file in doc/{fst_api,lua_api,menu_lua_api,protocol,world_format}.txt; do
    install -Dm644 $file "$pkgdir"/usr/share/minetest/doc/$(basename $file)
  done
}
