Debian Bug report logs - #851809
mono: please make the output of dh_makeclilibs reproducible

version graph

Package: src:mono; Maintainer for src:mono is Debian Mono Group <pkg-mono-group@lists.alioth.debian.org>;

Reported by: Chris Lamb <lamby@debian.org>

Date: Wed, 18 Jan 2017 22:57:01 UTC

Severity: wishlist

Tags: patch

Found in version mono/4.6.2.7+dfsg-1

Reply or subscribe to this bug.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, reproducible-bugs@lists.alioth.debian.org, Debian Mono Group <pkg-mono-group@lists.alioth.debian.org>:
Bug#851809; Package src:mono. (Wed, 18 Jan 2017 22:57:04 GMT) (full text, mbox, link).


Acknowledgement sent to Chris Lamb <lamby@debian.org>:
New Bug report received and forwarded. Copy sent to reproducible-bugs@lists.alioth.debian.org, Debian Mono Group <pkg-mono-group@lists.alioth.debian.org>. (Wed, 18 Jan 2017 22:57:04 GMT) (full text, mbox, link).


Message #5 received at submit@bugs.debian.org (full text, mbox, reply):

From: Chris Lamb <lamby@debian.org>
To: submit@bugs.debian.org
Subject: mono: please make the output of dh_makeclilibs reproducible
Date: Wed, 18 Jan 2017 22:53:37 +0000
[Message part 1 (text/plain, inline)]
Source: mono
Version: 4.6.2.7+dfsg-1
Severity: wishlist
Tags: patch
User: reproducible-builds@lists.alioth.debian.org
Usertags: randomness toolchain
X-Debbugs-Cc: reproducible-bugs@lists.alioth.debian.org

Hi,

Whilst working on the Reproducible Builds effort [0], we noticed
that dh_makeclilibs generates "clilibs" files with a non-deterministic
order.

This affects packages such as gtk-sharp-beans. For example:

│ -gtk-sharp-beans 2.14.0.0__97a95fb57b03c03a libgtk-sharp-beans-cil
│  gio-sharp 2.14.0.0__35e10195dab3c99f libgtk-sharp-beans-cil
│ +gtk-sharp-beans 2.14.0.0__97a95fb57b03c03a libgtk-sharp-beans-cil

Patch attached.

 [0] https://reproducible-builds.org/


Regards,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      lamby@debian.org / chris-lamb.co.uk
       `-
[mono.diff.txt (text/plain, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Debian Mono Group <pkg-mono-group@lists.alioth.debian.org>:
Bug#851809; Package src:mono. (Sat, 18 Feb 2017 21:57:10 GMT) (full text, mbox, link).


Acknowledgement sent to Chris Lamb <lamby@debian.org>:
Extra info received and forwarded to list. Copy sent to Debian Mono Group <pkg-mono-group@lists.alioth.debian.org>. (Sat, 18 Feb 2017 21:57:10 GMT) (full text, mbox, link).


Message #10 received at 851809@bugs.debian.org (full text, mbox, reply):

From: Chris Lamb <lamby@debian.org>
To: 851809@bugs.debian.org
Subject: Re: Bug#851809: mono: please make the output of dh_makeclilibs reproducible
Date: Sun, 19 Feb 2017 10:56:33 +1300
> Would you consider applying this patch and uploading?

Friendly ping on this :)


Best wishes,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      lamby@debian.org / chris-lamb.co.uk
       `-



Reply sent to Vagrant Cascadian <vagrant@reproducible-builds.org>:
You have taken responsibility. (Sun, 31 May 2020 06:06:03 GMT) (full text, mbox, link).


Notification sent to Chris Lamb <lamby@debian.org>:
Bug acknowledged by developer. (Sun, 31 May 2020 06:06:03 GMT) (full text, mbox, link).


Message #15 received at 851809-done@bugs.debian.org (full text, mbox, reply):

From: Vagrant Cascadian <vagrant@reproducible-builds.org>
To: Chris Lamb <lamby@debian.org>, 851809-done@bugs.debian.org
Subject: Re: Bug#851809: mono: please make the output of dh_makeclilibs reproducible
Date: Sat, 30 May 2020 23:02:43 -0700
[Message part 1 (text/plain, inline)]
Version: 4.6.2.7+dfsg-2

It looks like this was fixed some time ago:

  84aa977e3d2275a8cc43e21398dc90d01fb21b04
  Sort dh_makeclilibs output so it's deterministic. Thanks to Chris Lamb

Though a corresponding message and bug number didn't make it into
debian/changelog.

Marking as done.


live well,
  vagrant

On 2017-01-18, Chris Lamb wrote:
> Source: mono
> Version: 4.6.2.7+dfsg-1
> Severity: wishlist
> Tags: patch
> User: reproducible-builds@lists.alioth.debian.org
> Usertags: randomness toolchain
> X-Debbugs-Cc: reproducible-bugs@lists.alioth.debian.org
>
> Hi,
>
> Whilst working on the Reproducible Builds effort [0], we noticed
> that dh_makeclilibs generates "clilibs" files with a non-deterministic
> order.
>
> This affects packages such as gtk-sharp-beans. For example:
>
> │ -gtk-sharp-beans 2.14.0.0__97a95fb57b03c03a libgtk-sharp-beans-cil
> │  gio-sharp 2.14.0.0__35e10195dab3c99f libgtk-sharp-beans-cil
> │ +gtk-sharp-beans 2.14.0.0__97a95fb57b03c03a libgtk-sharp-beans-cil
>
> Patch attached.
>
>  [0] https://reproducible-builds.org/
>
>
> Regards,
>
> -- 
>       ,''`.
>      : :'  :     Chris Lamb
>      `. `'`      lamby@debian.org / chris-lamb.co.uk
>        `-
> diff --git a/debian/dh_makeclilibs b/debian/dh_makeclilibs
> index 976fd75..17cfa88 100755
> --- a/debian/dh_makeclilibs
> +++ b/debian/dh_makeclilibs
> @@ -297,6 +297,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
>      if (-e "$tmp/DEBIAN/clilibs") {
>          doit("chmod", 644,   "$tmp/DEBIAN/clilibs");
>          doit("chown", "0:0", "$tmp/DEBIAN/clilibs");
> +        complex_doit("LC_ALL=C sort $tmp/DEBIAN/clilibs -o $tmp/DEBIAN/clilibs");
>      }
>  }
>  
> _______________________________________________
> Reproducible-bugs mailing list
> Reproducible-bugs@lists.alioth.debian.org
> https://lists.alioth.debian.org/mailman/listinfo/reproducible-bugs
[signature.asc (application/pgp-signature, inline)]

Bug archived. Request was from Debbugs Internal Request <owner@bugs.debian.org> to internal_control@bugs.debian.org. (Sun, 28 Jun 2020 07:24:45 GMT) (full text, mbox, link).


Bug unarchived. Request was from "Chris Lamb" <lamby@debian.org> to control@bugs.debian.org. (Thu, 28 Apr 2022 15:33:04 GMT) (full text, mbox, link).


Bug reopened Request was from "Chris Lamb" <lamby@debian.org> to control@bugs.debian.org. (Thu, 28 Apr 2022 15:39:02 GMT) (full text, mbox, link).


No longer marked as fixed in versions 4.6.2.7+dfsg-2. Request was from "Chris Lamb" <lamby@debian.org> to control@bugs.debian.org. (Thu, 28 Apr 2022 15:39:03 GMT) (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Debian Mono Group <pkg-mono-group@lists.alioth.debian.org>:
Bug#851809; Package src:mono. (Thu, 28 Apr 2022 15:45:02 GMT) (full text, mbox, link).


Acknowledgement sent to "Chris Lamb" <lamby@debian.org>:
Extra info received and forwarded to list. Copy sent to Debian Mono Group <pkg-mono-group@lists.alioth.debian.org>. (Thu, 28 Apr 2022 15:45:02 GMT) (full text, mbox, link).


Message #28 received at 851809@bugs.debian.org (full text, mbox, reply):

From: "Chris Lamb" <lamby@debian.org>
To: "Vagrant Cascadian" <vagrant@reproducible-builds.org>, 851809@bugs.debian.org
Subject: Re: Bug#851809: mono: please make the output of dh_makeclilibs reproducible
Date: Thu, 28 Apr 2022 08:34:18 -0700
reopen 851809
thanks

Hi Vagrant,

> Version: 4.6.2.7+dfsg-2
>
> It looks like this was fixed some time ago:
>
>   84aa977e3d2275a8cc43e21398dc90d01fb21b04
>   Sort dh_makeclilibs output so it's deterministic. Thanks to Chris Lamb

Interesting. I don't see this commit SHA in the cli-common.git
repository, nor some associated change in dh_makeclilibs under a
different SHA.

But whatever the historical Git archaeology, the bug is still
affecting packages — de4dot, for example.

Hope we can get this resolved soon. If it helps, a simpler patch might
even be:

  @@ -187,7 +187,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
           if (defined($dh{EXCLUDE_FIND}) && $dh{EXCLUDE_FIND} ne '') {
               $exclude = "! \\( $dh{EXCLUDE_FIND} \\) ";
           }
  -        open(FIND, "find $tmp -type f \\( -name '*.dll' \\) $exclude |");
  +        open(FIND, "find $tmp -type f \\( -name '*.dll' \\) $exclude | sort |");
           
           dll:
           while (<FIND>) {


Regards,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      lamby@debian.org 🍥 chris-lamb.co.uk
       `-




Information forwarded to debian-bugs-dist@lists.debian.org, Debian Mono Group <pkg-mono-group@lists.alioth.debian.org>:
Bug#851809; Package src:mono. (Thu, 28 Apr 2022 16:42:05 GMT) (full text, mbox, link).


Acknowledgement sent to Vagrant Cascadian <vagrant@reproducible-builds.org>:
Extra info received and forwarded to list. Copy sent to Debian Mono Group <pkg-mono-group@lists.alioth.debian.org>. (Thu, 28 Apr 2022 16:42:05 GMT) (full text, mbox, link).


Message #33 received at 851809@bugs.debian.org (full text, mbox, reply):

From: Vagrant Cascadian <vagrant@reproducible-builds.org>
To: Chris Lamb <lamby@debian.org>, 851809@bugs.debian.org
Subject: Re: Bug#851809: mono: please make the output of dh_makeclilibs reproducible
Date: Thu, 28 Apr 2022 09:39:25 -0700
[Message part 1 (text/plain, inline)]
On 2022-04-28, Chris Lamb wrote:
>> Version: 4.6.2.7+dfsg-2
>>
>> It looks like this was fixed some time ago:
>>
>>   84aa977e3d2275a8cc43e21398dc90d01fb21b04
>>   Sort dh_makeclilibs output so it's deterministic. Thanks to Chris Lamb
>
> Interesting. I don't see this commit SHA in the cli-common.git
> repository, nor some associated change in dh_makeclilibs under a
> different SHA.

https://salsa.debian.org/dotnet-team/mono/-/commit/84aa977e3d2275a8cc43e21398dc90d01fb21b04

Was this functionality moved to cli-common somehow?


> But whatever the historical Git archaeology, the bug is still
> affecting packages — de4dot, for example.

Looking at the history of de4dot, it seems consistantly reproducible on
amd64 and arm64, but consistantly unreproducible on i386 and armhf:

  https://tests.reproducible-builds.org/debian/history/amd64/de4dot.html
  https://tests.reproducible-builds.org/debian/history/i386/de4dot.html

So the obvious difference here is 32-bit vs. 64-bit... a non-obvious
difference is choice of locale for each architecture for
tests.reproducible-builds.org infrastructure differs.

Looking at the history for the originally referenced gtk-sharp-beans is
a little less consistant, but still more frequently unreproducible on
i386/armhf:

  https://tests.reproducible-builds.org/debian/history/amd64/gtk-sharp-beans.html
  https://tests.reproducible-builds.org/debian/history/i386/gtk-sharp-beans.html


> Hope we can get this resolved soon. If it helps, a simpler patch might
> even be:
>
>   @@ -187,7 +187,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
>            if (defined($dh{EXCLUDE_FIND}) && $dh{EXCLUDE_FIND} ne '') {
>                $exclude = "! \\( $dh{EXCLUDE_FIND} \\) ";
>            }
>   -        open(FIND, "find $tmp -type f \\( -name '*.dll' \\) $exclude |");
>   +        open(FIND, "find $tmp -type f \\( -name '*.dll' \\) $exclude | sort |");
>            
>            dll:
>            while (<FIND>) {


I wonder if you wouldn't also want to specify the locale to sort here?


live well,
  vagrant
[signature.asc (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Debian Mono Group <pkg-mono-group@lists.alioth.debian.org>:
Bug#851809; Package src:mono. (Thu, 28 Apr 2022 17:00:06 GMT) (full text, mbox, link).


Acknowledgement sent to "Chris Lamb" <lamby@debian.org>:
Extra info received and forwarded to list. Copy sent to Debian Mono Group <pkg-mono-group@lists.alioth.debian.org>. (Thu, 28 Apr 2022 17:00:06 GMT) (full text, mbox, link).


Message #38 received at 851809@bugs.debian.org (full text, mbox, reply):

From: "Chris Lamb" <lamby@debian.org>
To: "Vagrant Cascadian" <vagrant@reproducible-builds.org>, 851809@bugs.debian.org
Subject: Re: Bug#851809: mono: please make the output of dh_makeclilibs reproducible
Date: Thu, 28 Apr 2022 09:57:54 -0700
Hey,

>> Interesting. I don't see this commit SHA in the cli-common.git
>> repository, nor some associated change in dh_makeclilibs under a
>> different SHA.
>
> https://salsa.debian.org/dotnet-team/mono/-/commit/84aa977e3d2275a8cc43e21398dc90d01fb21b04
>
> Was this functionality moved to cli-common somehow?

Ah yes, or the issue is the other way around — the dh_makeclilibs in
the Mono repository (linked by you above) could originally have been a
code copy of the version in cli-common and has now diverged. The
history of the version in the Mono repository suggests this
interpretation, or the use of "re-synced" suggests that direction
anyway:

  https://salsa.debian.org/dotnet-team/mono/-/commits/master/debian/dh_makeclilibs

The underlying direction doesn't really matter to me though, as the
version in cli-common does not sort. :)

>>   -        open(FIND, "find $tmp -type f \\( -name '*.dll' \\) $exclude |");
>>   +        open(FIND, "find $tmp -type f \\( -name '*.dll' \\) $exclude | sort |");

> I wonder if you wouldn't also want to specify the locale to sort here?

Ah, of course! More importantly, though, the change should be the same
in both versions, so I'd be minded to go with the explicit complex_doit
call. Hah, I think my "if it helps" extra patch didn't actually "help"
at all.


Regards,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      lamby@debian.org 🍥 chris-lamb.co.uk
       `-



Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Wed May 17 14:08:08 2023; Machine Name: bembo

Debian Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.