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

#### FIXME: Errata
#### - CHOST needs to be set correctly (to MPKG_HOSTMACHINE)
#### - crossdepends in the base isn't handled correctly (needs substituting properly)
#### - makepkg.conf needs a cross variant

pkgname=crosspacman
pkgver=6.1.0
pkgrel=3
cross=nx
pkgdesc="A library-based package manager with dependency support"
url="https://www.archlinux.org/pacman/"
license=('GPL-2.0-or-later')
ncxfat_makedepends=('binutils' 'glibc' 'libarchive' 'curl' 'gpgme' 'gettext' 'coreutils' 'gnupg' 'gcc' 'pkgconf')
ncxfab_makedepends=('base-devel' 'bash' 'libarchive' 'curl' 'pacman-mirrorlist' 'gettext' 'gawk' 'coreutils'
                    'grep' 'make' 'meson' 'asciidoc' 'doxygen' 'crosspacman' 'sed')
ncxfab_checkdepends=('python' 'fakechroot')
ncxfah_optdepends=('perl-locale-gettext: translation support in makepkg-template')
provides=("pacman=$pkgver" 'libalpm.so')
conflicts=('pacman')
backup=($MPKG_BACKUPETCPATH/pacman.conf
        $MPKG_BACKUPETCPATH/makepkg.conf)
options=('strip')
validpgpkeys=('6645B0A8C7005E78DB1D7864F99FFE0FEAE999BD'  # Allan McRae <allan@archlinux.org>
              'B8151B117037781095514CA7BBDFFC92306B1121') # Andrew Gregory (pacman) <andrew@archlinux.org>
source=(https://gitlab.archlinux.org/pacman/pacman/-/releases/v$pkgver/downloads/pacman-$pkgver.tar.xz{,.sig}
        revertme-makepkg-remove-libdepends-and-libprovides.patch::https://gitlab.archlinux.org/pacman/pacman/-/commit/354a300cd26bb1c7e6551473596be5ecced921de.patch
        "pacman-fix-msg-unknown-key.patch::https://gitlab.archlinux.org/pacman/pacman/-/commit/6bb95c8856437513ee0ab19226bc090d6fd0fb06.patch"
        "pacman-man-gitlab.patch::https://gitlab.archlinux.org/pacman/pacman/-/commit/95f148c2222db608a0d72d5c5577d0c71e7fa199.patch"
        "pacman-make-aligned-titles.patch::https://gitlab.archlinux.org/pacman/pacman/-/commit/5e0496260b7d3f9c9fcf2b1c4899e4dbcc20ff03.patch"
        "pacman-repo-add-parseopts.patch::https://gitlab.archlinux.org/pacman/pacman/-/commit/0571ee82bff0edbd5ffac2228d4e6ac510b9008e.patch"
        "pacman-drop-result-warn.patch::https://gitlab.archlinux.org/pacman/pacman/-/commit/111eed0251238a9d3f90e76d62f2ac01aeccce48.patch"
        "pacman-fix-debugedit.patch::https://gitlab.archlinux.org/pacman/pacman/-/commit/bae9594ac1806ce30f2af1de27c49bb101a00d44.patch"
        pacman.conf
        makepkg.conf.in
        aarch64-cross-file.txt
        
        0001-Add-support-for-a-crossbuild.patch
        0002-Add-support-for-dependencies-for-a-single-type-of-bu.patch
        0003-Fix-sodepends-due-to-variable-name-clash.patch
        0004-Rename-CROSS-CROSSARG-clashes-with-some-packages.patch
        0005-Add-additional-paths-for-cross-native-builds.patch
        0006-Add-support-for-MPKG_VARPATH.patch
        0007-Use-the-correct-cross-strip-to-shrink-down-package-s.patch
        0008-Fix-the-names-of-our-dependency-arrays.patch
        0009-We-need-to-update-the-pkgbuild-schema-for-the-cross.patch
        0010-Make-sure-to-use-the-correct-form-of-objcopy.patch
        0011-Cleanup-foreign-cross-definitions.patch
        0012-Add-a-cross-variable-to-disallow-some-combinations.patch
        0013-Allow-architecture-specific-subpackages.patch
        0014-Add-an-option-to-skip-pkgver.patch
        0015-Add-a-check-only-mode.patch
        0016-Make-print_all_package_names-more-accurate.patch
       )
sha256sums=('5a60ac6e6bf995ba6140c7d038c34448df1f3daa4ae7141d2cad88eeb5f1f9d9'
            'SKIP'
            'b3bce9d662e189e8e49013b818f255d08494a57e13fc264625f852f087d3def2'
            '94c987046c2ff232fa0d395cddc11644840d767806711e04ef34f876a9baf217'
            '0774d7035e34661f74b673d4b0a94be877bdc0158a555b873ec6bd4e2c936377'
            '7bb64910265ce2590f593cdfd302076e49f67a68f8cc792a9aaac572d36fc842'
            '2bbfe40539513ff5775aaf900644c8985ef618f5df9af856b9d571e2501365b0'
            '160515b741aadc876a67f213029f5f62a51ff072ea4aaeb687bbe614035bf72f'
            '1f4e4cc54332e60c9da2bdabf9a80dc11db466535f1a0be298cbf654f0723721'
            '656c4d4cb8cb12adbf178fc8cb2fd25f8c285d6572bbdbb24d865d00e0d5a85a'
            '8ff4ec57b44496652762872096c6f123d88f6e158bb393a8e5f1aa15a4605aa3'
            'c53460d15617cef703c8ba8c66fdebd898efcd5a6a16275d5db843c9c900e323'

            'ad5f906aba7cae65f443bfb905ba1da47041abc1c06339a26009b4d4f69545c5'
            '8f5253b4b504ee873ff5738d460c4e65818c83eb949950be5d41000c49736401'
            '665cce0004a731f586c491c9db772c8c0b25469dcaa918fb8188e4cbf3a4a4cc'
            '6a611f6126220c5b271da3adc42282bfc8affc03d4f2fc9db32f93232044c257'
            'fc0ab6e1dcbeeb2026c3bb5882dce8cba19d0bf74316a0a3d9d9137ad6b48e3a'
            '09b923894e7f42d54ea41e7f0fdb994a171e27089ac1b5052c4d4e6d4346e7a6'
            '3121d878e07d084cb6d5930f77a92d1a9689003fbd2d63be54416557774f7926'
            '81d7caa936054e185ccde45923341f861d829077f13fa3141e30d9fc0835cc7b'
            'c78903727d1d151113161e4ab878c79b0b7e39c5eda2d8268603078a3de9bc78'
            'dcbb995a8ae8b4dbb3a57e42e9446456dcf749e945671864a76f0013500350f3'
            '71534477ffcf374a060086b947a4018eb1a8a0b4bcb9b88258655c034942d822'
            '2b1e50d21934bcdbe741f12ca9a12cb3b59945b015050a01f35e42ec4b5fb979'
            '7251111f60d4d08fab67221007db74e9018069747ef621f458f377e892d4c7a7'
            'b4b7634e47f7f9a03fd426ef7eac2d512f5ba8513b029449b28bdc65ef1a9b00'
            'ba8b18fc1d3275e0ff6a78c07df38a23499e9ad520f194a3d11e40a380027607'
            'fd1093e26f1e19cf9565d88dcf5c69bd149b76759f8f2517f4ef0b938ac88abf')

prepare() {
  cd "pacman-$pkgver"

  # handle patches
  local -a patches
  patches=($(printf '%s\n' "${source[@]}" | grep '.patch'))
  patches=("${patches[@]%%::*}")
  patches=("${patches[@]##*/}")

  if (( ${#patches[@]} != 0 )); then
    for patch in "${patches[@]}"; do
      if [[ $patch =~ revertme-* ]]; then
        msg2 "Reverting patch $patch..."
        patch -RNp1 < "../$patch"
      else
        msg2 "Applying patch $patch..."
        patch -Np1 < "../$patch"
      fi
    done
  fi
}

build() {
  cd "pacman-$pkgver"

  if (( MPKG_CROSSCOMPILED )); then
    CROSS_FILE="--cross-file $(realpath ../$MPKG_TARGETARCH-cross-file.txt)"
  fi
  
  meson --prefix=$MPKG_USRPATH \
        $CROSS_FILE \
        --buildtype=plain \
        -Ddoc=enabled \
        -Ddoxygen=enabled \
        -Dscriptlet-shell=/usr/bin/bash \
        -Dldconfig=/usr/bin/ldconfig \
        build

  meson compile -C build
}

check() {
  cd "pacman-$pkgver"

  meson test -C build
}

package() {
  ncxfat_depends=('bash' 'glibc' 'libarchive' 'curl' 'gpgme' 'pacman-mirrorlist'
                'gettext' 'gawk' 'coreutils' 'gnupg' 'grep')

  cd "pacman-$pkgver"

  DESTDIR="$pkgdir" meson install -C build

  # install Arch specific stuff
  install -dm755 "$pkgdir$MPKG_ETCPATH"
  install -m644 "$srcdir/pacman.conf" "$pkgdir$MPKG_ETCPATH"
  sed -e "s/@MACHINE@/$MPKG_TARGETARCH-unknown-$MPKG_TARGETOS-$MPKG_TARGETCLIB/g" \
      -e "s/@ARCH@/$MPKG_TARGETARCH/g" \
      "$srcdir/makepkg.conf.in" > build/makepkg.conf
  install -m644 "build/makepkg.conf" "$pkgdir$MPKG_ETCPATH"

  local wantsdir="$pkgdir/usr/lib/systemd/system/sockets.target.wants"
  install -dm755 "$wantsdir"

  local unit
  for unit in dirmngr gpg-agent gpg-agent-{browser,extra,ssh} keyboxd; do
    ln -s "../${unit}@.socket" "$wantsdir/${unit}@etc-pacman.d-gnupg.socket"
  done
}

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