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

pkgname=ostree
pkgver=2025.2
pkgrel=2
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
  composefs
  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
  glib2-devel
  gobject-introspection
  gpgme
  gtk-doc
  libarchive
  libsoup3
  libxslt
  mkinitcpio
  openssl-1.1
  python
  systemd
  xz
)
checkdepends=(
  cpio
  elfutils
  gjs
  parallel
  python-yaml
  syslinux
)
provides=(libostree-1.so)
source=(
  git+https://github.com/ostreedev/ostree#tag=v$pkgver
  git+https://github.com/mendsley/bsdiff
  git+https://gitlab.gnome.org/GNOME/libglnx.git
  $pkgname-2023.1-use_fuse3.patch
  ostree-2025.2-fix-compilation.patch
)
b2sums=('fc329e7e14e473b6a5355369ff6f66b8043e77ee5a2af14e01f76079183dc630dddde4927000890e5d4ac4f22a9bc9040fb899f82cff3fc4b41090bd1a09601d'
        'SKIP'
        'SKIP'
        'cfff162120f70995e18ec56454711501391b97456e2a0f34643c9d2a9c2b50b4d76afc2e2fc50ea28e8a773c618215d6cb855b96663f69dc5cc93bc5766f3f28'
        'acbf29badb52ff115e2edfb97a650d43dcf8f1b721ecdbfdcc58a204d7f1a7ed5fc2695117b1e029a210e9076d20d3a43db7859bb2d1ae18f6c8b7fc6e50986e')

prepare() {
  cd $pkgname

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

  # https://github.com/ostreedev/ostree/issues/3399
  git apply ../ostree-2025.2-fix-compilation.patch

  git submodule init
  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
    openssl libcrypto.so
    systemd-libs libsystemd.so
    xz liblzma.so
  )

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