conan: [bug] Conan doesn't resolve reference to latest binary package when old sqlite3 is installed

Environment details

  • Operating System+version: Oracle Linux 6.10 (glibc 2.12)
  • Compiler+version: gcc 8.2
  • Conan version: 2.0.13
  • Python version: 3.6

Steps to reproduce

Trying to build & install boost from source on old system (glibc 2.12), b2/4.10.1 resolves to a binary package on CCI, which is built against a newer glibc:

$ conan install --requires=boost/1.82.0 --build=missing
======== Computing necessary packages ========
Requirements
    boost/1.82.0#7c9cc60d65d6942a56d4806ab85bda7c:eb34317ab81722ab55d97692af0d62754e8851dd - Build
    bzip2/1.0.8#411fc05e80d47a89045edc1ee6f23c1d:75807e7575ecc0f6141344f7c4f5e86106b92ec2 - Build
    libbacktrace/cci.20210118#ec1aa63bbc10145c6a299e68e711670c:897e6fde718e72637d92b0b8ed929893a1976238 - Build
    zlib/1.3#06023034579559bb64357db3a53f88a4:897e6fde718e72637d92b0b8ed929893a1976238 - Build
Build requirements
    b2/4.10.1#8dc3df1cc73ad65d86cbdfd31fdb011f:63fead0844576fc02943e16909f08fcdddd6f44b#a31a98f757dcf4d3f03ed629ccde26b7 - Download (conancenter)
...
-------- Downloading 1 package --------
b2/4.10.1: Retrieving package 63fead0844576fc02943e16909f08fcdddd6f44b from remote 'conancenter'
b2/4.10.1: Package installed 63fead0844576fc02943e16909f08fcdddd6f44b
b2/4.10.1: Downloaded package revision a31a98f757dcf4d3f03ed629ccde26b7
...
-------- Installing package boost/1.82.0 (5 of 5) --------
boost/1.82.0: Building from source
...
boost/1.82.0: RUN: b2 -q numa=on target-os=linux architecture=x86 [...]
b2: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by b2)
b2: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by b2)

Easy to solve – build b2 from source:

$ conan install --requires=boost/1.82.0 --build=missing --build='b2/*'
======== Computing necessary packages ========
b2/4.10.1: Forced build from source
Requirements
    boost/1.82.0#7c9cc60d65d6942a56d4806ab85bda7c:eb34317ab81722ab55d97692af0d62754e8851dd - Build
    bzip2/1.0.8#411fc05e80d47a89045edc1ee6f23c1d:75807e7575ecc0f6141344f7c4f5e86106b92ec2#d7a79e2c40e526c412f2db99564eadfd - Cache
    libbacktrace/cci.20210118#ec1aa63bbc10145c6a299e68e711670c:897e6fde718e72637d92b0b8ed929893a1976238#a7e3c00cc7faaa29f0b441cc0abab184 - Cache
    zlib/1.3#06023034579559bb64357db3a53f88a4:897e6fde718e72637d92b0b8ed929893a1976238#2e82fa1c9727666c9d482aa0d2d8abb4 - Cache
Build requirements
    b2/4.10.1#8dc3df1cc73ad65d86cbdfd31fdb011f:63fead0844576fc02943e16909f08fcdddd6f44b - Build
...
-------- Installing package b2/4.10.1 (1 of 5) --------
b2/4.10.1: Building from source
...
b2/4.10.1: Created package revision 39eb34d0777dc531a81abd80f0466622
b2/4.10.1: Package '63fead0844576fc02943e16909f08fcdddd6f44b' created
b2/4.10.1: Full package reference: b2/4.10.1#8dc3df1cc73ad65d86cbdfd31fdb011f:63fead0844576fc02943e16909f08fcdddd6f44b#39eb34d0777dc531a81abd80f0466622
...
-------- Installing package boost/1.82.0 (5 of 5) --------
boost/1.82.0: Building from source
...
boost/1.82.0: Package 'eb34317ab81722ab55d97692af0d62754e8851dd' created
boost/1.82.0: Full package reference: boost/1.82.0#7c9cc60d65d6942a56d4806ab85bda7c:eb34317ab81722ab55d97692af0d62754e8851dd#e9d2b818be766aad4f94f0bd94f75e24

So now I have two package revisions of b2:

$ conan list 'b2/4.10.1:*#*'
Local Cache
  b2
    b2/4.10.1
      revisions
        8dc3df1cc73ad65d86cbdfd31fdb011f (2023-07-22 06:10:05 UTC)
          packages
            63fead0844576fc02943e16909f08fcdddd6f44b
              revisions
                a31a98f757dcf4d3f03ed629ccde26b7 (2023-08-11 15:24:55 UTC) <<< Binary pkg from CCI, broken on my system
                39eb34d0777dc531a81abd80f0466622 (2023-10-16 09:50:58 UTC) <<< My binary pkg
              info
                settings
                  arch: x86_64
                  os: Linux

Bui if I decide to build boost again (e.g. with different settings), conan reproducibly picks b2 from CCI:

$ conan install --requires=boost/1.82.0 -s build_type=Debug --build=missing
======== Computing necessary packages ========
Requirements
    boost/1.82.0#7c9cc60d65d6942a56d4806ab85bda7c:01e0916e01c9f024a112bfa3e77583644218b92c - Build
    bzip2/1.0.8#411fc05e80d47a89045edc1ee6f23c1d:4e3d72a07bfbfcf8bcc3e2a4a24a200d8acbceec - Build
    libbacktrace/cci.20210118#ec1aa63bbc10145c6a299e68e711670c:295d4ee81415d35a09959c89a57c51b82825332e - Build
    zlib/1.3#06023034579559bb64357db3a53f88a4:295d4ee81415d35a09959c89a57c51b82825332e - Build
Build requirements
    b2/4.10.1#8dc3df1cc73ad65d86cbdfd31fdb011f:63fead0844576fc02943e16909f08fcdddd6f44b#a31a98f757dcf4d3f03ed629ccde26b7 - Cache
...
-------- Installing package boost/1.82.0 (5 of 5) --------
boost/1.82.0: Building from source
...
boost/1.82.0: RUN: b2 -q numa=on target-os=linux architecture=x86 [...]
b2: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by b2)
b2: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by b2)

Am I missing some sort of logic here? Shouldn’t latest package revision be picked?

Currently I am working around by running conan remove -c 'b2/*' and building the package from source on the next run so that there is only one package in cache and it’s mine, which is OK from me, but the behaviour is still weird.

About this issue

  • Original URL
  • State: closed
  • Created 8 months ago
  • Comments: 20 (20 by maintainers)

Commits related to this issue

Most upvoted comments

I am adding the check for sqlite version in PR https://github.com/conan-io/conan/pull/14950

I have built a newer sqlite3 version (3.43.2) from source, and the problem is gone now! Sorry if I took too much of your time yesterday 😅

Not a problem, this was a fun one to investigate 😄 , it was driving me crazy!

Yes, I think failing if the sqlite version is too old would be nice. Checking if

>>> import sqlite3
>>> sqlite3.sqlite_version

is the right way to check the system sqlite version

I am using docker desktop for windows (I think on wsl2), probably same issue, yes. Not sure I am able to change the WSL config, this is a company provisioned computer.

Yeah, “quite old” is an understatement 😅 Oracle Linux 6 itself is a 14-year-old distribution, but I am locked in with it for a while. I will try building a fresher version of sqlite3 tomorrow, and see if issue reproduces!

Side note, I am trying to build your docker, but hitting:

Sorry, it looks like the error message was cut out. Could you copy it one more time?