Bug#950444: #950444: intltool: race condition with cache files
Vagrant Cascadian
vagrant at reproducible-builds.org
Fri Nov 20 21:08:58 GMT 2020
On 2020-11-15, Vagrant Cascadian wrote:
> On 2020-09-28, Vagrant Cascadian wrote:
>> On 2020-02-01, Vagrant Cascadian wrote:
>>> 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_due_to_intltool_merge_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 submitted a merge request to the gnome-team for the original patch,
>> with some minor typos fixed in the commit message:
>>
>> https://salsa.debian.org/gnome-team/intltool/-/merge_requests/2
>>
>>
>> While there has been no upstream release of intltool in quite some
>> years, this patch has been in upstream revision control since 2017 (as
>> of now, it is the *only* patch that isn't already in the version in
>> Debian).
>>
>> Please consider merging this patch and uploading, as it should fix
>> reproducibility issues for several other packages. Or would you consider
>> it acceptible to NMU?
>
> I would like to proceed with an NMU in a few days, as this is a
> non-deterministic race condition that affects reproducibility in several
> other packages in Debian, and would be very nice to have resolved in
> time for bullseye. Please let me know if I should hold off.
Uploaded to DELAYED 10.
Merge request:
https://salsa.debian.org/gnome-team/intltool/-/merge_requests/3
Debdiff:
diff -Nru intltool-0.51.0/debian/changelog intltool-0.51.0/debian/changelog
--- intltool-0.51.0/debian/changelog 2017-12-21 19:23:13.000000000 -0800
+++ intltool-0.51.0/debian/changelog 2020-11-20 12:53:23.000000000 -0800
@@ -1,3 +1,17 @@
+intltool (0.51.0-5.1) unstable; urgency=medium
+
+ * Non-maintainer upload.
+
+ [ Jeremy Bicha ]
+ * Update Vcs fields for migration to https://salsa.debian.org/
+
+ [ Vagrant Cascadian ]
+ * 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 (Closes: #950444).
+
+ -- Vagrant Cascadian <vagrant at reproducible-builds.org> Fri, 20 Nov 2020 12:53:23 -0800
+
intltool (0.51.0-5) unstable; urgency=medium
* Update Vcs fields for conversion to git
diff -Nru intltool-0.51.0/debian/control intltool-0.51.0/debian/control
--- intltool-0.51.0/debian/control 2017-12-21 19:23:13.000000000 -0800
+++ intltool-0.51.0/debian/control 2020-11-20 12:53:23.000000000 -0800
@@ -1,5 +1,5 @@
# This file is autogenerated. DO NOT EDIT!
-#
+#
# Modifications should be made to debian/control.in instead.
# This file is regenerated automatically in the clean target.
Source: intltool
@@ -12,8 +12,8 @@
perl (>= 5.8.1)
Build-Depends-Indep: libxml-parser-perl
Standards-Version: 4.1.2
-Vcs-Git: https://anonscm.debian.org/git/pkg-gnome/intltool.git
-Vcs-Browser: https://anonscm.debian.org/git/pkg-gnome/intltool.git
+Vcs-Browser: https://salsa.debian.org/gnome-team/intltool
+Vcs-Git: https://salsa.debian.org/gnome-team/intltool.git
Homepage: https://launchpad.net/intltool
Package: intltool
diff -Nru intltool-0.51.0/debian/control.in intltool-0.51.0/debian/control.in
--- intltool-0.51.0/debian/control.in 2017-12-21 19:23:13.000000000 -0800
+++ intltool-0.51.0/debian/control.in 2020-11-20 12:51:46.000000000 -0800
@@ -8,8 +8,8 @@
perl (>= 5.8.1)
Build-Depends-Indep: libxml-parser-perl
Standards-Version: 4.1.2
-Vcs-Git: https://anonscm.debian.org/git/pkg-gnome/intltool.git
-Vcs-Browser: https://anonscm.debian.org/git/pkg-gnome/intltool.git
+Vcs-Browser: https://salsa.debian.org/gnome-team/intltool
+Vcs-Git: https://salsa.debian.org/gnome-team/intltool.git
Homepage: https://launchpad.net/intltool
Package: intltool
diff -Nru intltool-0.51.0/debian/patches/0001-Avoid-a-race-where-some-processes-try-to-use-a-parti.patch intltool-0.51.0/debian/patches/0001-Avoid-a-race-where-some-processes-try-to-use-a-parti.patch
--- intltool-0.51.0/debian/patches/0001-Avoid-a-race-where-some-processes-try-to-use-a-parti.patch 1969-12-31 16:00:00.000000000 -0800
+++ intltool-0.51.0/debian/patches/0001-Avoid-a-race-where-some-processes-try-to-use-a-parti.patch 2020-11-20 12:51:46.000000000 -0800
@@ -0,0 +1,57 @@
+From 97c9854c9ffe34d5fb4c8e928530c9a41b8e1a35 Mon Sep 17 00:00:00 2001
+From: "Bernhard M. Wiedemann" <bmwiedemann+bzrcommit at 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 -Nru intltool-0.51.0/debian/patches/series intltool-0.51.0/debian/patches/series
--- intltool-0.51.0/debian/patches/series 2017-12-21 19:23:13.000000000 -0800
+++ intltool-0.51.0/debian/patches/series 2020-11-20 12:51:46.000000000 -0800
@@ -1 +1,2 @@
perl5.26-regex-fixes.patch
+0001-Avoid-a-race-where-some-processes-try-to-use-a-parti.patch
diff -Nru intltool-0.51.0/debian/rules intltool-0.51.0/debian/rules
--- intltool-0.51.0/debian/rules 2017-12-21 19:23:13.000000000 -0800
+++ intltool-0.51.0/debian/rules 2020-11-20 12:51:46.000000000 -0800
@@ -1,5 +1,4 @@
#!/usr/bin/make -f
-
-include /usr/share/gnome-pkg-tools/1/rules/lp-get-source.mk
%:
live well,
vagrant
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 227 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-gnome-maintainers/attachments/20201120/14328706/attachment-0001.sig>
More information about the pkg-gnome-maintainers
mailing list