# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
# Maintainer: Fabian Bornschein <fabiscafe@archlinux.org>
# Contributor: Ionut Biru <ibiru@archlinux.org>
# Contributor: Michael Kanis <mkanis_at_gmx_dot_de>

pkgbase=mutter-kimiblock
pkgname=(
  mutter-kimiblock
)
pkgver=50.3
pkgrel=11
pkgdesc="Window manager and compositor for GNOME, with patches picked from Kimiblock"
url="https://gitlab.gnome.org/GNOME/mutter"
arch=(x86_64)
provides+=(mutter)
conflicts+=(mutter)
license=(GPL-2.0-or-later)
depends=(
  at-spi2-core
  cairo
  colord
  dconf
  egl-wayland
  fontconfig
  fribidi
  gdk-pixbuf2
  glib2
  glibc
  glycin
  gnome-desktop-4
  gnome-settings-daemon
  graphene
  gsettings-desktop-schemas
  gtk4
  harfbuzz
  iio-sensor-proxy
  lcms2
  libcanberra
  libcolord
  libdisplay-info
  libdrm
  libei
  libgcc
  libgirepository
  libglvnd
  libgudev
  libinput
  libpipewire
  libsysprof-capture
  libwacom
  libx11
  libxau
  libxcb
  libxcomposite
  libxcursor
  libxdamage
  libxext
  libxfixes
  libxi
  libxinerama
  libxkbcommon
  libxrandr
  mesa
  pango
  pipewire
  pixman
  python
  python-argcomplete
  python-dbus
  python-gobject
  startup-notification
  systemd-libs
  wayland
  xorg-xwayland
)
makedepends=(
  bash-completion
  gi-docgen
  git
  glib2-devel
  gobject-introspection
  meson
  python-docutils
  sysprof
  wayland-protocols
)
source=(
  # Mutter tags use SSH signatures which makepkg doesn't understand
  "git+$url.git#tag=${pkgver/[a-z]/.&}"
  "git+https://gitlab.gnome.org/GNOME/gvdb.git#commit=b54bc5da25127ef416858a3ad92e57159ff565b3"

  5137.patch::https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5137.patch
  5131.patch::https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5131.patch
  5133.patch::https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5133.patch

  5157.patch::https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5157.patch
  5159.patch::https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5159.patch
)
b2sums=('5d9b28db0fc461560378adaec354a1cdeb86108541ea8d1bd68c91f1ddc6ebba02d0c5c01d46e808456df8d151251bbcfa25b5aec30be8349ed9e0912c7606d4'
        'f989bc2ceb52aad3c6a23c439df3bbc672bc11d561a247d19971d30cc85ed5d42295de40f8e55b13404ed32aa44f12307c9f5b470f2e288d1c9c8329255c43bf'
        'c22712309a972cb9199faf4a1756e972172cdd452247d8a084781b042673fa8030f69787c0d15966a3043981ea6175b2bcd4b61823731b1ec5dc3b685e814481'
        'eb1a8acf089cf50a2a043cfd421e080b27749df9530bd90e6f8a46368ea1a2dfee6cf7395815103e768bd15c25078d65e8c22b885cf3e60ed1e7b5c98ac9cd66'
        'af82aa14e4ab031622292960bcd1cac96f07e6af4d0da47b7e9e4b8648ac1a4adec18694a6c798a8b1794b6357a11ae8e9ac2fff1eec94e18a176bd6576ac507'
        '2c1394bf2e39cbe4f184d4f359842d1b439d62fcaf8de6d37a07be0a069b97454152f93bb91a187a411f60e15cce1c738702d3cdc33a689ac4c9644eda433b99'
        '6526db9002f4ab64bb8ec09b09dc96ef87aa04cd11a914c6dc625114b224b966f63fc3f8a3afa538e7590f6dedfe8fdd2f7802a839b215f9ebef12e25ae0dcb0')

prepare() {
  cd mutter

	#echo 5131
	#git apply ../5131.patch

	echo 5137
	#git apply ../5137.patch


	#echo 5157
	#git apply ../5157.patch

	echo 5159
	# eglgears drift
	patch -Np1 <../5159.patch
}

build() {
  local meson_options=(
    -D docs=false
    -D installed_tests=false
    -D tests=disabled
  )

  CFLAGS="${CFLAGS/-O2/-O3} -fno-semantic-interposition"
  LDFLAGS+=" -Wl,-Bsymbolic-functions"

  # Inject gvdb
  export MESON_PACKAGE_CACHE_DIR="$srcdir"

  arch-meson mutter build "${meson_options[@]}"
  meson compile -C build
}

_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_mutter-kimiblock() {
  optdepends=(
    'bash-completion: Bash completions for gdctl'
    'mutter-devkit: Mutter SDK, "MDK"'
  )

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

  _pick devkit "$pkgdir"/usr/lib/mutter-devkit
  _pick devkit "$pkgdir"/usr/share/applications/org.gnome.Mutter.Mdk.desktop
  _pick devkit "$pkgdir"/usr/share/icons/hicolor/scalable/apps/org.gnome.Mutter.Mdk.Devel.svg
  _pick devkit "$pkgdir"/usr/share/icons/hicolor/scalable/apps/org.gnome.Mutter.Mdk.svg
  _pick devkit "$pkgdir"/usr/share/icons/hicolor/symbolic/apps/org.gnome.Mutter.Mdk-symbolic.svg

	provides+=($(ls "${pkgdir}/usr/lib" | grep 'libmutter-' | grep '.so'))
}
