conda-forge / conda-forge/arrow-cpp-feedstock

Historical libarrow 12–15 builds allow gflags 2.3 but require `libgflags.so.2.2`

Open
#2,043 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
Shell
Stars
12
Forks
66
PR merge metrics
No merged PRs in 30d

Description

### Solution to issue cannot be found in the documentation.

- [x] I checked the documentation.

### Issue

On Linux-64, some historical `libarrow` builds can be solved with gflags 2.3 but fail at runtime because they directly require `libgflags.so.2.2`.

## Reproducer

```bash
micromamba create -n arrow-gflags-repro -c conda-forge --override-channels python=3.11 pyarrow=15 gflags=2.3

micromamba run -n arrow-gflags-repro python -c "import pyarrow"
```

Result:

```text
ImportError: libgflags.so.2.2: cannot open shared object file: No such file or directory
```

The solve selects:

```text
pyarrow 15.0.2 py311h78dcc79_3_cpu
libarrow 15.0.2 he70291f_3_cpu
glog 0.7.1 hb7133d2_1
gflags 2.3.1 h54a6638_0
```

ELF inspection shows:

```text
libarrow.so.1500 → libgflags.so.2.2
libarrow.so.1500 → libglog.so.2
libglog.so → libgflags.so.2.3
```

However, the `libarrow` package metadata contains a glog constraint but no gflags constraint, allowing this incompatible solve.

## Confirmed affected builds

| Version | libarrow build |
|---|---|
| 12.0.1 | `hf406b5e_46_cpu` |
| 13.0.0 | `hf406b5e_35_cpu` |
| 14.0.2 | `he70291f_16_cpu` |
| 15.0.2 | `he70291f_3_cpu` |

Pyarrow 7–11 and 16–18 correctly reject gflags 2.3. Versions 19 and later use compatible rebuilt binaries.

### Installed packages

```shell
Name Version Build Channel
───────────────────────────────────────────────────────────────────────────────────────────────────────
_openmp_mutex 4.5 20_gnu https://conda.anaconda.org/conda-forge
aws-c-auth 0.7.17 he0b1f16_2 https://conda.anaconda.org/conda-forge
aws-c-cal 0.6.11 heb1d5e4_0 https://conda.anaconda.org/conda-forge
aws-c-common 0.9.15 hd590300_0 https://conda.anaconda.org/conda-forge
aws-c-compression 0.2.18 hce8ee76_3 https://conda.anaconda.org/conda-forge
aws-c-event-stream 0.4.2 h01f5eca_8 https://conda.anaconda.org/conda-forge
aws-c-http 0.8.1 hdb68c23_10 https://conda.anaconda.org/conda-forge
aws-c-io 0.14.7 hbfbeace_6 https://conda.anaconda.org/conda-forge
aws-c-mqtt 0.10.3 h50844eb_4 https://conda.anaconda.org/conda-forge
aws-c-s3 0.5.7 hb7bd14b_1 https://conda.anaconda.org/conda-forge
aws-c-sdkutils 0.1.15 hce8ee76_3 https://conda.anaconda.org/conda-forge
aws-checksums 0.1.18 hce8ee76_3 https://conda.anaconda.org/conda-forge
aws-crt-cpp 0.26.6 hf567797_4 https://conda.anaconda.org/conda-forge
aws-sdk-cpp 1.11.267 hbf3e495_6 https://conda.anaconda.org/conda-forge
bzip2 1.0.8 hda65f42_9 https://conda.anaconda.org/conda-forge
c-ares 1.34.8 hb03c661_0 https://conda.anaconda.org/conda-forge
ca-certificates 2026.7.22 hbd8a1cb_0 https://conda.anaconda.org/conda-forge
gflags 2.3.1 h54a6638_0 https://conda.anaconda.org/conda-forge
glog 0.7.1 hb7133d2_1 https://conda.anaconda.org/conda-forge
icu 75.1 he02047a_0 https://conda.anaconda.org/conda-forge
keyutils 1.6.3 hb9d3cd8_0 https://conda.anaconda.org/conda-forge
krb5 1.22.2 hbde042b_1 https://conda.anaconda.org/conda-forge
ld_impl_linux-64 2.46.1 default_hbd61a6d_102 https://conda.anaconda.org/conda-forge
libabseil 20240116.2 cxx17_he02047a_1 https://conda.anaconda.org/conda-forge
libarrow 15.0.2 he70291f_3_cpu https://conda.anaconda.org/conda-forge
libarrow-acero 15.0.2 hac33072_3_cpu https://conda.anaconda.org/conda-forge
libarrow-dataset 15.0.2 hac33072_3_cpu https://conda.anaconda.org/conda-forge
libarrow-flight 15.0.2 hd42f311_3_cpu https://conda.anaconda.org/conda-forge
libarrow-flight-sql 15.0.2 h9241762_3_cpu https://conda.anaconda.org/conda-forge
libarrow-gandiva 15.0.2 hd4ab825_3_cpu https://conda.anaconda.org/conda-forge
libarrow-substrait 15.0.2 h9241762_3_cpu https://conda.anaconda.org/conda-forge
libblas 3.11.0 8_h4a7cf45_openblas https://conda.anaconda.org/conda-forge
libbrotlicommon 1.1.0 hb03c661_4 https://conda.anaconda.org/conda-forge
libbrotlidec 1.1.0 hb03c661_4 https://conda.anaconda.org/conda-forge
libbrotlienc 1.1.0 hb03c661_4 https://conda.anaconda.org/conda-forge
libcap 2.78 hd0affe5_0 https://conda.anaconda.org/conda-forge
libcblas 3.11.0 8_h0358290_openblas https://conda.anaconda.org/conda-forge
libcrc32c 1.1.2 h9c3ff4c_0 https://conda.anaconda.org/conda-forge
libcurl 8.21.0 hcf29cc6_1 https://conda.anaconda.org/conda-forge
libedit 3.1.20250104 pl5321h7949ede_0 https://conda.anaconda.org/conda-forge
libev 4.33 hd590300_2 https://conda.anaconda.org/conda-forge
libevent 2.1.12 hf998b51_1 https://conda.anaconda.org/conda-forge
libexpat 2.8.1 hecca717_1 https://conda.anaconda.org/conda-forge
libffi 3.5.2 h3435931_0 https://conda.anaconda.org/conda-forge
libgcc 15.2.0 he0feb66_20 https://conda.anaconda.org/conda-forge
libgcc-ng 15.2.0 h69a702a_20 https://conda.anaconda.org/conda-forge
libgfortran 15.2.0 h69a702a_20 https://conda.anaconda.org/conda-forge
libgfortran5 15.2.0 h68bc16d_20 https://conda.anaconda.org/conda-forge
libgomp 15.2.0 he0feb66_20 https://conda.anaconda.org/conda-forge
libgoogle-cloud 2.22.0 h9be4e54_1 https://conda.anaconda.org/conda-forge
libgoogle-cloud-storage 2.22.0 hc7a4891_1 https://conda.anaconda.org/conda-forge
libgrpc 1.62.2 h15f2491_0 https://conda.anaconda.org/conda-forge
libiconv 1.18 h3b78370_2 https://conda.anaconda.org/conda-forge
liblapack 3.11.0 8_h47877c9_openblas https://conda.anaconda.org/conda-forge
libllvm16 16.0.6 ha7bfdaf_4 https://conda.anaconda.org/conda-forge
liblzma 5.8.3 hb03c661_0 https://conda.anaconda.org/conda-forge
libnghttp2 1.68.1 h877daf1_0 https://conda.anaconda.org/conda-forge
libnl 3.11.0 hb9d3cd8_0 https://conda.anaconda.org/conda-forge
libnsl 2.0.1 hb9d3cd8_1 https://conda.anaconda.org/conda-forge
libopenblas 0.3.33 pthreads_h94d23a6_0 https://conda.anaconda.org/conda-forge
libparquet 15.0.2 h6a7eafb_3_cpu https://conda.anaconda.org/conda-forge
libprotobuf 4.25.3 hd5b35b9_1 https://conda.anaconda.org/conda-forge
libre2-11 2023.09.01 h5a48ba9_2 https://conda.anaconda.org/conda-forge
libsqlite 3.53.4 h0c1763c_0 https://conda.anaconda.org/conda-forge
libssh2 1.11.1 hcf80075_0 https://conda.anaconda.org/conda-forge
libstdcxx 15.2.0 h934c35e_20 https://conda.anaconda.org/conda-forge
libstdcxx-ng 15.2.0 hdf11a46_20 https://conda.anaconda.org/conda-forge
libsystemd0 261.1 h6f4a2f1_0 https://conda.anaconda.org/conda-forge
libthrift 0.19.0 hb90f79a_1 https://conda.anaconda.org/conda-forge
libudev1 261.1 h6f4a2f1_0 https://conda.anaconda.org/conda-forge
libutf8proc 2.8.0 hf23e847_1 https://conda.anaconda.org/conda-forge
libuuid 2.42.2 h5347b49_0 https://conda.anaconda.org/conda-forge
libxcrypt 4.4.36 hd590300_1 https://conda.anaconda.org/conda-forge
libxml2 2.13.9 h04c0eec_0 https://conda.anaconda.org/conda-forge
libzlib 1.3.2 h25fd6f3_2 https://conda.anaconda.org/conda-forge
lz4-c 1.9.4 hcb278e6_0 https://conda.anaconda.org/conda-forge
ncurses 6.6 hdb14827_0 https://conda.anaconda.org/conda-forge
numpy 1.26.4 py311h64a7726_0 https://conda.anaconda.org/conda-forge
openssl 3.6.3 h35e630c_0 https://conda.anaconda.org/conda-forge
orc 2.0.0 h17fec99_1 https://conda.anaconda.org/conda-forge
packaging 26.2 pyhc364b38_0 https://conda.anaconda.org/conda-forge
pip 26.1.2 pyh8b19718_0 https://conda.anaconda.org/conda-forge
pyarrow 15.0.2 py311h78dcc79_3_cpu https://conda.anaconda.org/conda-forge
python 3.11.15 h7508c33_1_cpython https://conda.anaconda.org/conda-forge
python_abi 3.11 8_cp311 https://conda.anaconda.org/conda-forge
rdma-core 63.0 h192683f_1 https://conda.anaconda.org/conda-forge
re2 2023.09.01 h7f4b329_2 https://conda.anaconda.org/conda-forge
readline 8.3 h853b02a_0 https://conda.anaconda.org/conda-forge
s2n 1.4.12 h06160fa_0 https://conda.anaconda.org/conda-forge
setuptools 83.0.0 pyh332efcf_0 https://conda.anaconda.org/conda-forge
snappy 1.2.2 h03e3b7b_1 https://conda.anaconda.org/conda-forge
tk 8.6.13 noxft_hd70dff1_3 https://conda.anaconda.org/conda-forge
tzdata 2026c h151e31d_0 https://conda.anaconda.org/conda-forge
ucx 1.15.0 ha691c75_8 https://conda.anaconda.org/conda-forge
wheel 0.47.0 pyhd8ed1ab_0 https://conda.anaconda.org/conda-forge
zstd 1.5.7 hb78ec9c_6 https://conda.anaconda.org/conda-forge
```

### Environment info

```shell
micromamba version : 2.6.0
libmamba version : 2.6.0
platform : linux-64
architecture : x86_64
kernel : Linux 5.14.0
glibc : 2.34
Python : 3.11.15
environment : /tmp/pyarrow-gflags-ancient-env-15
channel used : https://conda.anaconda.org/conda-forge
channel override : enabled

Environment creation command:

micromamba create -y -p /tmp/pyarrow-gflags-ancient-env-15 \
-c https://conda.anaconda.org/conda-forge --override-channels \
python=3.11 pyarrow=15 gflags=2.3
```

Contributor guide

Open the contributing guide

Research direction

Start with the provided micromamba reproducer and inspect the libarrow package metadata for the affected 12.0.1–15.0.2 builds, comparing their gflags and glog constraints with the ELF dependencies described here. Verify the result by checking that the incompatible gflags 2.3 solve is rejected and that importing pyarrow succeeds for supported combinations.

Written by the indexing model from the issue text.

Assessment

Tech stack
shell
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.