# Maintainer: Sven-Hendrik Haase <svenstaro@archlinux.org>
# Contributor: Konstantin Gizdov <arch at kge dot pw>

pkgname=tensorboard
pkgver=2.20.0
pkgrel=2
pkgdesc="TensorFlow's Visualization Toolkit"
url='https://github.com/tensorflow/tensorboard'
arch=('x86_64' 'aarch64')
license=('Apache-2.0')
depends=('python' 'python-werkzeug' 'python-numpy' 'python-bleach' 'python-wheel' 'python-markdown'
         'python-html5lib' 'python-protobuf' 'python-grpcio' 'python-google-auth-oauthlib'
         'python-tensorboard_plugin_wit' 'absl-py')
makedepends=('bazel' 'python-setuptools' 'tree' 'rust' 'python-build' 'python-installer' 'python-wheel' 'git')
optdepends=('python-tensorflow: advanced features for TensorBoard')
_bazelver=6.5.0
source=(
  "${pkgname}-${pkgver}.tar.gz::https://github.com/tensorflow/tensorboard/archive/${pkgver}.tar.gz"
)
source_aarch64=(
  "https://github.com/bazelbuild/bazel/releases/download/${_bazelver}/bazel_nojdk-${_bazelver}-linux-arm64"
)
source_x86_64=(
  "https://github.com/bazelbuild/bazel/releases/download/${_bazelver}/bazel_nojdk-${_bazelver}-linux-x86_64"
)
options=('!lto')
sha512sums=('e95672c726a003c1de970a5f9cbbb9cc21200af64f0b40b211f80652c722a5391250e935a560576f92dfc2512bde65d866afa0f0d5833a3d12500eb12e7f9d2a')
sha512sums_x86_64=('d3789f0ecd354468f2e24d98501041430ae99c173320fa9c3eb02f225c08ed298fd1ad259e4ad9bb70b6ae89d84cd87460aaa720de3486d40b30777a8fe45453')
sha512sums_aarch64=('e79317844d01fe1d64d40c0889b100eeb550f1a874bfd0643cb8c7b4a3862f92d38eb236f3fbde3acdc566bf0310de95592f7d10c56ef7f725d02fff4a565d47')

prepare() {
  # Since tensorboard is currently imcompatible with Bazel 6, we're going to use
  # a local Bazel 5 to fix that. Stupid problems call for stupid solutions.
  install -Dm755 "${srcdir}"/bazel_nojdk-${_bazelver}-linux-${CARCH//aarch64/arm64} bazel/bazel
  export PATH="${srcdir}/bazel:$PATH"
  bazel --version

  cd "$pkgname-$pkgver"

  # Remove fixed version requirements as we usually ship more up-to-date
  # versions than are specified and it tends to work fine anyhow.
  sed -i "s/[<>=].*//" tensorboard/pip_package/requirements.txt
}

build() {
  cd "$pkgname-$pkgver"

  PYTHONWARNINGS=ignore bazel build //tensorboard
  bazel build //tensorboard/pip_package:build_pip_package

  cd tensorboard/data/server
  cargo build --release
  python pip_package/build.py --server-binary target/release/rustboard --out-dir /tmp
  cd "$srcdir/$pkgname-$pkgver"

  mkdir pypackage
  cp -R bazel-bin/tensorboard/pip_package/build_pip_package.runfiles/org_tensorflow_tensorboard/external pypackage
  cp -R bazel-bin/tensorboard/pip_package/build_pip_package.runfiles/org_tensorflow_tensorboard/tensorboard pypackage
  cp tensorboard/pip_package/{README.rst,MANIFEST.in,setup.py,requirements.txt} pypackage
  cp README.md pypackage
  cd pypackage
  python -m build --wheel --no-isolation
}

package() {
  local site_packages=$(python -c "import site; print(site.getsitepackages()[0])")

  cd "$pkgname-$pkgver"

  install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"

  python -m installer --destdir="$pkgdir" /tmp/*.whl

  cd pypackage
  python -m installer --destdir="$pkgdir" dist/*.whl

  rm -r "$pkgdir/$site_packages/external/"
}

# vim:set ts=2 sw=2 et:
