# Maintainer: Levente Polyak <anthraxx[at]archlinux[dot]org>
# Maintainer: Morten Linderud <foxboron@archlinux.org>

# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
#  - arch/host/flags for arm, armv6h, armv7h, and aarch64
#  - pacman.conf: architecture=arm/armv6h/armv7h/aarch64, added our aur and alarm repos
#  - makepkg.conf: adjusted C/CXX/LDFLAGS, drop -z,now for armv5
#  - patch to sync filesystem after install/remove
#  - reverts to allow scriplet input on stdin
#  - patch to fix application/gzip change in file 5.37

pkgname=pacman
pkgver=6.0.2
pkgrel=8
pkgdesc="A library-based package manager with dependency support"
arch=('x86_64')
url="https://www.archlinux.org/pacman/"
license=('GPL')
depends=('bash' 'glibc' 'libarchive' 'curl' 'gpgme' 'pacman-mirrorlist'
         'gettext' 'gawk' 'coreutils' 'gnupg' 'grep')
makedepends=('meson' 'asciidoc' 'doxygen')
checkdepends=('python' 'fakechroot')
optdepends=('perl-locale-gettext: translation support in makepkg-template')
provides=('libalpm.so')
backup=(etc/pacman.conf
        etc/makepkg.conf)
options=('strip')
validpgpkeys=('6645B0A8C7005E78DB1D7864F99FFE0FEAE999BD'  # Allan McRae <allan@archlinux.org>
              'B8151B117037781095514CA7BBDFFC92306B1121') # Andrew Gregory (pacman) <andrew@archlinux.org>
source=(https://sources.archlinux.org/other/pacman/$pkgname-$pkgver.tar.xz{,.sig}
        pacman-always-create-directories-from-debugedit.patch::https://gitlab.archlinux.org/pacman/pacman/-/commit/efd0c24c07b86be014a4edb5a8ece021b87e3900.patch
        pacman-always-create-directories-from-debugedit-fixup.patch::https://gitlab.archlinux.org/pacman/pacman/-/commit/86981383a2f4380bda26311831be94cdc743649b.patch
        pacman-fix-unique-source-paths.patch::https://gitlab.archlinux.org/pacman/pacman/-/commit/478af273dfe24ded197ec54ae977ddc3719d74a0.patch
        pacman-strip-include-o-files-similar-to-kernel-modules.patch::https://gitlab.archlinux.org/pacman/pacman/-/commit/de11824527ec4e2561e161ac40a5714ec943543c.patch
        pacman-fix-compatibility-with-bash-5.2-patsub_replacement.patch::https://gitlab.archlinux.org/pacman/pacman/-/commit/0e938f188692c710be36f9dd9ea7b94381aed1b4.patch
        pacman-fix-order-of-fakechroot-fakeroot-nesting.patch::https://gitlab.archlinux.org/pacman/pacman/-/commit/05f283b5ad8f5b8f995076e93a27c8772076f872.patch
        0001-Sychronize-filesystem.patch
        0002-Revert-close-stdin-before-running-install-scripts.patch
        0003-Revert-alpm_run_chroot-always-connect-parent2child-p.patch
        pacman.conf
        makepkg.conf)
sha256sums=('7d8e3e8c5121aec0965df71f59bedf46052c6cf14f96365c4411ec3de0a4c1a5'
            'SKIP'
            '6fed94326b9ecfbb438ab17a4576b5e9d52ecc0f4574f29d46adfde3886dee03'
            'd2bc104788290e3de829a232590b66ad745cf5b4762a01acc1191ebf70fef114'
            'f3d4f39ef24e312f610cbb3439fb02bc6b8829e37bcf1a50ae50cd0a69bde5d0'
            'd87d0c9957c613fda272553bee58140349d151ae399f346ddaf6d75ee5916312'
            '8641d514ef4cae9e4d1867aadf4b9c850a9e8dc9792c6c559f9d2a0e1713a5a1'
            'b11f62d4bd9557e9d3e7456bc95f63e9eabab5ecee1368f4a14a84bc94b1c8d1'
            'ba91c92fbae492be13df12dd34e22b00e1a63c706fdd328e8d9a907c5d517e71'
            'bb8d53dd1136c314aacbc275f36936112d04ec6c0ebc882eefe6e46bd86e6db5'
            '11b3ed535d0cb981ce5927ed9b308615e4f6b6a8e2aef6e2e15a59df956bfdab'
            '6456e1ad704565d1e401b2b94fcfd1c75be290aa92ac9437343625209e7793ab'
            'c482f4cae70219ac4922e827ed3a4bd76df57774285f55a1cb67e95abe177ebc')

prepare() {
  cd "$pkgname-$pkgver"
  # we backport way too often in pacman
  # lets at least make it more convenient
  local src
  for src in "${source[@]}"; do
    src="${src%%::*}"
    src="${src##*/}"
    [[ $src = *.patch ]] || continue
    msg2 "Applying patch $src..."
    patch -Np1 < "../$src"
  done
}

build() {
  cd "$pkgname-$pkgver"

  meson --prefix=/usr \
        --buildtype=plain \
        -Ddoc=enabled \
        -Ddoxygen=enabled \
        -Dscriptlet-shell=/usr/bin/bash \
        -Dldconfig=/usr/bin/ldconfig \
        build

  meson compile -C build
}

check() {
  cd "$pkgname-$pkgver"

  meson test -C build
}

package() {
  cd "$pkgname-$pkgver"

  DESTDIR="$pkgdir" meson install -C build

  # install Arch specific stuff
  install -dm755 "$pkgdir/etc"
  install -m644 "$srcdir/pacman.conf" "$pkgdir/etc"

  case $CARCH in
    armv7h)
      mycarch="armv7h"
      mychost="armv7l-unknown-linux-gnueabihf"
      myflags="-march=armv7-a -mfloat-abi=hard -mfpu=neon "
      ;;
    aarch64)
      mycarch="aarch64"
      mychost="aarch64-unknown-linux-gnu"
      myflags="-march=armv8-a "
      ;;
  esac

  install -m644 "$srcdir/makepkg.conf" "$pkgdir/etc"
  sed -i "$pkgdir/etc/makepkg.conf" \
    -e "s|@CARCH[@]|$mycarch|g" \
    -e "s|@CHOST[@]|$mychost|g" \
    -e "s|@CARCHFLAGS[@]|$myflags|g"
  sed -i $pkgdir/etc/pacman.conf -e "s|@CARCH[@]|$mycarch|g"
  if [[ $CARCH == "arm" ]]; then
    sed -i 's/,-z,now//' "$pkgdir/etc/makepkg.conf"
  fi
}

# vim: set ts=2 sw=2 et: