# Maintainer: David Runge <dvzrv@archlinux.org>
# Contributor: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
# Contributor: Mirco Tischler <mt-ml at gmx dot de>

pkgname=ostree
pkgver=2024.5
pkgrel=1
pkgdesc="Operating system and container binary deployment and upgrades"
url="https://ostreedev.github.io/ostree/"
arch=(x86_64 aarch64)
license=(LGPL-2.0-or-later)
depends=(
  bash
  fuse3
  gcc-libs
  glibc
  libgpg-error
  libsodium
  sh
  util-linux
  which  # remove after https://github.com/ostreedev/ostree/pull/3154 is merged and released
  zlib
)
makedepends=(
  avahi
  curl
  e2fsprogs
  git
  glib2
  gobject-introspection
  gpgme
  gtk-doc
  libarchive
  libsoup
  libxslt
  mkinitcpio
  openssl
  python
  systemd
  xz
)
checkdepends=(
  cpio
  elfutils
  gjs
  parallel
  python-yaml
)
checkdepends_x86_64=(
  syslinux
)
provides=(libostree-1.so)
source=(
  git+https://github.com/ostreedev/ostree#tag=v$pkgver
  git+https://github.com/containers/composefs.git
  git+https://github.com/mendsley/bsdiff
  git+https://gitlab.gnome.org/GNOME/libglnx.git
  $pkgname-2023.1-use_fuse3.patch
)
b2sums=('25dd16ad1356ec22807242a210f60482d28893250f9c23f861887406e5ba947fc2f41dfba2082dce7cbb3ea675f3b799a58dfda141c5ae8b537bd1393d942f47'
        'SKIP'
        'SKIP'
        'SKIP'
        'cfff162120f70995e18ec56454711501391b97456e2a0f34643c9d2a9c2b50b4d76afc2e2fc50ea28e8a773c618215d6cb855b96663f69dc5cc93bc5766f3f28')
# upstream ticket about chain of trust:
# https://github.com/ostreedev/ostree/issues/2349
validpgpkeys=('1CEC7A9DF7DA85ABEF843DC0A866D7CCAE087291') # Colin Walters <walters@redhat.com>

pkgver() {
  cd $pkgname
  git describe --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/v//g'
}

prepare() {
  cd $pkgname

  # use fusemount3 (fuse3)
  git apply -3 ../$pkgname-2023.1-use_fuse3.patch

  git submodule init
  git submodule set-url composefs "$srcdir/composefs"
  git submodule set-url bsdiff "$srcdir/bsdiff"
  git submodule set-url libglnx "$srcdir/libglnx"
  git -c protocol.file.allow=always submodule update

  NOCONFIGURE=1 ./autogen.sh
}

build() {
  local configure_options=(
    --disable-static
    --enable-experimental-api
    --enable-gtk-doc
    --libexecdir=/usr/lib
    --localstatedir=/var
    --prefix=/usr
    --sbindir=/usr/bin
    --sysconfdir=/etc
    --with-curl
    --with-dracut=yesbutnoconf
    --with-ed25519-libsodium
    --with-grub2-mkconfig-path=/usr/bin/grub-mkconfig
    --with-mkinitcpio
    --with-modern-grub
    --with-openssl
  )

  cd $pkgname
  ./configure "${configure_options[@]}"
  # prevent overlinking due to libtool
  sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
  make
}

check() {
  make check -k -C $pkgname
}

package() {
  depends+=(
    avahi libavahi-client.so libavahi-common.so libavahi-glib.so
    curl libcurl.so
    glib2 libgio-2.0.so libglib-2.0.so libgobject-2.0.so
    gpgme libgpgme.so
    libarchive libarchive.so
    libsoup
    openssl libcrypto.so
    systemd-libs libsystemd.so
    xz liblzma.so
  )

  make DESTDIR="$pkgdir" install -C $pkgname
}
