Bug 1174795 - httpcomponents-client javadoc output varies from readdir order
Summary: httpcomponents-client javadoc output varies from readdir order
Status: NEW
Alias: None
Product: openSUSE Tumbleweed
Classification: openSUSE
Component: Development (show other bugs)
Version: Current
Hardware: Other All
: P5 - None : Normal (vote)
Target Milestone: ---
Assignee: Fridrich Strba
QA Contact: E-mail List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 1041090
  Show dependency treegraph
 
Reported: 2020-08-02 04:18 UTC by Bernhard Wiedemann
Modified: 2022-04-08 16:37 UTC (History)
0 users

See Also:
Found By: Development
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Bernhard Wiedemann 2020-08-02 04:18:06 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) {
Comment 1 Fridrich Strba 2022-04-08 05:20:02 UTC
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.
Comment 2 Bernhard Wiedemann 2022-04-08 16:37:14 UTC
> 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)