Spyros Maniatopoulos
Spyros Maniatopoulos

Reputation: 404

How to handle Homebrew formula dependencies after having installed an older version

For various project-specific reasons, I have downgraded my boost (and boost-python) Homebrew installation to boost159 from boost (aka Boost 1.62.0 as of the writing of this question). The homebrew/versions/boost159 and boost-python159 formulas are keg-only and therefore I had to link them manually:

brew tap homebrew/versions
brew remove --force boost
brew remove --force boost-python
brew install boost159
brew link --force --overwrite boost159
brew install boost-python159
brew link --force --overwrite boost-python159

So far so good. But then, when I want to install some unrelated Homebrew formula that has a dependency on boost, Homebrew tries to brew install boost (Boost 1.62.0) and fails to link it:

[34m==>[0m [1mPouring boost-1.62.0.el_capitan.bottle.tar.gz[0m

[31mError:[0m The `brew link` step did not complete successfully

The formula built, but is not symlinked into /usr/local

Could not symlink include/boost/accumulators/accumulators.hpp

Target /usr/local/include/boost/accumulators/accumulators.hpp

is a symlink belonging to boost159. You can unlink it:

  brew unlink boost159


To force the link and overwrite all conflicting files:

  brew link --overwrite boost


To list all files that would be deleted:

  brew link --overwrite --dry-run boost


Possible conflicting files are:

/usr/local/include/boost/accumulators/accumulators.hpp -> /usr/local/Cellar/boost159/1.59.0/include/boost/accumulators/accumulators.hpp
[...] 

Is there a way to make other formulas use boost159 instead of boost ? Please note that boost159 must be linked for other parts of the projects (not in my control) to work. That is, I can't leave it unlinked and set build variables instead.

PS. This is all taking place in a CI build actually, making the error much more disruptive.

References

Upvotes: 3

Views: 1444

Answers (1)

jil
jil

Reputation: 2691

Probably you just have to patch your local formulas. In my opinion the whole versions support in brew is an unholy hack and one of the reasons why I do not use brew for build time development dependencies.

Upvotes: 1

Related Questions