Skip to contentSkip to conversation

Host xmllint dynamic link failure

Buildroot Arnout Vandecappelle 3 participants 6 messages Sep 25, 2012 – Sep 26, 2012

lore
Share & tools
lore
#0 lore raw

During one of my test builds, I ran into a dynamic linker failure when running
xmllint:

/usr/bin/xmllint: relocation error: /usr/bin/xmllint: symbol xmlShell, version LIBXML2_2.4.30 not defined in file libxml2.so.2 with link time reference

The problem is that we compile with LD_LIBRARY_PATH="$(HOST_DIR)/usr/lib:",
so that our host-libxml2 is used instead of the one in /usr/lib. Or, the problem is that /usr/bin/xmllint is used instead of $(HOST_DIR)/usr/bin/xmllint. The path is hardcoded in xmlto...

Possible solutions:

- Build host-xmlto. This will require updating all packages using xmlto to add host-xmlto to the dependencies.

- Remove LD_LIBRARY_PATH and rely on rpath to find the libraries. This may require patching some of the host packages. At first sight, it doesn't look too bad, however.

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#1 lore raw

Dear Arnout Vandecappelle,

Quoted 13 lines · Arnout Vandecappelle

During one of my test builds, I ran into a dynamic linker failure
when running xmllint:

/usr/bin/xmllint: relocation error: /usr/bin/xmllint: symbol xmlShell, version LIBXML2_2.4.30 not defined in file libxml2.so.2 with link time reference

The problem is that we compile with
LD_LIBRARY_PATH="$(HOST_DIR)/usr/lib:", so that our host-libxml2 is used instead of the one in /usr/lib. Or, the problem is that /usr/bin/xmllint is used instead of $(HOST_DIR)/usr/bin/xmllint. The path is hardcoded in xmlto...

Quoted 4 lines

Possible solutions:

- Build host-xmlto. This will require updating all packages using xmlto to add host-xmlto to the dependencies.

I am not sure to understand. Aren't we already building xmllint for the host? I don't follow your explanation entirely here. Anyway, if there is something from the host that we're using and that isn't part of the mandatory Buildroot dependencies, then it should definitely be built as a dependency, yes.

Quoted 3 lines

- Remove LD_LIBRARY_PATH and rely on rpath to find the libraries. This may require patching some of the host packages. At first sight, it doesn't look too bad, however.

Normally yes, I think we should remove LD_LIBRARY_PATH. The idea is to build all binaries installed in $(HOST_DIR)/usr/bin with a rpath, and that is normally sufficient to let them find the libraries.

Best regards,

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#2 lore raw
Quoted 18 lines · Thomas Petazzoni

Dear Arnout Vandecappelle,

Quoted 15 lines · Arnout Vandecappelle

During one of my test builds, I ran into a dynamic linker failure
when running xmllint:

/usr/bin/xmllint: relocation error: /usr/bin/xmllint: symbol xmlShell, version LIBXML2_2.4.30 not defined in file libxml2.so.2 with link time reference

The problem is that we compile with
LD_LIBRARY_PATH="$(HOST_DIR)/usr/lib:", so that our host-libxml2 is used instead of the one in /usr/lib. Or, the problem is that /usr/bin/xmllint is used instead of $(HOST_DIR)/usr/bin/xmllint. The path is hardcoded in xmlto...

Possible solutions:

Quoted 8 lines
Quoted 2 lines

- Build host-xmlto. This will require updating all packages using xmlto to add host-xmlto to the dependencies.

I am not sure to understand. Aren't we already building xmllint for the host? I don't follow your explanation entirely here. Anyway, if there is something from the host that we're using and that isn't part of the mandatory Buildroot dependencies, then it should definitely be built as a dependency, yes.

xmllint yes, but not xmlto. And xmlto hard-codes the path to xmllint
(and to /usr/bin/locale and /usr/bin/xsltproc as well...).

xmlto is used to generate the documentation in the new X11 packages
(not sure if it was the case before already). Disabling documentation also works :-). If xmlto can't be found, the documentation won't be built. That's why you don't see a problem in the autobuilders.

Quoted 7 lines
Quoted 3 lines

- Remove LD_LIBRARY_PATH and rely on rpath to find the libraries. This may require patching some of the host packages. At first sight, it doesn't look too bad, however.

Normally yes, I think we should remove LD_LIBRARY_PATH. The idea is to build all binaries installed in $(HOST_DIR)/usr/bin with a rpath, and that is normally sufficient to let them find the libraries.

OK.

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#3 lore raw
Quoted 3 lines · Arnout Vandecappelle

xmlto is used to generate the documentation in the new X11 packages
(not sure if it was the case before already). Disabling documentation also works :-).

Actually that's a third workaround (which just hides the problem :-): we
currently don't have --disable-doc in the configure of host-packages. I don't think we really need to build the docs for host packages, do we?

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#4 lore raw

Dear Arnout Vandecappelle,

Quoted 4 lines · Arnout Vandecappelle

Actually that's a third workaround (which just hides the
problem :-): we currently don't have --disable-doc in the configure of host-packages. I don't think we really need to build the docs for host packages, do we?

We certainly don't, I'd say.

Thomas

Signature · 4 lines
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#5 lore raw
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

Thomas> Dear Arnout Vandecappelle,

Quoted 4 lines · Arnout Vandecappelle
Quoted 4 lines

Actually that's a third workaround (which just hides the problem :-): we currently don't have --disable-doc in the configure of host-packages. I don't think we really need to build the docs for host packages, do we?

Thomas> We certainly don't, I'd say.

Agreed, and also for the new libX11.

Signature · 1 line
Bye, Peter Korsgaard