After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 743967 - Make build results reproducible
Make build results reproducible
Status: RESOLVED FIXED
Product: gtk-doc
Classification: Platform
Component: general
unspecified
Other All
: Normal normal
: 1.22
Assigned To: gtk-doc maintainers
gtk-doc maintainers
Depends on:
Blocks:
 
 
Reported: 2015-02-04 08:52 UTC by Dominique Leuenberger
Modified: 2015-02-04 18:08 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Make build results reproducible (1.23 KB, patch)
2015-02-04 08:52 UTC, Dominique Leuenberger
reviewed Details | Review
Make build results reproducible (1.29 KB, patch)
2015-02-04 12:11 UTC, Dominique Leuenberger
committed Details | Review
gtkdoc-mkdb: make build results reproducible (1.03 KB, patch)
2015-02-04 18:08 UTC, Stefan Sauer (gstreamer, gtkdoc dev)
committed Details | Review

Description Dominique Leuenberger 2015-02-04 08:52:33 UTC
Various distributions (openSUSE, Debian at least) put value on builds
    that have a defined result in multiple passes (for different reasons).
    
    - Debian uses it as a trust factory, that the user can reproduce binary
      equal files from the sources
    - openSUSE likes that part too, but also uses it to decide a package
      does not need to be published after an eventual rebuild (auto
      triggered).
Comment 1 Dominique Leuenberger 2015-02-04 08:52:35 UTC
Created attachment 296076 [details] [review]
Make build results reproducible

Various distributions (openSUSE, Debian at least) put value on builds
that have a defined result in multiple passes (for different reasons).

- Debian uses it as a trust factory, that the user can reproduce binary
  equal files from the sources
- openSUSE likes that part too, but also uses it to decide a package
  does not need to be published after an eventual rebuild (auto
  triggered).
Comment 2 Stefan Sauer (gstreamer, gtkdoc dev) 2015-02-04 12:04:56 UTC
Review of attachment 296076 [details] [review]:

Thanks for the patch! Could you please edit the patch description and tell instead what problem it fixes? Sounds like the index lists where not stable?
Comment 3 Dominique Leuenberger 2015-02-04 12:11:45 UTC
Created attachment 296094 [details] [review]
Make build results reproducible

Generate gtk-doc links in a stable order.

Background:
Various distributions (openSUSE, Debian at least) put value on builds
that have a defined result in multiple passes (for different reasons).

- Debian uses it as a trust factor, that the user can reproduce binary
  equal files from the sources
- openSUSE likes that part too, but also uses it to decide a package
  does not need to be published after an eventual rebuild (auto
  triggered).
Comment 4 Stefan Sauer (gstreamer, gtkdoc dev) 2015-02-04 16:18:14 UTC
Do you have an example where your patch fixes something. You basically use the symbol-name as a 2nd sorting criteria if the symbol-ids are the same. The symbol-ids should be unique though. I am wondering if you actually found a different bug and here we're just fixing some of the side-effects.

Also for the patch description - the whole background part is covered by the report, please strip it from the patch doc. Of course we want stable builds, nobody does these things intentionally :)
Comment 5 Dominique Leuenberger 2015-02-04 16:38:05 UTC
A case where the patch helps us to get more standard output was building gril:

the diff we get with the patch is:

[  265s] -<a class="link" href="grilo-grl-log.html#grl-log-domain-free" title="grl_log_domain_free ()">grl_log_domain_free</a>, function in <a class="link" href="grilo-grl-log.html" title="grl-log">grl-log</a>
[  265s] +<a class="link" href="grilo-grl-log.html#GRL-LOG-DOMAIN-FREE:CAPS" title="GRL_LOG_DOMAIN_FREE()">GRL_LOG_DOMAIN_FREE</a>, macro in <a class="link" href="grilo-grl-log.html" title="grl-log">grl-log</a>
[  265s]  </dt>
[  265s]  <dd></dd>
[  265s]  <dt>
[  265s] -<a class="link" href="grilo-grl-log.html#GRL-LOG-DOMAIN-FREE:CAPS" title="GRL_LOG_DOMAIN_FREE()">GRL_LOG_DOMAIN_FREE</a>, macro in <a class="link" href="grilo-grl-log.html" title="grl-log">grl-log</a>
[  265s] +<a class="link" href="grilo-grl-log.html#grl-log-domain-free" title="grl_log_domain_free ()">grl_log_domain_free</a>, function in <a class="link" href="grilo-grl-log.html" title="grl-log">grl-log</a>

Some more info can also be found at https://reproducible.debian.net/issues/gtk_doc_api_index_full_issue.html
Comment 6 Stefan Sauer (gstreamer, gtkdoc dev) 2015-02-04 16:48:04 UTC
Okay, tnaks for the example, I'll update the patch description and push it. The issue is that the key comparison is case insensitive.
Comment 7 Stefan Sauer (gstreamer, gtkdoc dev) 2015-02-04 18:08:39 UTC
The following fix has been pushed:
6658fbd gtkdoc-mkdb: make build results reproducible
Comment 8 Stefan Sauer (gstreamer, gtkdoc dev) 2015-02-04 18:08:46 UTC
Created attachment 296145 [details] [review]
gtkdoc-mkdb: make build results reproducible

Generate stable index order by also considering the case sensitive symbol as a
2nd order sort criteria. The first order criteria is compared case insensitive.