Debian Bug report logs - #1000837
krb5: differing build paths trigger different documentation

Package: src:krb5; Maintainer for src:krb5 is Sam Hartman <hartmans@debian.org>;

Reported by: Vagrant Cascadian <vagrant@reproducible-builds.org>

Date: Tue, 30 Nov 2021 00:57:01 UTC

Severity: minor

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, Sam Hartman <hartmans@debian.org>:
Bug#1000837; Package src:krb5. (Tue, 30 Nov 2021 00:57:03 GMT) (full text, mbox, link).


Acknowledgement sent to Vagrant Cascadian <vagrant@reproducible-builds.org>:
New Bug report received and forwarded. Copy sent to reproducible-bugs@lists.alioth.debian.org, Sam Hartman <hartmans@debian.org>. (Tue, 30 Nov 2021 00:57:03 GMT) (full text, mbox, link).


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

From: Vagrant Cascadian <vagrant@reproducible-builds.org>
To: submit@bugs.debian.org
Subject: krb5: differing build paths trigger different documentation
Date: Mon, 29 Nov 2021 16:52:17 -0800
[Message part 1 (text/plain, inline)]
Source: krb5
Severity: minor
User: reproducible-builds@lists.alioth.debian.org
Usertags: buildpath
X-Debbugs-Cc: reproducible-bugs@lists.alioth.debian.org

I have not observed this in the tests.reproducible-builds.org history,
although krb5 currently FTBFS, but when building krb5 locally using
reprotest, I am able to consistently produce a different build that is
triggered when the build path is different between two builds.

To reproduce, from the checked out krb5 debian packaging dir:

  reprotest  --min-cpus=1 --vary=-all,+build_path auto -- null

Which should keep everything essentially identical, except the build
path.


For some odd reason the different build path ends up in one build
consistently removing a space in a few places:

./usr/share/doc/krb5-doc/appdev/refs/api/krb5_get_init_creds_opt_set_pa.html

-<p>This function allows thecaller to supply options for...
+<p>This function allows the caller to supply options for...

"thecaller" vs. "the caller".

Full diffoscope output attached.

I have also attached a patch that works around this issue and builds
reproducibly, but it should not actually be used as it obviously leaves
cruft in the documentation that should not be there.

This is presumably actually a bug in sphinx or doxygen... though I'm not
sure I've observed this behavior in another package, so maybe there is
something specific in the krb5 documentation...


I try to avoid submitting bugs without patches, but this one is baffling
enough I hope to get more eyes on it!


live well,
  vagrant
[experiment-1.diffoscope.out (application/octet-stream, attachment)]
[hackishworkaround.patch (text/x-diff, inline)]
diff --git a/src/include/krb5/krb5.hin b/src/include/krb5/krb5.hin
index 79761f6d2..93864a04c 100644
--- a/src/include/krb5/krb5.hin
+++ b/src/include/krb5/krb5.hin
@@ -4045,7 +4045,7 @@ krb5_build_principal_va(krb5_context context,
  * @param [out] princ           Principal structure
  * @param [in]  rlen            Realm name length
  * @param [in]  realm           Realm name
- * @param [in]  ap              List of char * components, ending with NULL
+ * @param [in]  ap              List of char * components, ending withQNULL
  *
  * Similar to krb5_build_principal(), this function builds a principal name,
  * but its name components are specified as a va_list.
@@ -7011,7 +7011,7 @@ typedef struct _krb5_gic_opt_pa_data {
  * @param [in] attr             Preauthentication option name
  * @param [in] value            Preauthentication option value
  *
- * This function allows the caller to supply options for preauthentication.
+ * This function allows theXcaller to supply options for preauthentication.
  * The values of @a attr and @a value are supplied to each preauthentication
  * module available within @a context.
  */
[signature.asc (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Sam Hartman <hartmans@debian.org>:
Bug#1000837; Package src:krb5. (Wed, 20 Apr 2022 22:09:03 GMT) (full text, mbox, link).


Acknowledgement sent to Vagrant Cascadian <vagrant@reproducible-builds.org>:
Extra info received and forwarded to list. Copy sent to Sam Hartman <hartmans@debian.org>. (Wed, 20 Apr 2022 22:09:03 GMT) (full text, mbox, link).


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

From: Vagrant Cascadian <vagrant@reproducible-builds.org>
To: 1000837@bugs.debian.org
Subject: Re: Bug#1000837: krb5: differing build paths trigger different documentation
Date: Wed, 20 Apr 2022 15:05:33 -0700
[Message part 1 (text/plain, inline)]
On 2021-11-29, Vagrant Cascadian wrote:
> I have not observed this in the tests.reproducible-builds.org history,
> although krb5 currently FTBFS

And now that the FTBFS is fixed, it does appear on
tests.reproducible-builds.org for amd64, i386, arm64 and armhf
architectures for both unstable and experimental, where build paths are
varied:

  https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/diffoscope-results/krb5.html

The same source built in the current testing suite (bookworm) build
reproducibly, where build paths are not varied.


> For some odd reason the different build path ends up in one build
> consistently removing a space in a few places:
>
> ./usr/share/doc/krb5-doc/appdev/refs/api/krb5_get_init_creds_opt_set_pa.html
>
> -<p>This function allows thecaller to supply options for...
> +<p>This function allows the caller to supply options for...
>
> "thecaller" vs. "the caller".
...
> I try to avoid submitting bugs without patches, but this one is baffling
> enough I hope to get more eyes on it!

Still as perplexed as before!


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

Information forwarded to debian-bugs-dist@lists.debian.org:
Bug#1000837; Package src:krb5. (Wed, 20 Apr 2022 23:45:02 GMT) (full text, mbox, link).


Acknowledgement sent to Sam Hartman <hartmans@debian.org>:
Extra info received and forwarded to list. (Wed, 20 Apr 2022 23:45:03 GMT) (full text, mbox, link).


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

From: Sam Hartman <hartmans@debian.org>
To: Vagrant Cascadian <vagrant@reproducible-builds.org>, 1000837@bugs.debian.org
Subject: Re: Bug#1000837: krb5: differing build paths trigger different documentation
Date: Wed, 20 Apr 2022 17:37:54 -0600
Hi.
I've looked over your report and baffling patch.
This is really strange, and I don't have much to add.

It seems like it might be related to the pathsubst rules in
src/doc/Makefile.in.
But I don't see the build directory getting used there.



Information forwarded to debian-bugs-dist@lists.debian.org, Sam Hartman <hartmans@debian.org>:
Bug#1000837; Package src:krb5. (Thu, 28 Apr 2022 16:57:02 GMT) (full text, mbox, link).


Acknowledgement sent to "Chris Lamb" <lamby@debian.org>:
Extra info received and forwarded to list. Copy sent to Sam Hartman <hartmans@debian.org>. (Thu, 28 Apr 2022 16:57:02 GMT) (full text, mbox, link).


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

From: "Chris Lamb" <lamby@debian.org>
To: 1000837@bugs.debian.org
Cc: "Vagrant Cascadian" <vagrant@reproducible-builds.org>, "Sam Hartman" <hartmans@debian.org>
Subject: Re: krb5: differing build paths trigger different documentation
Date: Thu, 28 Apr 2022 09:48:33 -0700
Hey folks,

> I've looked over your report and baffling patch.
> This is really strange, and I don't have much to add.
>
> It seems like it might be related to the pathsubst rules in
> src/doc/Makefile.in.
> But I don't see the build directory getting used there.

Oh ho ho, this is fun! So, curiously, I can't reproduce this outside of
reprotest (with a build path variation). 

Hm yes I don't immediately see how the pathsubst rules might be doing
this in practice either. Another interesting candidate might be the
doxy.py apparatus:

  103 # Use doxygen to generate API documentation, translate it into RST
  104 # format, and then create a composite of $(docsrc)'s RST and the
  105 # generated files in rst_composite.  Used by the html and substhtml targets.
  106 composite: Doxyfile $(docsrc)/version.py
  107         rm -rf doxy rst_apiref rst_composite
  108         $(DOXYGEN)
  109         (cwd=`pwd`; cd $(docsrc)/tools && \
  110                 $(PYTHON) doxy.py -i $$cwd/doxy/xml -o $$cwd/rst_apiref)

It is of course feasible that this parser (or one of its dependencies)
has a bug.

Two other drive-thru suggestions:

 * configgen.py has a bunch of global search-replaces that might be
   misfiring. There's also a potentially suspicious newline snarfing
   code that could conceivably be buggy as well:

    # replace \ by \\, replace " by \", and '  ' by a newline with end string
    # and start string at next line
    docC = []
    for line in split_doc:
      if (line.strip() != "<br/>"):
        docC.append(line.strip().replace('\\', '\\\\').
            replace('"', '\\"').replace("<br>", ""))

 * Memory corruption due to undefined behaviour somewhere in some
   parser. (Sam, we often call this a "docbook-to-man issue", not
   because the problem lies there, but due to the classic/notorious
   reproducible bug #842635 in that package.)


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 09:18:58 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.