From 8f18100c2bbaaa800b6796e9c23622f85d18ae75 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Fri, 23 Feb 2018 21:07:50 +0000
Subject: git: update to 2.16

---
 abs/extra/git/PKGBUILD            | 71 +++++++++++++++++++++++++--------------
 abs/extra/git/git-daemon@.service |  4 +++
 abs/extra/git/git-sysusers.conf   |  1 +
 abs/extra/git/git.install         | 23 +++++++++----
 4 files changed, 67 insertions(+), 32 deletions(-)
 create mode 100644 abs/extra/git/git-sysusers.conf

diff --git a/abs/extra/git/PKGBUILD b/abs/extra/git/PKGBUILD
index c762f95..024b137 100644
--- a/abs/extra/git/PKGBUILD
+++ b/abs/extra/git/PKGBUILD
@@ -1,14 +1,16 @@
 # $Id$
+# Maintainer: Christian Hesse <mail@eworm.de>
 # Maintainer: Dan McGee <dan@archlinux.org>
 
 pkgname=git
-pkgver=2.5.3
+pkgver=2.16.2
 pkgrel=1
 pkgdesc="the fast distributed version control system"
-arch=(i686 x86_64)
+arch=(x86_64)
 url="http://git-scm.com/"
 license=('GPL2')
-depends=('curl' 'expat>=2.0' 'perl-error' 'perl>=5.14.0' 'openssl' 'pcre')
+depends=('curl' 'expat>=2.0' 'perl-error' 'perl>=5.14.0' 'openssl' 'pcre2'
+         'grep' 'shadow')
 makedepends=('python2' 'emacs' 'libgnome-keyring' 'xmlto' 'asciidoc')
 optdepends=('tk: gitk and git gui'
             'perl-libwww: git svn'
@@ -16,40 +18,43 @@ optdepends=('tk: gitk and git gui'
             'perl-mime-tools: git send-email'
             'perl-net-smtp-ssl: git send-email TLS support'
             'perl-authen-sasl: git send-email TLS support'
+            'perl-mediawiki-api: git mediawiki support'
+            'perl-datetime-format-iso8601: git mediawiki support'
+            'perl-lwp-protocol-https: git mediawiki https support'
+            'perl-cgi: gitweb (web interface) support'
             'python2: various helper scripts'
             'subversion: git svn'
-            'cvsps2: git cvsimport'
             'gnome-keyring: GNOME keyring credential helper')
 replaces=('git-core')
 provides=('git-core')
 install=git.install
-source=("https://www.kernel.org/pub/software/scm/git/git-$pkgver.tar.xz"
-        "https://www.kernel.org/pub/software/scm/git/git-$pkgver.tar.sign"
-        git-daemon@.service
-        git-daemon.socket)
-md5sums=('e69b41f2d0a93f3d3dc5eb19196e4e5c'
-         'SKIP'
-         '042524f942785772d7bd52a1f02fe5ae'
-         'f67869315c2cc112e076f0c73f248002')
 validpgpkeys=('96E07AF25771955980DAD10020D04E5A713660A7') # Junio C Hamano
-
-prepare() {
-  cd "$srcdir/$pkgname-$pkgver"
-}
+source=("https://www.kernel.org/pub/software/scm/git/git-$pkgver.tar."{xz,sign}
+        'git-daemon@.service'
+        'git-daemon.socket'
+        'git-sysusers.conf')
+sha256sums=('5560578bd21468d98637f41515c165d32f69caff0838b8989dee5ce10022c717'
+            'SKIP'
+            '14c0b67cfe116b430645c19d8c4759419657e6809dfa28f438c33a005245ad91'
+            'ac4c90d62c44926e6d30d18d97767efc901076d4e0283ed812a349aece72f203'
+            '595794856bfa6087c33826640ae7b5447832233844f36dfedc18646d47154730')
 
 build() {
   export PYTHON_PATH='/usr/bin/python2'
   cd "$srcdir/$pkgname-$pkgver"
   make prefix=/usr gitexecdir=/usr/lib/git-core \
     CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" \
-    USE_LIBPCRE=1 \
+    USE_LIBPCRE2=1 \
     NO_CROSS_DIRECTORY_HARDLINKS=1 \
     MAN_BOLD_LITERAL=1 \
     all doc
 
   make -C contrib/emacs prefix=/usr
   make -C contrib/credential/gnome-keyring
+  make -C contrib/credential/libsecret
   make -C contrib/subtree prefix=/usr gitexecdir=/usr/lib/git-core all doc
+  make -C contrib/mw-to-git prefix=/usr all
+  make -C contrib/diff-highlight prefix=/usr
 }
 
 check() {
@@ -58,9 +63,13 @@ check() {
   local jobs
   jobs=$(expr "$MAKEFLAGS" : '.*\(-j[0-9]*\).*') || true
   mkdir -p /dev/shm/git-test
+  # explicitly specify SHELL to avoid a test failure in t/t9903-bash-prompt.sh
+  # which is caused by 'git rebase' trying to use builduser's SHELL inside the
+  # build chroot (i.e.: /usr/bin/nologin)
+  SHELL=/bin/sh \
   make prefix=/usr gitexecdir=/usr/lib/git-core \
     CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" \
-    USE_LIBPCRE=1 \
+    USE_LIBPCRE2=1 \
     NO_CROSS_DIRECTORY_HARDLINKS=1 \
     MAN_BOLD_LITERAL=1 \
     NO_SVN_TESTS=y \
@@ -75,41 +84,53 @@ package() {
   cd "$srcdir/$pkgname-$pkgver"
   make prefix=/usr gitexecdir=/usr/lib/git-core \
     CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" \
-    USE_LIBPCRE=1 \
+    USE_LIBPCRE2=1 \
     NO_CROSS_DIRECTORY_HARDLINKS=1 \
     MAN_BOLD_LITERAL=1 \
     INSTALLDIRS=vendor DESTDIR="$pkgdir" install install-doc
 
   # bash completion
   mkdir -p "$pkgdir"/usr/share/bash-completion/completions/
-  install -m644 ./contrib/completion/git-completion.bash "$pkgdir"/usr/share/bash-completion/completions/git
+  install -m 0644 ./contrib/completion/git-completion.bash "$pkgdir"/usr/share/bash-completion/completions/git
   # fancy git prompt
   mkdir -p "$pkgdir"/usr/share/git/
-  install -m644 ./contrib/completion/git-prompt.sh "$pkgdir"/usr/share/git/git-prompt.sh
+  install -m 0644 ./contrib/completion/git-prompt.sh "$pkgdir"/usr/share/git/git-prompt.sh
   # emacs
   make -C contrib/emacs prefix=/usr DESTDIR="$pkgdir" install
   # gnome credentials helper
-  install -m755 contrib/credential/gnome-keyring/git-credential-gnome-keyring \
+  install -m 0755 contrib/credential/gnome-keyring/git-credential-gnome-keyring \
       "$pkgdir"/usr/lib/git-core/git-credential-gnome-keyring
   make -C contrib/credential/gnome-keyring clean
+  # libsecret credentials helper
+  install -m 0755 contrib/credential/libsecret/git-credential-libsecret \
+      "$pkgdir"/usr/lib/git-core/git-credential-libsecret
+  make -C contrib/credential/libsecret clean
   # subtree installation
   make -C contrib/subtree prefix=/usr gitexecdir=/usr/lib/git-core DESTDIR="$pkgdir" install install-doc
+  # mediawiki installation
+  make -C contrib/mw-to-git prefix=/usr gitexecdir=/usr/lib/git-core DESTDIR="$pkgdir" install
   # the rest of the contrib stuff
+  find contrib/ -name '.gitignore' -delete
   cp -a ./contrib/* $pkgdir/usr/share/git/
 
   # scripts are for python 2.x
   sed -i 's|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2|' \
     $(find "$pkgdir" -name '*.py') \
-    "$pkgdir"/usr/share/git/gitview/gitview \
     "$pkgdir"/usr/share/git/remote-helpers/git-remote-bzr \
     "$pkgdir"/usr/share/git/remote-helpers/git-remote-hg
   sed -i 's|#![ ]*/usr/bin/python$|#!/usr/bin/python2|' \
     "$pkgdir"/usr/share/git/svn-fe/svnrdump_sim.py
 
+  # perl modules from contrib/ install to site dir... move to vendor
+  mv "$pkgdir"/usr/share/perl5/site_perl/Git/* "$pkgdir"/usr/share/perl5/vendor_perl/Git/
+  rm -rf "$pkgdir"/usr/share/perl5/site_perl
   # remove perllocal.pod, .packlist, and empty directories.
   rm -rf "$pkgdir"/usr/lib/perl5
 
   # git-daemon via systemd socket activation
-  install -D -m 644 "$srcdir"/git-daemon@.service "$pkgdir"/usr/lib/systemd/system/git-daemon@.service
-  install -D -m 644 "$srcdir"/git-daemon.socket "$pkgdir"/usr/lib/systemd/system/git-daemon.socket
+  install -D -m 0644 "$srcdir"/git-daemon@.service "$pkgdir"/usr/lib/systemd/system/git-daemon@.service
+  install -D -m 0644 "$srcdir"/git-daemon.socket "$pkgdir"/usr/lib/systemd/system/git-daemon.socket
+
+  # sysusers file
+  install -D -m 0644 "$srcdir"/git-sysusers.conf "$pkgdir"/usr/lib/sysusers.d/git.conf
 }
diff --git a/abs/extra/git/git-daemon@.service b/abs/extra/git/git-daemon@.service
index 55ca714..70e0dca 100644
--- a/abs/extra/git/git-daemon@.service
+++ b/abs/extra/git/git-daemon@.service
@@ -8,3 +8,7 @@ ExecStart=-/usr/lib/git-core/git-daemon --inetd --export-all --base-path=/srv/gi
 StandardInput=socket
 StandardOutput=inherit
 StandardError=journal
+ProtectSystem=full
+ProtectHome=on
+PrivateDevices=on
+NoNewPrivileges=on
diff --git a/abs/extra/git/git-sysusers.conf b/abs/extra/git/git-sysusers.conf
new file mode 100644
index 0000000..2141c70
--- /dev/null
+++ b/abs/extra/git/git-sysusers.conf
@@ -0,0 +1 @@
+u git - "git daemon user" /
diff --git a/abs/extra/git/git.install b/abs/extra/git/git.install
index 064eda0..24bc5d7 100644
--- a/abs/extra/git/git.install
+++ b/abs/extra/git/git.install
@@ -1,12 +1,21 @@
+#!/bin/sh
+
 post_install() {
-  if ! getent group git >/dev/null; then
-    groupadd --system git 
-  fi
-  if ! getent passwd git >/dev/null; then
-    useradd --system -c 'git daemon user' -g git -d / -s /bin/bash git 
+  # make git-shell a valid shell
+  if ! grep -qe '^/usr/bin/git-shell$' etc/shells; then
+    echo '/usr/bin/git-shell' >> etc/shells
   fi
+
+  # make sure the user exists...
+  systemd-sysusers git.conf
+
+  # ... and change the shell. This is done only once in post-install
+  # function, so an administrative change is persistent.
+  chsh --shell /usr/bin/git-shell git > /dev/null
 }
 
-post_upgrade() {
-  post_install $1
+# do not modify user settings (shell) in post-upgrade function!
+
+post_remove() {
+  sed -i -r '/^\/usr\/bin\/git-shell$/d' etc/shells
 }
-- 
cgit v0.12