#!/usr/bin/bash
# JOBoRun		: Jwm OpenBox Obarun RUNit
# Maintainer	: Joe Bo Run <joborun@disroot.org>
# PkgSource		: url="https://gittea.disroot.org/joborun-pkg/jobextra/$pkgname"
# Website		: https://pozol.eu
#-----------------------------------------| DESCRIPTION |---------------------------------------

#pkgbase=gtk4
pkgname=(gtk4)
pkgver=4.8.3
pkgrel=01
epoch=1
pkgdesc="GObject-based multi-platform GUI toolkit"
url="https://www.gtk.org/"
arch=(x86_64)
depends=(adwaita-icon-theme cairo cantarell-fonts dconf desktop-file-utils fontconfig
	fribidi gdk-pixbuf2 glib2 graphene gst-plugins-bad-libs harfbuzz iso-codes
	libcloudproviders libcolord libcups libegl libepoxy libgl libjpeg libpng
	librsvg libtiff libx11 libxcursor libxdamage libxext libxfixes libxi
	libxinerama libxkbcommon libxrandr libxrender pango shared-mime-info
	tracker3 wayland)
makedepends=(docbook-xsl gi-docgen git gobject-introspection meson python-docutils 
	python-gobject sassc shaderc wayland-protocols)
checkdepends=(weston)
# options=(debug)  ##  uncomment this for the debug pkg
_commit=793831af8a224545495f0c56a184f4ee28e5cc55  # tags/4.8.3^0
source=("git+https://gitlab.gnome.org/GNOME/gtk.git#commit=$_commit"
	gtk-update-icon-cache.{hook,script}
	gtk4-querymodules.hook
	disable-failing-test.diff)

pkgver() {
  cd gtk
  git describe --tags | sed 's/[^-]*-g/r&/;s/-/+/g'
}

prepare() {
  cd gtk

  # Disable unaligned-offscreen tests, minimal differences (1 gray level, so
  # rounding error?) in a few pixels of anti-aliased text makes them fail
  git apply -3 ../disable-failing-test.diff
}

build() {
  local meson_options=(
    -D broadway-backend=true
    -D cloudproviders=enabled
    -D colord=enabled
    -D gtk_doc=false
    -D man-pages=true
    -D tracker=enabled
  )

  CFLAGS+=" -DG_DISABLE_CAST_CHECKS"
  arch-meson gtk build "${meson_options[@]}"
  meson compile -C build
}

check() (
  export XDG_RUNTIME_DIR="$PWD/runtime-dir" WAYLAND_DISPLAY=wayland-5

  mkdir -p -m 700 "$XDG_RUNTIME_DIR"
  weston --backend=headless-backend.so --socket=$WAYLAND_DISPLAY --idle-time=0 &
  _w=$!

  trap "kill $_w; wait" EXIT

  meson test -C build --print-errorlogs
)

_pick() {
  local p="$1" f d; shift
  for f; do
    d="$srcdir/$p/${f#$pkgdir/}"
    mkdir -p "$(dirname "$d")"
    mv "$f" "$d"
    rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
  done
}

#package_gtk4() {
package() {
  depends+=(gtk-update-icon-cache)
  optdepends=('evince: Default print preview command')
  provides=(libgtk-4.so)

  meson install -C build --destdir "$pkgdir"

  install -Dm644 /dev/stdin "$pkgdir/usr/share/gtk-4.0/settings.ini" <<END
[Settings]
gtk-icon-theme-name = Adwaita
gtk-theme-name = Adwaita
gtk-font-name = Cantarell 13
END

  install -Dt "$pkgdir/usr/share/libalpm/hooks" -m644 gtk4-querymodules.hook

  cd "$pkgdir"

  _pick demo usr/bin/gtk4-{demo,demo-application,icon-browser,node-editor,print-editor,widget-factory}
  _pick demo usr/share/applications/org.gtk.{Demo4,IconBrowser4,PrintEditor4,WidgetFactory4,gtk4.NodeEditor}.desktop
  _pick demo usr/share/glib-2.0/schemas/org.gtk.Demo4.gschema.xml
  _pick demo usr/share/icons/hicolor/*/apps/org.gtk.{Demo4,IconBrowser4,PrintEditor4,WidgetFactory4,gtk4.NodeEditor}[-.]*
  _pick demo usr/share/man/man1/gtk4-{demo,demo-application,icon-browser,node-editor,widget-factory}.1
  _pick demo usr/share/metainfo/org.gtk.{Demo4,IconBrowser4,PrintEditor4,WidgetFactory4,gtk4.NodeEditor}.appdata.xml
#
#  _pick docs usr/share/doc
#
  # Built by GTK 4, shared with GTK 3
  _pick guic usr/bin/gtk4-update-icon-cache
  _pick guic usr/share/man/man1/gtk4-update-icon-cache.1

}

#package_gtk4-demos() {
#  pkgdesc+=" (demo applications)"
#  depends=(gtk4)
#  mv demo/* "$pkgdir"
#}

#package_gtk4-docs() {
#  pkgdesc+=" (documentation)"
#  depends=()
#  mv docs/* "$pkgdir"
#}
#
#package_gtk-update-icon-cache() {
#  pkgdesc="GTK icon cache updater"
#  depends=(gdk-pixbuf2 librsvg hicolor-icon-theme)
#
#  mv guic/* "$pkgdir"
#  ln -s gtk4-update-icon-cache "$pkgdir/usr/bin/gtk-update-icon-cache"
#  ln -s gtk4-update-icon-cache.1 "$pkgdir/usr/share/man/man1/gtk-update-icon-cache.1"
#
#  install -Dt "$pkgdir/usr/share/libalpm/hooks" -m644 gtk-update-icon-cache.hook
#  install -D gtk-update-icon-cache.script "$pkgdir/usr/share/libalpm/scripts/gtk-update-icon-cache"
#}

#---- license gpg-key sha256sums ----

license=(LGPL)

sha256sums=(SKIP
	2d435e3bec8b79b533f00f6d04decb1d7c299c6e89b5b175f20be0459f003fe8  # gtk-update-icon-cache.hook
	f1d3a0dbfd82f7339301abecdbe5f024337919b48bd0e09296bb0e79863b2541  # gtk-update-icon-cache.script
	cd8e607eddd9941f279084e1d15309941423d26cca1897f43524a02e58e48816  # gtk4-querymodules.hook
	657ca310dd85277be6e3e0faf4f3c54a1d66f6b0badf3624089da21653b8bf17) # disable-failing-test.diff


