# Maintainer:  David Runge <dvzrv@archlinux.org>
# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor: Allan McRae <allan@archlinux.org>
# Contributor: Hugo Doria <hugo@archlinux.org>

pkgname=libcap
pkgver=2.69
pkgrel=4.1
pkgdesc="POSIX 1003.1e capabilities"
url="https://sites.google.com/site/fullycapable/"
license=('BSD-3-Clause OR GPL-2.0-only')
ncxfat_makedepends=(
  binutils
  gcc-libs
  glibc
  pam
)
ncxfab_makedepends=(
  base-devel
  make
  gcc
  crosspacman
  sh
  coreutils
  go
  linux-api-headers
)
provides=(
  libcap.so
  libpsx.so
)
# we can not use LTO as otherwise we get no reproducible package with full RELRO
options=(!lto)
source=(
  https://kernel.org/pub/linux/libs/security/linux-privs/${pkgname}2/$pkgname-$pkgver.tar.{xz,sign}
  libcap-2.69-cgo_flags.patch  # provide flags to go build (sent upstream)
)
sha512sums=('647c307dc451517da9d089495ab959b4a6fbbe41c79f4e1e9bb663569dad630ead0c2e413dfb393319e3ea14dc9848c81b392107fe3382ce1813d278c3394a7f'
            'SKIP'
            'f1e301370b1af91d6cdca2433fcfc60f35ccfdfca7a7ce00a0b0ddfb54d67ed1b7e0a52094010c92514460bd142d12bb29eb28c13d9e7da9b92e4b61b6300d2f')
b2sums=('94d1fef7666a1c383a8b96f1f6092bd242164631532868b628d2f5de71b42a371d041a978ef7fbadfee3eeb433165444995d1078cd790275bc0433a7875a697e'
        'SKIP'
        '535fe70e39caeccb4b71fe0b6329e37b88b69d18361595e78171e3d148370553a055c81e4e691c5b43e54d5c2789fe5390287a1f23efc4529246877eaf8821e5')
validpgpkeys=(38A644698C69787344E954CE29EE848AE2CCF3F4) # Andrew G. Morgan <morgan@kernel.org>

_common_make_options=(
  GOLANG=no
  CROSS_COMPILE=$MPKG_TARGETMACHINE-
  BUILD_CC=gcc
)

prepare() {
  # ensure to use CGO_ENABLED all the way (so that we can have full RELRO)
  patch -Np1 -d libcap-$pkgver -i ../libcap-2.69-cgo_flags.patch
}

build() {
  local make_options=(
    "${_common_make_options[@]}"
    DYNAMIC=yes
    KERNEL_HEADERS=/usr/$MPKG_TARGETMACHINE/include
    lib=lib
    prefix=$MPKG_USRPATH
    sbindir=bin
    -C libcap-$pkgver
  )

  make "${make_options[@]}"
}

check() {
  local make_options=(
    "${_common_make_options[@]}"
    test
    -k
    -C libcap-$pkgver
  )

  make "${make_options[@]}"
}

package() {
  ncxfat_depends=(
    gcc-libs
    glibc
    pam
  )

  local make_options=(
    "${_common_make_options[@]}"
    DESTDIR="$pkgdir"
    RAISE_SETFCAP=no
    lib=lib
    prefix=$MPKG_USRPATH
    sbindir=bin
    install
    -C libcap-$pkgver
  )

  make "${make_options[@]}"
  install -vDm 644 libcap-$pkgver/{CHANGELOG,README} -t "$pkgdir/usr/share/doc/$pkgname/"
  install -vDm 644 libcap-$pkgver/License -t "$pkgdir/usr/share/licenses/$pkgname/"
  install -vDm 644 libcap-$pkgver/pam_cap/capability.conf -t "$pkgdir/usr/share/doc/$pkgname/examples/"
}
