Re: problem building Linux-PAM-1.7.1

"Xi Ruoyao" ([email protected] via blfs-support Mailing List) <[email protected]> Sat, 01 Nov 2025 03:22:15 +0800
Newsgroups gmane.linux.lfs.beyond.support
Message-ID <[email protected]>
On Fri, 2025-10-31 at 14:53 -0400, Joe Locash wrote:
> On 10/31/25 2:46 PM, Richard ([email protected] via blfs-support Mailing 
> List) wrote:
> > I am following the blfs-12.4 stable book. I haven't installed
> > the optional dependencies for Linux-PAM-1.7.1 needed
> > to build the documentation, but I downloaded the optional
> > documentation file instead. I don't do the initial sed because
> > I haven't installed docbook, etc. When I issue the meson setup
> > command I get the following error:
> > 
> > --- stderr ---
> > I/O warning : failed to load 
> > "http://docbook.org/xml/5.0/rng/docbookxi.rng": No such file or directory
> > Relax-NG parser error : xmlRelaxNGParse: could not load 
> > http://docbook.org/xml/5.0/rng/docbookxi.rng
> > Relax-NG schema http://docbook.org/xml/5.0/rng/docbookxi.rng failed to 
> > compile
> > ../doc/man/meson.build:42:2: ERROR: Command `/usr/bin/xmllint --nonet 
> > --noout --xinclude --relaxng 
> > http://docbook.org/xml/5.0/rng/docbookxi.rng misc_conv.3.xml` failed
> > with status 5.
> > 
> > So it looks as though Linux-PAM requires the docbook programs.
> > Is there a way I can specify that I don't want the documentation to
> > be built? If not, should the optional dependencies for the documentation
> > be required instead?
> > 
> > I also tried leaving off the -D docdir=/usr/share/doc/Linux-PAM-1.7.1
> > line from meson setup, but I got the same error.
> > 
> > I looked at the options from meson help setup but I couldn't find an
> > option
> > to turn off the documentation. 
> 
> Use -Ddocs=disabled when running meson.

I cannot see how this option should be ever needed.

I'm pretty sure I tested the configuration w/o docbook before I wrote
the current Linux-PAM instruction.  And I just spent some time to review
it.

In meson.build we have:

  docbook_rng = get_option('docbook-rng')
  have = run_command(
    [prog_xmlcatalog, '--noout', xml_catalog, docbook_rng],
    check: feature_docs.enabled()
  ).returncode() == 0
  if not have
    docbook_rng = disabler()
  endif

Here "run_command" will fail because docbook_rng is
http://docbook.org/xml/5.0/rng/docbookxi.rng, which does not exist in
xml_catalog (/etc/xml/catalog).  Thus "have" will be false, and
docbook_rng will be a disabler.  Then at doc/man/meson.build we have

  run_command([prog_xmllint,
               '--nonet',
               '--noout',
               '--xinclude',
               '--relaxng', docbook_rng,
               xml],
              check: true)

Because docbook_rng is a disabler here, this command shouldn't be run as
the meson documentation says:

   A disabler object is an object that behaves in much the same way as
   NaN numbers do in floating point math. That is when used in any
   statement (function call, logical op, etc) they will cause the
   statement evaluation to immediately short circuit to return a
   disabler object.

My guess is a buggy libxml2 (at least we know 2.15.0 has some bugs but
I'm unsure if one of them can cause the issue) or meson is used.  The
combination of libxml2-2.15.1 and meson-1.9.1 behaves OK.

-- 
Xi Ruoyao <[email protected]>

-- 
http://lists.linuxfromscratch.org/sympa/info/blfs-support
Unsubscribe: See the above information page