conda-forge / conda-forge/abseil-cpp-feedstock

Customize options.h for ABI consistency

Open
#43 7 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
C++
Stars
2
Forks
18
Avg merge
12h 55m
Merged PRs (30d)
1

Description

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

- [X] I checked the documentation.

### Issue

abseil-cpp is used downstream by different packages, some of which build in C++17 mode, but others in C++14 or C++11 mode.

By default, the Abseil library has a different ABI depending on the C++ language version. However, it also offers a mechanism to solve this issue:
https://github.com/abseil/abseil-cpp/blob/37c5c2e5cc51db1bfb4a5d2f2c5494a394d80e56/absl/base/options.h#L15-L51

Quoting from this file:
```c++
// Diamond dependency problems can be avoided if all packages utilize the same
// exact version of Abseil. Building from source code with the same compilation
// parameters is the easiest way to avoid such dependency problems. However, for
// package managers who cannot control such compilation parameters, we are
// providing the file to allow you to inject ABI (Application Binary Interface)
// stability across builds. Settings options in this file will neither change
// API nor ABI, providing a stable copy of Abseil between packages.
```

Of course, once all transitively dependent packages are compiled in C++17 mode it becomes moot.

(see comment in Arrow PR for moving to C++17: https://github.com/apache/arrow/pull/13991#issuecomment-1233151550)

### Installed packages

```shell
(not relevant)
```

### Environment info

```shell
(not relevant)
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.