From 35554f46e45deeb64c830818d0d4b7d37b37ab00 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sun, 4 Oct 2020 16:23:23 +0000
Subject: p11-kit: update to 0.23.21

---
 abs/core/p11-kit/PKGBUILD                | 96 +++++++++++++++++---------------
 abs/core/p11-kit/libnssckbi-compat.patch | 57 -------------------
 abs/core/p11-kit/p11-kit.install         | 23 ++++++++
 3 files changed, 75 insertions(+), 101 deletions(-)
 delete mode 100644 abs/core/p11-kit/libnssckbi-compat.patch
 create mode 100644 abs/core/p11-kit/p11-kit.install

diff --git a/abs/core/p11-kit/PKGBUILD b/abs/core/p11-kit/PKGBUILD
index 4b1f06d..256592d 100644
--- a/abs/core/p11-kit/PKGBUILD
+++ b/abs/core/p11-kit/PKGBUILD
@@ -1,63 +1,71 @@
-# $Id$
+# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
 # Contributor: Ionut Biru <ibiru@archlinux.org>
 
-pkgname=p11-kit
-pkgver=0.23.9
+pkgbase=p11-kit
+pkgname=(p11-kit libp11-kit)
+pkgver=0.23.21
 pkgrel=1
-pkgdesc="Provides a way to load and enumerate PKCS#11 modules"
-arch=(i686 x86_64)
+pkgdesc="Loads and enumerates PKCS#11 modules"
 url="https://p11-glue.freedesktop.org"
+arch=(x86_64)
 license=(BSD)
-depends=(glibc libtasn1 libffi)
-makedepends=(gtk-doc git)
-_commit=34cb047e20af02ef3d820a295e9e29f618b83bab  # tags/0.23.9^0
-source=("git+https://github.com/p11-glue/p11-kit#commit=$_commit"
-        libnssckbi-compat.patch)
-sha256sums=('SKIP'
-            '8f763cdbc6c0ca6c5a7898f9fd6f3018b7ac5b1aca36f67c6c813343c2962962')
-validpgpkeys=('C0F67099B808FB063E2C81117BFB1108D92765AF')
-
-pkgver() {
-  cd $pkgname
-  git describe --tags | sed 's/-/+/g'
-}
+makedepends=(gtk-doc git meson libtasn1 libffi systemd bash-completion)
+source=("git+https://github.com/p11-glue/p11-kit?signed#tag=$pkgver")
+sha256sums=('SKIP')
+validpgpkeys=('C0F67099B808FB063E2C81117BFB1108D92765AF'  # Stef Walter
+              '462225C3B46F34879FC8496CD605848ED7E69871') # Daiki Ueno
 
 prepare() {
-  cd $pkgname
-
-  # Build and install an additional library (libnssckbi-p11-kit.so) which
-  # is a copy of p11-kit-trust.so but uses the same label for root certs as
-  # libnssckbi.so ("Builtin Object Token" instead of "Default Trust")
-  # https://bugs.freedesktop.org/show_bug.cgi?id=66161
-  patch -Np1 -i ../libnssckbi-compat.patch
-
-  NOCONFIGURE=1 ./autogen.sh
+  cd p11-kit
 }
 
 build() {
-  cd $pkgname
-
-  ./configure --prefix=/usr \
-    --sysconfdir=/etc \
-    --localstatedir=/var \
-    --libexecdir=/usr/lib \
-    --enable-doc \
-    --with-module-path=/usr/lib/pkcs11 \
-    --with-trust-paths=/etc/ca-certificates/trust-source:/usr/share/ca-certificates/trust-source
-  make
+  arch-meson p11-kit build \
+    --buildtype debugoptimized \
+    -D gtk_doc=true \
+    -D man=true \
+    -D trust_paths=/etc/ca-certificates/trust-source:/usr/share/ca-certificates/trust-source
+  meson compile -C build
 }
 
 check() {
-  cd $pkgname
-  make check
+  meson test -C build --print-errorlogs
 }
 
-package() {
-  cd $pkgname
-  make DESTDIR="$pkgdir" install
-  install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+_pick() {
+  local p="$1" f d; shift
+  for f; do
+    d="$srcdir/$p/${f#$pkgdir/}"
+    mkdir -p "$(dirname "$d")"
+    mv "$f" "$d"
+    rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
+  done
+}
+
+package_p11-kit() {
+  depends=("libp11-kit=$pkgver-$pkgrel" coreutils libp11-kit.so libsystemd.so)
+  install=p11-kit.install
+
+  DESTDIR="$pkgdir" meson install -C build
+  ln -sr "$pkgdir/usr/bin/update-ca-trust" "$pkgdir/usr/lib/p11-kit/trust-extract-compat"
+
+  # Split libp11-kit
+  _pick lib "$pkgdir"/usr/include
+  _pick lib "$pkgdir"/usr/lib/{p11-kit-proxy.so,libp11-kit.*}
+  _pick lib "$pkgdir"/usr/lib/{pkcs11,pkgconfig}
+  _pick lib "$pkgdir"/usr/share/{locale,p11-kit}
+
+  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 p11-kit/COPYING
+}
+
+package_libp11-kit() {
+  pkgdesc+=" (library)"
+  depends=(glibc libtasn1 libffi)
+  provides=(libp11-kit.so)
+
+  mv lib/* "$pkgdir"
 
-  ln -srf "$pkgdir/usr/bin/update-ca-trust" "$pkgdir/usr/lib/p11-kit/trust-extract-compat"
+  install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 p11-kit/COPYING
 }
 
 # vim:set ts=2 sw=2 et:
diff --git a/abs/core/p11-kit/libnssckbi-compat.patch b/abs/core/p11-kit/libnssckbi-compat.patch
deleted file mode 100644
index d1b70a3..0000000
--- a/abs/core/p11-kit/libnssckbi-compat.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-diff -upr p11-kit-0.23.1.orig/trust/Makefile.am p11-kit-0.23.1/trust/Makefile.am
---- p11-kit-0.23.1.orig/trust/Makefile.am	2014-11-12 12:58:50.000000000 +0200
-+++ p11-kit-0.23.1/trust/Makefile.am	2015-03-30 16:43:35.275993032 +0300
-@@ -61,6 +61,20 @@ p11_kit_trust_la_LDFLAGS = \
- 
- p11_kit_trust_la_SOURCES = $(TRUST_SRCS)
- 
-+libnssckbi_compatdir = $(libdir)
-+libnssckbi_compat_LTLIBRARIES = \
-+	libnssckbi-p11-kit.la
-+
-+libnssckbi_p11_kit_la_CFLAGS = \
-+	-DLIBNSSCKBI_COMPAT \
-+	$(p11_kit_trust_la_CFLAGS)
-+
-+libnssckbi_p11_kit_la_LIBADD = $(p11_kit_trust_la_LIBADD)
-+
-+libnssckbi_p11_kit_la_LDFLAGS = $(p11_kit_trust_la_LDFLAGS)
-+
-+libnssckbi_p11_kit_la_SOURCES = $(p11_kit_trust_la_SOURCES)
-+
- libtrust_testable_la_LDFLAGS = \
- 	-no-undefined
- 
-diff -upr p11-kit-0.23.1.orig/trust/module.c p11-kit-0.23.1/trust/module.c
---- p11-kit-0.23.1.orig/trust/module.c	2014-12-16 12:24:01.000000000 +0200
-+++ p11-kit-0.23.1/trust/module.c	2015-03-30 16:48:41.370360130 +0300
-@@ -196,7 +196,11 @@ create_tokens_inlock (p11_array *tokens,
- 		const char *label;
- 	} labels[] = {
- 		{ "~/", "User Trust" },
-+#ifdef LIBNSSCKBI_COMPAT
-+		{ DATA_DIR, "Builtin Object Token" },
-+#else
- 		{ DATA_DIR, "Default Trust" },
-+#endif
- 		{ SYSCONFDIR, "System Trust" },
- 		{ NULL },
- 	};
-@@ -521,9 +525,15 @@ sys_C_GetSlotInfo (CK_SLOT_ID id,
- 		info->flags = CKF_TOKEN_PRESENT;
- 		strncpy ((char*)info->manufacturerID, MANUFACTURER_ID, 32);
- 
--		/* If too long, copy the first 64 characters into buffer */
--		path = p11_token_get_path (token);
-+#ifdef LIBNSSCKBI_COMPAT
-+		/* Change description to match libnssckbi so HPKP works in Chromium */
-+		if (strcmp (p11_token_get_label (token), "Builtin Object Token" ) == 0)
-+			path = "NSS Builtin Objects";
-+		else
-+#endif
-+			path = p11_token_get_path (token);
- 		length = strlen (path);
-+		/* If too long, copy the first 64 characters into buffer */
- 		if (length > sizeof (info->slotDescription))
- 			length = sizeof (info->slotDescription);
- 		memset (info->slotDescription, ' ', sizeof (info->slotDescription));
diff --git a/abs/core/p11-kit/p11-kit.install b/abs/core/p11-kit/p11-kit.install
new file mode 100644
index 0000000..2f82c56
--- /dev/null
+++ b/abs/core/p11-kit/p11-kit.install
@@ -0,0 +1,23 @@
+_global_units() {
+    local unit=p11-kit-server.socket dir=/etc/systemd/user/sockets.target.wants
+
+    case $1 in
+        enable)
+            mkdir -p $dir
+            ln -sf /usr/lib/systemd/user/$unit $dir/$unit
+            ;;
+        disable)
+            rm -f $dir/$unit
+            rmdir -p --ignore-fail-on-non-empty $dir
+            ;;
+    esac
+}
+
+post_install() {
+  # Enable socket by default
+  _global_units enable
+}
+
+pre_remove() {
+  _global_units disable
+}
-- 
cgit v0.12

