conan-center-index: [pkgconf] pkgconf/1.7.4: Binary does not work in shared build

When building pkgconf with -o *:shared=True I end up with a pkgconf binary that when run gives the following error:

$ /opt/conan/pkgconf/1.7.4/3rdparty/stable/package/fb49f7b339424395408c6d9629736e5998939ecf/bin/pkgconf
/opt/conan/pkgconf/1.7.4/3rdparty/stable/package/fb49f7b339424395408c6d9629736e5998939ecf/bin/pkgconf: symbol lookup error: /opt/conan/pkgconf/1.7.4/3rdparty/stable/package/fb49f7b339424395408c6d9629736e5998939ecf/bin/pkgconf: undefined symbol: pkgconf_cross_personality_default

This seems to be causing #7539.

Package and Environment Details (include every applicable attribute)

  • Package Name/Version: glib/2.69.2
  • Operating System+version: AlmaLinux 8.4
  • Compiler+version: Clang 10.0.1
  • Conan version: 1.40.3
  • Python version: Python 3.9.2

output.log meson-log.txt

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 16 (16 by maintainers)

Most upvoted comments

The problem is that conan does not run its build helpers in a run environment. Conan runs meson here. As you see, there’s no run_environment=True added. The CMake and AutotoolsBuildEnvironment build helpers have the same issue.

It’s possible to fix this by surrounding with a tools.environment_append(tools.RunEnvironment(self).vars) context. But imho, the real issue is that conan is missing a flag to enable a run environment on build helpers.

I think conan should add a option to the CMake/Meson/AutotoolsBuildEnvironment constructs: e.g.

meson = Meson(self, run_environment=True)

which should get passed down to every ConanFile.run.

The only problem is that these build helpers will soon get deprecated. Perhaps a issue at https://github.com/conan-io/conan would be helpful, to make sure they are added to their successors.