Name gtk-update-icon-cache
Description GTK icon cache updater
Version 1:4.20.3-1
Package Base gtk4
Homepage https://www.gtk.org/
Maintainers ['Fabian Bornschein <fabiscafe@archlinux.org>', 'Jan Alexander Steffens (heftig) <heftig@archlinux.org>']
Contributors []
Distro-repo https://gitlab.archlinux.org/archlinux/packaging/packages/gtk4
Sources ['0001-HACK-Don-t-use-objcopy-for-resource-embedding.patch', 'git+https://gitlab.gnome.org/GNOME/gtk.git#tag=4.20.3', 'gtk-update-icon-cache.hook', 'gtk-update-icon-cache.script', 'gtk4-querymodules.hook', 'gtk4-querymodules.script']
Dependencies ['bash', 'gdk-pixbuf2', 'glib2', 'glibc', 'hicolor-icon-theme', 'librsvg']
Optional-Dependencies []
Build-Dependencies ['docbook-xsl', 'gi-docgen', 'git', 'glib2-devel', 'gobject-introspection', 'hicolor-icon-theme', 'libsysprof-capture', 'meson', 'python-docutils', 'python-gobject', 'sassc', 'shaderc', 'vulkan-headers', 'wayland-protocols']
Provides []
Builddate 20-11-2025 13:01:31
Architecture x86_64
Distro-Version
Licenses ['LGPL-2.1-or-later']
Hash 64803c29f8a99c9b362fd88bf318bad2a9f9675c30c195bda0c938e0ff71a78b
# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
# Maintainer: Fabian Bornschein <fabiscafe@archlinux.org>

pkgbase=gtk4
pkgname=(
  gtk4
  gtk4-demos
  gtk4-docs
  gtk-update-icon-cache
)
pkgver=4.20.3
pkgrel=1
epoch=1
pkgdesc="GObject-based multi-platform GUI toolkit"
url="https://www.gtk.org/"
arch=(x86_64)
license=(LGPL-2.1-or-later)
depends=(
  adwaita-fonts
  adwaita-icon-theme
  at-spi2-core
  bash
  cairo
  dconf
  desktop-file-utils
  fontconfig
  fribidi
  gcc-libs
  gdk-pixbuf2
  glib2
  glibc
  graphene
  gst-plugins-bad-libs
  gst-plugins-base-libs
  gstreamer
  gtk-update-icon-cache
  harfbuzz
  iso-codes
  libcloudproviders
  libcolord
  libcups
  libegl
  libepoxy
  libgl
  libjpeg-turbo
  libpng
  librsvg
  libtiff
  libx11
  libxcursor
  libxdamage
  libxext
  libxfixes
  libxi
  libxinerama
  libxkbcommon
  libxrandr
  libxrender
  pango
  shared-mime-info
  tinysparql
  vulkan-icd-loader
  wayland
)
makedepends=(
  docbook-xsl
  gi-docgen
  git
  glib2-devel
  gobject-introspection
  hicolor-icon-theme
  libsysprof-capture
  meson
  python-docutils
  python-gobject
  sassc
  shaderc
  vulkan-headers
  wayland-protocols
)
source=(
  "git+https://gitlab.gnome.org/GNOME/gtk.git#tag=$pkgver"
  gtk-update-icon-cache.{hook,script}
  gtk4-querymodules.{hook,script}
  0001-HACK-Don-t-use-objcopy-for-resource-embedding.patch
)
b2sums=('db5ed382d39b3e82bd6c54a32110883444c8ebd509057f08f109d0195431aa86b78ae6a2cb2a393731ab83aa36908c38340878c324ebabd9eb89bfa74fb1e577'
        '136bdb410c46daf769175e8e8837286576391797a4762b8cf388217e893dd6c5087c5c91c347cbdf7d3e9dcd2c978c2fb275b5af1f3425c9f7979fbc65a81324'
        '6bcd839ef82296d864587e0cc7acc0145bdea8e5235af304747cf3c0e564c2757cc67c0373dc044bec83dccfc57dc899546c2fccea96cff2bba22f09978a3814'
        'dd589bd1ad2b13f0e06f6899776a083f20a1aac24d4308d666ffd0d1cff38457b8257b8366f92e767b4233b3d86b6b54fa50339faf84c4801a824986366dce30'
        '4b90eb8d582509b09aab401313d4399cc139ad21b5dd7d45d79860d0764c7494c60714e0794e09823e51d1894ac032a994f27d79d1499abf24ee6f59bdb0c243'
        '90c1628608b0b9e4e9ab3ba48733509d1f1fa80b22e2911dc9040bf45b6ff02c8a98a197008bf183de7db923cb481174c54b5425bca6a3b19884b092e31e7f4a')

prepare() {
  cd gtk

  # Allow -fcf-protection to work
  # https://gitlab.gnome.org/GNOME/gtk/-/issues/6153
  git apply -3 ../0001-HACK-Don-t-use-objcopy-for-resource-embedding.patch
}

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

  CFLAGS+=" -DG_DISABLE_CAST_CHECKS"
  arch-meson gtk 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_gtk4() {
  optdepends=(
    'evince: Default print preview command'
    'xdg-desktop-portal-gtk: Fallback portals for various APIs'
  )
  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 = Adwaita Sans 11
END

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

  cd "$pkgdir"

  _pick demo usr/bin/gtk4-{demo,demo-application,node-editor,print-editor,widget-factory}
  _pick demo usr/share/applications/org.gtk.{Demo4,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,PrintEditor4,WidgetFactory4,gtk4.NodeEditor}[-.]*
  _pick demo usr/share/man/man1/gtk4-{demo,demo-application,node-editor,widget-factory}.1
  _pick demo usr/share/metainfo/org.gtk.{Demo4,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=(
    cairo
    dconf
    gdk-pixbuf2
    glib2
    glibc
    graphene
    gtk4
    harfbuzz
    hicolor-icon-theme
    libepoxy
    librsvg
    pango
  )
  mv demo/* "$pkgdir"
}

package_gtk4-docs() {
  pkgdesc+=" (documentation)"
  depends=()
  mv docs/* "$pkgdir"
}

package_gtk-update-icon-cache() {
  pkgdesc="GTK icon cache updater"
  depends=(
    bash
    gdk-pixbuf2
    glib2
    glibc
    hicolor-icon-theme
    librsvg
  )

  mv guic/* "$pkgdir"

  ln -sr "$pkgdir"/usr/bin/gtk{4,}-update-icon-cache
  ln -sr "$pkgdir"/usr/share/man/man1/gtk{4,}-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"
}

# vim:set sw=2 sts=-1 et: