From 2d1485a13f0276a635940fb3a9cfbcb06be2c6fd Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Tue, 22 Jan 2019 22:04:31 +0000
Subject: intltool: add perl patch

---
 abs/core/intltool/PKGBUILD                         | 24 +++++++---
 abs/core/intltool/intltool-0.51.0-perl-5.26.patch  | 51 ++++++++++++++++++++++
 ...tltool-merge-Create-cache-file-atomically.patch | 38 ++++++++++++++++
 abs/core/intltool/intltool_distcheck-fix.patch     | 30 +++++++++++++
 4 files changed, 137 insertions(+), 6 deletions(-)
 create mode 100644 abs/core/intltool/intltool-0.51.0-perl-5.26.patch
 create mode 100644 abs/core/intltool/intltool-merge-Create-cache-file-atomically.patch
 create mode 100644 abs/core/intltool/intltool_distcheck-fix.patch

diff --git a/abs/core/intltool/PKGBUILD b/abs/core/intltool/PKGBUILD
index 3ddeaaf..36e18b7 100644
--- a/abs/core/intltool/PKGBUILD
+++ b/abs/core/intltool/PKGBUILD
@@ -1,19 +1,31 @@
-# $Id$
 # Maintainer: Eric Bélanger <eric@archlinux.org>
 
 pkgname=intltool
 pkgver=0.51.0
-pkgrel=1
+pkgrel=4
 pkgdesc="The internationalization tool collection"
 arch=('any')
-url="https://edge.launchpad.net/intltool"
+url="https://launchpad.net/intltool"
 license=('GPL')
 depends=('perl-xml-parser')
-source=(http://launchpad.net/intltool/trunk/${pkgver}/+download/${pkgname}-${pkgver}.tar.gz{,.asc})
-sha1sums=('a0c3bcb99d1bcfc5db70f8d848232a47c47da090'
-          'SKIP')
+source=(https://launchpad.net/intltool/trunk/${pkgver}/+download/${pkgname}-${pkgver}.tar.gz{,.asc}
+        intltool-0.51.0-perl-5.26.patch
+        intltool-merge-Create-cache-file-atomically.patch
+        intltool_distcheck-fix.patch)
+sha256sums=('67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd'
+            'SKIP'
+            '458f5d53ac358810879080f69b11649901babcacc14471c243eb850e9436d546'
+            '13bd6deb65dc94933f132919d4eea4c24354d7c1c1c9e5930cb6e70c75703763'
+            '58cb7d60796bc69c7d0865f106feb589d0271619e62f8741bff6f5ce1a2615ff')
 validpgpkeys=('9EBD001680E8C8F9FAC61A9BE1A701D4C9DE75B5')
 
+prepare() {
+  cd ${pkgname}-${pkgver}
+  patch -Np1 -i ../intltool-0.51.0-perl-5.26.patch
+  patch -Np1 -i ../intltool-merge-Create-cache-file-atomically.patch
+  patch -Np1 -i ../intltool_distcheck-fix.patch
+}
+
 build() {
   cd ${pkgname}-${pkgver}
   ./configure --prefix=/usr
diff --git a/abs/core/intltool/intltool-0.51.0-perl-5.26.patch b/abs/core/intltool/intltool-0.51.0-perl-5.26.patch
new file mode 100644
index 0000000..8f6a0b3
--- /dev/null
+++ b/abs/core/intltool/intltool-0.51.0-perl-5.26.patch
@@ -0,0 +1,51 @@
+diff -Naur intltool-0.51.0.orig/intltool-update.in intltool-0.51.0/intltool-update.in
+--- intltool-0.51.0.orig/intltool-update.in	2015-03-09 02:39:54.000000000 +0100
++++ intltool-0.51.0/intltool-update.in	2017-07-21 22:35:10.613631420 +0200
+@@ -1062,13 +1062,13 @@
+ 	}
+     }
+ 
+-    if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/)
++    if ($str =~ /^(.*)\$\{?([A-Z_]+)}?(.*)$/)
+     {
+ 	my $rest = $3;
+ 	my $untouched = $1;
+ 	my $sub = "";
+         # Ignore recursive definitions of variables
+-        $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\${?$2}?/;
++        $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\$\{?$2}?/;
+ 
+ 	return SubstituteVariable ("$untouched$sub$rest");
+     }
+@@ -1190,10 +1190,10 @@
+ 	$name    =~ s/\(+$//g;
+ 	$version =~ s/\(+$//g;
+ 
+-	$varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
+-	$varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
+-	$varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
+-	$varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
++	$varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/);
++	$varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/);
++	$varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/);
++	$varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/);
+     }
+ 
+     if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)[,]?([^,\)]+)?/m)
+@@ -1219,11 +1219,11 @@
+ 	$version =~ s/\(+$//g;
+         $bugurl  =~ s/\(+$//g if (defined $bugurl);
+ 
+-	$varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
+-	$varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
+-	$varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
+-	$varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
+-        $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\${?\w+}?/);
++	$varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/);
++	$varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/);
++	$varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/);
++	$varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/);
++        $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\$\{?\w+}?/);
+     }
+ 
+     # \s makes this not work, why?
diff --git a/abs/core/intltool/intltool-merge-Create-cache-file-atomically.patch b/abs/core/intltool/intltool-merge-Create-cache-file-atomically.patch
new file mode 100644
index 0000000..677ea45
--- /dev/null
+++ b/abs/core/intltool/intltool-merge-Create-cache-file-atomically.patch
@@ -0,0 +1,38 @@
+From d328542bea50b9445c63cdf2454052392282a1ce Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters@verbum.org>
+Date: Thu, 8 Oct 2015 16:25:47 -0400
+Subject: [PATCH] intltool-merge: Create cache file atomically
+
+It's going to be relatively common for build systems operating in
+parallel to run multiple copies of `intltool-merge`, yet the cache
+file is not created atomically (i.e. with the "open .tmp file and
+rename()" dance).
+
+I suspect (but have not yet determined conclusively) this is the cause
+of some systemd build issues where translations don't appear in the
+merged file.
+
+Regardless, this patch can't hurt.
+---
+ intltool-merge.in | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/intltool-merge.in b/intltool-merge.in
+index 1afa2a4..d1eba8f 100644
+--- a/intltool-merge.in
++++ b/intltool-merge.in
+@@ -371,9 +371,10 @@ sub create_cache
+ 
+     &create_translation_database;
+ 
+-    open CACHE, ">$cache_file" || die;
++    open CACHE, ">$cache_file" . ".tmp" || die;
+     print CACHE join "\x01", %translations;
+     close CACHE;
++    rename("$cache_file" . ".tmp", "$cache_file");
+ }
+ 
+ sub load_cache 
+-- 
+1.8.3.1
+
diff --git a/abs/core/intltool/intltool_distcheck-fix.patch b/abs/core/intltool/intltool_distcheck-fix.patch
new file mode 100644
index 0000000..6e7f198
--- /dev/null
+++ b/abs/core/intltool/intltool_distcheck-fix.patch
@@ -0,0 +1,30 @@
+diff -upr intltool-0.51.0-orig/intltool-update.in intltool-0.51.0/intltool-update.in
+--- intltool-0.51.0-orig/intltool-update.in	2016-07-29 14:08:06.276987000 +0200
++++ intltool-0.51.0/intltool-update.in	2016-07-29 14:11:09.562126918 +0200
+@@ -620,6 +620,14 @@ sub FindLeftoutFiles
+ 
+     my @result;
+ 
++    # If the builddir is a subdir of srcdir, the list of files found will be prefixed with
++    # an additional prefix (e.g. "_build/sub" for automake 1.15 make distcheck). Try to
++    # handle that, by removing those matches as well.
++    my $absbuilddir = Cwd::abs_path("..\/");
++    my $abssrcdir = Cwd::abs_path("$SRCDIR/..");
++    # Check if builddir is a subdir of srcdir
++    my ($abspath,$relpath) = split /\s*$abssrcdir\/\s*/, $absbuilddir, 2;
++
+     foreach (@buf_allfiles_sorted)
+     {
+         my $dummy = $_;
+@@ -628,7 +636,10 @@ sub FindLeftoutFiles
+         $srcdir =~ s#^../##;
+         $dummy =~ s#^$srcdir/../##;
+         $dummy =~ s#^$srcdir/##;
+-        $dummy =~ s#_build/##;
++        if ($relpath)
++        {
++            $dummy =~ s#^$relpath/##;
++        }
+ 	if (!exists($in2{$dummy}))
+ 	{
+ 	    push @result, $dummy
-- 
cgit v0.12

