# Packager = Tuxcore <dev@tuxcore.org> 
pkgname=gnupg
pkgver=2.4.5
pkgrel=1
pkgdesc='Complete and free implementation of the OpenPGP standard'
arch=(x86_64)
url='https://www.gnupg.org/'
license=(
  BSD-2-Clause
  BSD-3-Clause
  BSD-4-Clause
  CC0-1.0
  GPL-2.0-or-later
  GPL-3.0-or-later
  LGPL-2.1-or-later
  'LGPL-3.0-or-later OR GPL-2.0-or-later'
  MIT
  Unicode-TOU
)
depends=(
  bzip2 libbz2.so
  glibc
  gnutls
  libgcrypt
  libgpg-error
  libksba
  libassuan libassuan.so
  libldap
  libusb
  npth libnpth.so
  pinentry
  readline libreadline.so
  sh
  sqlite
  tpm2-tss
  zlib
)
makedepends=(pcsclite)
checkdepends=(openssh)
optdepends=(
  'pcsclite: for using scdaemon not with the gnupg internal card driver'
)
install=$pkgname.install
source=(
  https://gnupg.org/ftp/gcrypt/$pkgname/$pkgname-$pkgver.tar.bz2{,.sig}
  dirmngr{,@}.{service,socket}
  gpg-agent{,@}.{service,socket}
  gpg-agent-{browser,extra,ssh}{,@}.socket
  keyboxd{,@}.{service,socket}
  $pkgname-2.4-avoid_beta_warning.patch  # do not emit beta warnings (due to misbehaving build system)
  $pkgname-2.4-drop_import_clean.patch  # do not potentially remove components on certificates during import
  $pkgname-2.4-revert_default_rfc4880bis.patch  # v5 is incompatible with other implementations and v6
  $pkgname-2.4-keep-systemd-support.patch
  $pkgname-2.4-keyboxd-systemd-support.patch
)
sha256sums=('f68f7d75d06cb1635c336d34d844af97436c3f64ea14bcb7c869782f96f44277'
            'SKIP'
            '80a3a80f9f1f337da555a6838483e1baca44cde8a8a3d8c4ba7743626304b981'
            '8374255ce93a3c343019ab425963bcbc41982ea89e669d1ad1df0aa7be810de1'
            'ca55048f992824a24ab7f61cbc44a713a153f70a1a60d1cbba7ab4440302a204'
            '9bc456d0fdc7d1a955d385a337d58e5b9cff22157b9097248faa136b2e008433'
            '8ea489a57edb0db9394bf2d6c0ec62205f881bb54efb919e4870209c7db01aa7'
            '81e9dd05cbf3b8406367258eae6ef67ff97f270301bf50b52742647c515c8304'
            'f735119afa3c452728e899809aa1d87b6091a327934befde3aef70ea9259197f'
            'afdc69cdb4aeb585728942eea2126de87e2fbc17fc68743f215017046be4a2b4'
            '1cf9821b3bf4efaf4da2fd52ceb70d254dc4f6c545603f9045de716ef6aabf2d'
            'c2ef09eda452e730e7f4d667a8195b00fff076a91f413d7af22b4cfd5e8439e5'
            'f0094f67586cbcda17fd0d780e3e73d6dbaa479ac84715ba941531f83f6ecfe9'
            '075083af7f70c964ecd6e3ea45b35992f065d7a236014a97a705cb1b6835b7cb'
            'ffa0191fad52712732f8b24d7d570c1d19a7803e59d30088797b76e252f65858'
            'f2fcec9b97535f79a8054797cac7cfcd701451b43be65de943c6968db86c04ca'
            '5494b329584ae5321911b4a28a99e94678e317668269365e288df21839ac47b0'
            '36a3e76bb2d79a57bdf316bd2df5cf965fafe33f9ca345b3c3e0b05e903b0cdf'
            'f25c79a2e135f41b9b84bab416be22cbeb5c32dc92d23a463638d2947ece9703'
            '829f8550054b2aeddc3c978b3ce46236e951a00809084f488cf9b10126e0533d'
            '243c3a79295519b3931f9d846cf2af5caa064a78de812ee336dc786c1567b4d0'
            '6ade15b536c50a88efc2d9dc958433b0ccfaf2908025b7672753e6bfce51c3c6'
            'ef2267eecd9eb59bbbbdb97d55cbfe10236b4979a125c6683a840830bc202905'
            '677ca409e8ece61e64a94102a2b71ec119941b5ae0f0ed4f1c4f2c0c2bdd158a'
            'e0aff9f80abb6059e41cb3bb7cc86b7aa3fc1c27626676385c5479d69ef830a1')
b2sums=('a8b80cd4dfbb377066efb5c9f1b6cdc6d0cd1b18358c962781b5c06de1545117b13038a4655ae627c36bfd2e5fee127692df8729d6b23e1b31051ab6d897b733'
        'SKIP'
        '7a3af856305eb4b00929aaf029dd4e5c84376df4f30add76976b9b058addf6fc4d8c39335fc83d11493ea9d8a40f0510dbac8572b99a8c8b9b3a4eca8e585774'
        'ee51a4702715f5ec2629ff42eeba8630010da8a67545d1e53961e710de5faf197708e55d2d55796917a134ca2a76b1d6c88a8f7756d0706e0cbc33b605f52d86'
        '3f40de2bf73e84f099b542349257ef6c098b4e347fb218d21a2a785830aa335832229b24c74aadae73deff5460f8645e2d7e7c3c2faaeb91cc812eeb06ddca84'
        '5bc0061db19515cb48ad7ec251a6edd3ac88d45cbaeb4b71eb714ffad5b2608cbea9097f577d60758e457dfd4ec8977d88232093d4fa9eeda0ee32baea8b9892'
        'ad71d7fab2a92a8da454c34884b5724e94adc0925a7f97f062fb7b78ed3ec87e5babb6383e755c943afd16bf61789ba83455dc2baf82ce248c1c4622ff87e364'
        '129ecd9df3f00ed28f494f914483645e9aeaa1d6812c762ded60582c0a3f66b215731d4415ea5c017aa5ce97448faa5b93dbcb3793a82643d6ed160cc62f4ea4'
        '36f8709733fbd509f096675a10a240ec6862e6cbd59d32cf8b1fdc1ac04fb7137093690cd97db705e324f6d030344d1d72384504f3465cffccb855c2e29be678'
        '9c1db80065125cfb55703a851433bc1e80920c01c51fc93eac577a4dd5f81c56b9d51a22abab62b519501a662751c8fee1eed88e39cefcace156ef6506ae22a0'
        'bf5daa4a33daae716a1d7743470dae618151e14ab7bb5d99138f880a908fac57dbb517b78d92c81ecf4532c25366cd32f7acc0e33a711ccde830fbc208726e69'
        '0ff931c5a56abd90d3b696cd8b8109c2838d6ea5e8547aa2c9cf7241ed83d9c2c715a38e35cfce801feaca0ba0aabd047b7618a1ed4331fc2713fe83f268843c'
        'ffc8ea3c7875b195720ad238742a726b4b7be0bb8f2f8927358d259202f22b5e32f9ad23a4c66da85e25f36544770c29725be6d99256b685427b94d814e29196'
        '79084542549657d374f9a8464de43a122c5f8329dad86464cb869b6422d89f65483be28f823dff6b9496e6d53976092ebad1aa929c3039d09f6ec1aded82feb8'
        '9dd03f808af45752a01ccbcfec3f3cb39f1a720088e21aa8a19c2ceec3876b3a8b950c1c154203d0adc208fed8ae07a26c8cd59d783e32eb1294a3a340bedad4'
        '4f184100cfafd917eb6e67969d473c6bc02bf874d83d47eb5066d0246ecf77de552f44d29952033b6d57656e5a4dff4b8861833bc61afba65524c928e984266e'
        '93382c52bcaf14d7a20b561b5ae6fc587ff46ed5e9fa28df956a5732c8aa685b4966de1db2696bd4e3e99a8c3329a8b3070943c1c06e97aab344af3048c38e75'
        '402c0670357ae811ffb7252d762d3385a6bc542161a828aeb15b932fdc4a8ba181af1a4a4cca639d9adb13a99dac15a006386ad41d94cb566e1a2ba62feff1cc'
        'bb88f65e71537e8fec6bb21487589d4c94e590fc580717ce59bf332b748a62d73a1c8c6f8372efaf0253954b03026c6a924e7a947f4ae293ef0afab9bfcfabad'
        '559f848e6b07aa3534a18fad9796c93c859e8759558c3d642fd347f71bea29976cb56aac33e3182e83980baad2589fb6abe2aaabd305b0b874eba77bd8711fe8'
        '168855b598714abb27e01e52e0ed1e1a01ab14ffb2ee09d759308375359cd28c0a9f96c6b9dee0a2cc5713aec8ea831858d59f56a0a126bca3e1401b078fc7ab'
        '0b9546c102724f1dbb90ad3c45307eed3491a5ea79940eba1184e6d466f399f279a23e73bac6b0bb0d662aa4599d0a4a0f331b0df3fe7fa6e7590c1074fc2ed1'
        '009c1a935021c987cd3c15581250090edfcd1a6dd30622db2701295f047384e03ba97590ca6993d410e81a6fd7c274468cd58a1904d51f432d572df39ee178d6'
        '2801ecc6db1f6fe33a8a83756b272d9f363509c5804c501045002e9ac509fc22bcb16dfd107bcbe870756748d2ebc2dbdc3b7c0f74c8b7f52207553ca5e0145b'
        '070aaca7cd1a5f994eeb84ac2b07d6ddd80b5cb21dec4d0763ab599f3849611143314faa5af7f1eb2cfb924dd49e44ec11b28763aa1980f61e74cdf368bed545')
  '5B80C5754298F0CB55D8ED6ABCEF7E294B092E28' # Andre Heinecke (Release Signing Key)
  '6DAA6E64A76D2840571B4902528897B826403ADA' # Werner Koch (dist signing 2020)
  'AC8E115BF73E2D8D47FA9908E98E9B2D19C6C8BD' # Niibe Yutaka (GnuPG Release Key)
  '02F38DFF731FF97CB039A1DA549E695E905BA208' # GnuPG.com (Release Signing Key 2021)
)

prepare() {
  cd $pkgname-$pkgver

  local src
  for src in "${source[@]}"; do
    src="${src%%::*}"
    src="${src##*/}"
    [[ $src = *.patch ]] || continue
    msg2 "Applying patch $src..."
    patch -Np1 < "../$src"
  done

  # improve reproducibility
  rm doc/gnupg.info*

  sed -n '5, 28 p' COPYING.other > MIT.txt
  sed -n '30, 60 p' COPYING.other > BSD-4-Clause.txt
  sed -n '62, 92 p' COPYING.other > BSD-3-Clause.txt
  sed -n '95, 125 p' COPYING.other > BSD-2-Clause.txt
  sed -n '128, 160 p' COPYING.other > Unicode-TOU.txt

  ./autogen.sh
}

build() {
  local configure_options=(
    --enable-maintainer-mode
    --libexecdir=/usr/lib/gnupg
    --prefix=/usr
    --sbindir=/usr/bin
    --sysconfdir=/etc
  )

  cd $pkgname-$pkgver
  ./configure "${configure_options[@]}"
  make
}

check() {
  cd $pkgname-$pkgver
  make check
}

package() {
  cd $pkgname-$pkgver
  make DESTDIR="$pkgdir" install
  ln -s gpg "$pkgdir"/usr/bin/gpg2
  ln -s gpgv "$pkgdir"/usr/bin/gpgv2

  install -vDm 644 {BSD-{2,3,4}-Clause,MIT,Unicode-TOU}.txt -t "$pkgdir/usr/share/licenses/$pkgname/"

  local systemdir="$pkgdir/usr/lib/systemd/"
  local wantsdir="${systemdir}user/sockets.target.wants/"
  install -vdm 755 "$wantsdir"

  local unit
  for unit in ../*.{service,socket}; do
    case $unit in
      *@.*) install -vDm 644 "$unit" -t "${systemdir}system/" ;;
      *.socket) ln -sv "../${unit##*/}" -t "$wantsdir" ;&
      *) install -vDm 644 "$unit" -t "${systemdir}user/" ;;
    esac
  done
}

# vim: ts=2 sw=2 et:
