Package: intltool Version: 0.51.0-5 Severity: normal Tags: patch User: reproducible-bui...@lists.alioth.debian.org Usertags: toolchain randomness X-Debbugs-Cc: reproducible-b...@lists.alioth.debian.org Control: affects -1 exo Control: affects -1 garcon
A fix for a race condition was submitted upstream. The effects result in partial or completely missing translations. The Reproducible Builds folks have identified over twenty packages which may be affected: https://tests.reproducible-builds.org/debian/issues/unstable/translations_missing_in_desktop_files_issue.html The fix was submitted and merged upstream some years ago, but a new release was never made: https://bugs.launchpad.net/intltool/+bug/1687644 https://bazaar.launchpad.net/~intltool/intltool/trunk/revision/748 I've done several tests building "exo" and "garcon" packages on multiple machines with varying environments, and the attached patch appears to work. Thanks for maintaining intltool! live well, vagrant
From ea5b70f1aae8115595226a9f2e23d3bb2c98bdd4 Mon Sep 17 00:00:00 2001 From: Vagrant Cascadian <vagr...@reproducible-builds.org> Date: Sat, 1 Feb 2020 10:13:30 -0800 Subject: [PATCH] debian/patches: Add patch from upstream to fix race intltool race condition end up using a partial cache, resulting in missing translations in some cases. --- ...re-some-processes-try-to-use-a-parti.patch | 57 +++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 58 insertions(+) create mode 100644 debian/patches/0001-Avoid-a-race-where-some-processes-try-to-use-a-parti.patch diff --git a/debian/patches/0001-Avoid-a-race-where-some-processes-try-to-use-a-parti.patch b/debian/patches/0001-Avoid-a-race-where-some-processes-try-to-use-a-parti.patch new file mode 100644 index 0000000..d5998c9 --- /dev/null +++ b/debian/patches/0001-Avoid-a-race-where-some-processes-try-to-use-a-parti.patch @@ -0,0 +1,57 @@ +From 97c9854c9ffe34d5fb4c8e928530c9a41b8e1a35 Mon Sep 17 00:00:00 2001 +From: "Bernhard M. Wiedemann" <bmwiedemann+bzrcom...@suse.de> +Date: Thu, 18 May 2017 21:09:18 +0200 +Origin: https://bazaar.launchpad.net/~intltool/intltool/trunk/revision/748 + https://bugs.launchpad.net/intltool/+bug/1687644 +Subject: [PATCH] Avoid a race where some processes try to use a partial cache + file that is still being written to. Note that we release the lock before + load_cache, because if we got the lock, the cache is already completely + written and it is OK to have multiple parallel readers + +Without this patch, translation files would randomly miss translations +for some or all languages. + +fixes bug #1687644 +maybe also bug #986897 +--- + intltool-merge.in | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/intltool-merge.in b/intltool-merge.in +index 05db7cf..89923a7 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 +-- +2.20.1 + diff --git a/debian/patches/series b/debian/patches/series index 4ca6c6d..7ccf586 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,2 @@ perl5.26-regex-fixes.patch +0001-Avoid-a-race-where-some-processes-try-to-use-a-parti.patch -- 2.20.1
signature.asc
Description: PGP signature