# Maintainer: Bruno Pagani <archange@archlinux.org>
# Maintainer: Filipe Laíns (FFY00) <lains@archlinux.org>
# Maintainer: Frederik Schwan <freswa at archlinux dot org>
# Contributor: Mirco Tischler <mt-ml at gmx dot de>

pkgbase=fwupd
pkgname=(
  fwupd
  fwupd-docs
)
pkgver=2.1.2
pkgrel=1
pkgdesc="Simple daemon to allow session software to update firmware"
arch=(x86_64 aarch64)
url='https://github.com/fwupd/fwupd'
license=(LGPL-2.1-or-later)
depends=(
  bash
  bluez
  curl
  flashrom
  fwupd-efi
  glib2
  glibc
  gnutls
  hicolor-icon-theme
  json-glib
  libarchive
  libcbor
  libdrm
  libgcc
  libjcat
  libmbim
  libmm-glib
  libmnl
  libqmi
  libusb
  libxmlb
  passim
  polkit
  protobuf-c
  python
  shared-mime-info
  sqlite
  systemd-libs
  tpm2-tss
  xz
  zlib
)
makedepends=(
  bash-completion
  gi-docgen
  git
  gnu-efi-libs
  gobject-introspection
  meson
  noto-fonts
  noto-fonts-cjk
  pandoc
  python
  python-cairo
  python-dbus
  python-dbusmock
  python-gobject
  python-pillow
  umockdev
  vala
  valgrind
)
source=(
  "git+https://github.com/fwupd/fwupd.git#tag=${pkgver}?signed"
  fwupd.sysusers
)
sha512sums=('54cd7296a929d349021ded2e6723a882f6a07eda4239e0d9a62158b23448c521f61b0241fb72ae468609bc61027ff947d8ef0b702eb9f48d32c7f34164aeb6e7'
            'f9a99c60786a2b98e0de439a9288af61b2c0716f8339a4c93e2df7108d2a7f9ef8128967dcaa1e12022ffa647945bf5eb3749e38cac83e00a28cbc5b015fbee9')
b2sums=('cefa7a0a5342c9751bd0ea1d19ea2edec040f7715aee29070eed27977e66a2b5bceb10d0bec891d21b4b7e9d3bfae6730c4506dacc8c0f199241b54481fd8f53'
        'c294c6dd324c0ad0d752affdc459d427d34f4bf865def099ac0e25db6b5dfbfcf645ca325e4e7732d1256e75c624ff27094d5c814726909c7e348128a9dd93f9')
validpgpkeys=(163EB50119225DB3DF8F49EA17ACBA8DFA970E17) # Richard Hughes <richard@hughsie.com>

prepare() {
  cd "${srcdir}/${pkgbase}"
  # Fix the VeryBasicTest.test_get_devices not working on non-x86 platforms
  git cherry-pick -n 9ad8b76dc6c5af005a2c712ae3a6f352b51e9eea
}

build() {
  local meson_options=(
    -D docs=enabled
    -D efi_binary=false
    -D supported_build=enabled
    -D systemd_unit_user=fwupd
  )
  if [ "$CARCH" != "x86_64" ]; then
     meson_options+=(-D hsi=disabled)
  fi

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

check() {
  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_fwupd() {
  depends+=(
    libarchive.so
    libblkid.so
    libcbor.so
    libcurl.so
    libjson-glib-1.0.so
    libmm-glib.so
    libpassim.so
    libprotobuf-c.so
    libqmi-glib.so
  )
  optdepends=(
    'python-dbus: Firmware packaging tools'
    'python-gobject: Firmware packaging tools'
    'udisks2: UEFI firmware upgrade support'
  )
  provides=(libfwupd.so)
  backup=(
    'etc/fwupd/fwupd.conf'
    'etc/fwupd/remotes.d/lvfs-testing.conf'
    'etc/fwupd/remotes.d/lvfs.conf'
    'etc/fwupd/remotes.d/vendor-directory.conf'
  )

  meson install -C build --destdir "${pkgdir}"
  # Add fwupd user https://bugs.archlinux.org/task/79653
  install -D -m644 fwupd.sysusers "${pkgdir}"/usr/lib/sysusers.d/fwupd.conf
  # Remove the tests
  rm -r "${pkgdir}"/usr/{lib,share}/installed-tests/
  # Conflicts with the dbxtool package
  mv "${pkgdir}"/usr/bin/{,fwupd-}dbxtool
  mv "${pkgdir}"/usr/share/man/man1/{,fwupd-}dbxtool.1
  # Remove msr module-load config as it is built-in
  rm -f "${pkgdir}"/usr/lib/modules-load.d/fwupd-msr.conf
  # Compile Python scripts
  python -m compileall -d /usr/share "${pkgdir}"/usr/share
  python -O -m compileall -d /usr/share "${pkgdir}"/usr/share

  _pick docs "${pkgdir}"/usr/share/doc/{,fwupd/}{libfwupdplugin,libfwupd}
}

package_fwupd-docs() {
  pkgdesc="Simple daemon to allow session software to update firmware - documentation"
  depends=()
  mv docs/* "${pkgdir}"
}
