diff --git a/intltool-cache-race.patch b/intltool-cache-race.patch deleted file mode 100644 index e77abde..0000000 --- a/intltool-cache-race.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 7355bdbca18c95a2b99cb254434ad2c2248d6747 Mon Sep 17 00:00:00 2001 -From: Gianfranco Costamagna -Date: Wed, 2 Dec 2020 16:52:53 +0100 -Subject: [PATCH] [PATCH] Avoid a race where some processes try to use a - partial cache - -Gbp-Pq: 0001-Avoid-a-race-where-some-processes-try-to-use-a-parti.patch. ---- - intltool-merge.in | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/intltool-merge.in b/intltool-merge.in -index 05db7cf930..89923a7da1 100644 ---- a/intltool-merge.in -+++ b/intltool-merge.in -@@ -43,6 +43,7 @@ use Getopt::Long; - use Text::Wrap; - use File::Basename; - use Encode; -+use Fcntl qw(:flock); - - my $must_end_tag = -1; - my $last_depth = -1; -@@ -392,11 +393,14 @@ sub load_cache - - sub get_cached_translation_database - { -+ open(my $lockfh, ">", "$cache_file.lock") or die $!; -+ flock($lockfh, LOCK_EX) or die "Could not lock '$cache_file.lock' - $!"; - my $cache_file_age = -M $cache_file; - if (defined $cache_file_age) - { - if ($cache_file_age <= &get_newest_po_age) - { -+ close($lockfh); - &load_cache; - return; - } -@@ -404,6 +408,7 @@ sub get_cached_translation_database - } - - &create_cache; -+ close($lockfh); - } - - sub add_translation diff --git a/intltool.spec b/intltool.spec index 36f5fc4..597af02 100644 --- a/intltool.spec +++ b/intltool.spec @@ -18,18 +18,19 @@ BuildRequires: perl(Getopt::Long) BuildRequires: perl(XML::Parser) BuildRequires: gettext BuildRequires: make - +# http://bugzilla.gnome.org/show_bug.cgi?id=568845 +# Dropping this patch per the last comment on that thread: +# Martin Pitt: As the reporter of the bug I close this, as the new API du jour is gsettings, +# which has a sensible gettext integration. +#Patch0: schemas-merge.patch # Fix intltool-update to work with perl 5.26. Patch taken from # Debian's intltool_0.51.0-4.debian.tar.xz -Patch: intltool-perl5.26-regex-fixes.patch +Patch1: intltool-perl5.26-regex-fixes.patch # https://bugs.launchpad.net/intltool/+bug/1505260 # https://bugzilla.redhat.com/show_bug.cgi?id=1249051 -Patch: intltool-merge-Create-cache-file-atomically.patch +Patch2: intltool-merge-Create-cache-file-atomically.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1318674 -Patch: intltool_distcheck-fix.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=2268342 -# https://bugs.launchpad.net/intltool/+bug/1687644 -Patch: intltool-cache-race.patch +Patch3: intltool_distcheck-fix.patch %description This tool automatically extracts translatable strings from oaf, glade, @@ -37,7 +38,10 @@ bonobo ui, nautilus theme, .desktop, and other data files and puts them in the po files. %prep -%autosetup -p1 +%setup -q +%patch 1 -p1 +%patch 2 -p1 +%patch 3 -p1 %build %configure diff --git a/schemas-merge.patch b/schemas-merge.patch new file mode 100644 index 0000000..caa1e3c --- /dev/null +++ b/schemas-merge.patch @@ -0,0 +1,153 @@ +diff -up intltool-0.40.6/intltool-merge.in.schemas intltool-0.40.6/intltool-merge.in +--- intltool-0.40.6/intltool-merge.in.schemas 2009-02-14 17:12:28.000000000 -0500 ++++ intltool-0.40.6/intltool-merge.in 2009-04-27 01:41:11.099450891 -0400 +@@ -38,8 +38,9 @@ my $PACKAGE = "@PACKAGE@"; + my $VERSION = "@VERSION@"; + + ## Loaded modules +-use strict; ++use strict; + use Getopt::Long; ++use Cwd; + use Text::Wrap; + use File::Basename; + use Encode; +@@ -68,6 +69,9 @@ my $PASS_THROUGH_ARG = 0; + my $UTF8_ARG = 0; + my $MULTIPLE_OUTPUT = 0; + my $cache_file; ++my $GETTEXT_PACKAGE = ""; ++my %varhash = (); ++my $SRCDIR = $ENV{"srcdir"} || "."; + + ## Handle options + GetOptions +@@ -87,7 +91,8 @@ GetOptions + "pass-through|p" => \$PASS_THROUGH_ARG, + "utf8|u" => \$UTF8_ARG, + "multiple-output|m" => \$MULTIPLE_OUTPUT, +- "cache|c=s" => \$cache_file ++ "cache|c=s" => \$cache_file, ++ "gettext-package|g=s" => \$GETTEXT_PACKAGE + ) or &error; + + my $PO_DIR; +@@ -103,6 +108,8 @@ my $w = "[-A-Za-z0-9._:]"; + # XML quoted string contents + my $q = "[^\\\"]*"; + ++my $MODULE = $GETTEXT_PACKAGE || FindPackageName() || "unknown"; ++ + ## Check for options. + + if ($VERSION_ARG) +@@ -216,6 +223,8 @@ Other options: + a single file containing all localized elements + -c, --cache=FILE specify cache file name + (usually \$top_builddir/po/.intltool-merge-cache) ++ -g, --gettext-package=NAME ++ specify gettext domain, needed for --schemas-style + -q, --quiet suppress most messages + --help display this help and exit + --version output version information and exit +@@ -241,6 +250,25 @@ sub print_message + } + + ++sub FindPackageName ++{ ++ my $name = ""; ++ ++ my $conf_source; { ++ local (*IN); ++ open (IN, "; ++ close IN; ++ } ++ ++ $name = $1 if $conf_source =~ /^GETTEXT_PACKAGE = \[?([^\n\]]+)/m; ++ ++ return $name if $name; ++} ++ ++ + sub preparation + { + $PO_DIR = $ARGV[0]; +@@ -1246,50 +1274,41 @@ sub schemas_merge_translations + my $short_string = $9 ? $9 : ''; + my $long_string = $12 ? $12 : ''; + +- print OUTPUT "$locale_start_spaces$c_default_block"; +- + $default_string =~ s/\s+/ /g; +- $default_string = entity_decode($default_string); + $short_string =~ s/\s+/ /g; +- $short_string = entity_decode($short_string); + $long_string =~ s/\s+/ /g; +- $long_string = entity_decode($long_string); + +- for my $lang (sort keys %po_files_by_lang) +- { +- my $default_translation = $translations{$lang, $default_string}; +- my $short_translation = $translations{$lang, $short_string}; +- my $long_translation = $translations{$lang, $long_string}; +- +- next if (!$default_translation && !$short_translation && +- !$long_translation); +- +- print OUTPUT "\n$locale_start_spaces"; ++ print OUTPUT "$locale_start_spaces$MODULE"; + ++ print OUTPUT "$locale_start_spaces"; + print OUTPUT "$default_spaces"; +- +- if ($default_translation) +- { +- $default_translation = entity_encode($default_translation); +- print OUTPUT "$default_translation"; ++ if ($default_string) { ++ print OUTPUT "$default_string"; + } ++ print OUTPUT "$short_spaces"; ++ if ($short_string) { ++ print OUTPUT "$short_string"; ++ } ++ print OUTPUT "$long_spaces"; ++ if ($long_string) { ++ print OUTPUT "$long_string"; ++ } ++ print OUTPUT "$locale_end_spaces"; + +- print OUTPUT "$short_spaces"; ++ $default_string = entity_decode($default_string); ++ $short_string = entity_decode($short_string); ++ $long_string = entity_decode($long_string); + +- if ($short_translation) +- { +- $short_translation = entity_encode($short_translation); +- print OUTPUT "$short_translation"; +- } ++ for my $lang (sort keys %po_files_by_lang) ++ { ++ my $default_translation = $translations{$lang, $default_string}; + +- print OUTPUT "$long_spaces"; ++ next if (!$default_translation || ($default_translation eq $default_string)); + +- if ($long_translation) +- { +- $long_translation = entity_encode($long_translation); +- print OUTPUT "$long_translation"; +- } ++ $default_translation = entity_encode($default_translation); + ++ print OUTPUT "\n$locale_start_spaces"; ++ print OUTPUT "$default_spaces$default_translation"; + print OUTPUT "$locale_end_spaces"; + } + } +diff -up intltool-0.40.6/tests/results/test.schemas intltool-0.40.6/tests/results/test