Bugzilla – Bug 1174795
httpcomponents-client javadoc output varies from readdir order
Last modified: 2022-04-08 16:37:14 UTC
While working on reproducible builds for openSUSE, I found that our httpcomponents-client package randomly varies across builds from nondetermistic filesystem readdir order that influences javadoc index file content: +++ new//usr/share/javadoc/httpcomponents-client/fluent-hc/index-all.html 2019-11-05 10:17:33.328579849 +0000 @@ -212,7 +212,7 @@ <dt><span class="memberNameLink"><a href="org/apache/http/client/fluent/Executor.html#href_anchor">cookieStore(CookieStore)</a></span> - Method in class org.apache.http.client.fluent.<a href="org/apache/http/client/fluent/Executor.html" title="class in org.apache.http.client.fluent">Executor</a></dt> <dd> <div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span> -<div class="deprecationComment">(4.5) Use <a href="org/apache/http/client/fluent/Executor.html#href_anchor"><code>Executor.use(CookieStore)</code></a>.</div> +<div class="deprecationComment">(4.5) Use <a href="org/apache/http/client/fluent/Executor.html#href_anchor"><code>use(CookieStore)</code></a>.</div> +++ new//usr/share/javadoc/httpcomponents-client/fluent-hc/deprecated-list.html 2019-11-05 10:17:33.268579438 +0000 @@ -54,7 +54,7 @@ <div class="deprecationComment">(4.3) do not use.</div> <div class="deprecationComment">(4.3) do not use.</div> <div class="deprecationComment">(4.4)</div> -<div class="deprecationComment">(4.5) Use <a href="org/apache/http/client/fluent/Executor.html#href_anchor"><code>Executor.use(CookieStore)</code></a>.</div> +<div class="deprecationComment">(4.5) Use <a href="org/apache/http/client/fluent/Executor.html#href_anchor"><code>use(CookieStore)</code></a>.</div> <div class="fixedNav"> fluent-hc/src/main/java/org/apache/http/client/fluent/Executor.java has /** * @deprecated (4.5) Use {@link #use(CookieStore)}. */ @Deprecated public Executor cookieStore(final CookieStore cookieStore) {
Now, my question is whether it varies with the same version of Javadoc and all the same invariants on the same system between two builds. Because both generated javadocs actually are correct. if the @link element does not have the <classname> before the #function, the current class is assumed. Here, on my local machine I am not able to reproduce the difference. It shows "Executor.use" in the deprecated list and "use" only within the class comment. Which corresponds to what I would expect. @bwiedemann, could you check whether this is still a problem or whether we can close it.
> Now, my question is whether it varies with the same version of Javadoc > and all the same invariants on the same system between two builds All the BuildRequires are identical. However, since I test with osc build --clean --vm-type=kvm, those are scratch VMs with different ext4 filesystems. To reproduce, you can use for N in 1 2 ; do osc build --clean --vm-type=kvm \ --alternative-project=home:bmwiedemann:reproducible \ openSUSE_Tumbleweed --keep-pkgs=pkgs.$N (cd pkgs.$N && unrpm httpcomponents-client-javadoc-4.5.12-0.noarch.rpm ) done diff -ru -I "Generated by javadoc" \ pkgs.[12]/usr/share/javadoc/httpcomponents-client/ The alternative-project is important for the BuildFlags: vmfsoptions: in https://build.opensuse.org/projects/home:bmwiedemann:reproducible/prjconf because otherwise, OBS builds happen without dirindex (thus a more deterministic readdir order)