Skip to content

Boost 1.89 breaks build #215

@acj

Description

@acj

👋 The build currently fails on macOS (and maybe other platforms) if you have Boost 1.89 installed and try to build audiowaveform 1.10.2:

$ brew info cmake
==> cmake: stable 4.1.0 (bottled), HEAD
$ brew info boost
==> boost: stable 1.89.0 (bottled), HEAD
$ mkdir build
cd build
cmake ..
make
-- Building version 1.10.2
-- The C compiler identification is AppleClang 17.0.0.17000013
-- The CXX compiler identification is AppleClang 17.0.0.17000013
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Build type not specified: default is Release
-- Build type: Release
-- CMAKE_MODULE_PATH='/Users/acj/proj/wistia/audiowaveform/cmake/modules'
-- Architecture: arm64
-- Found LibGD: /opt/homebrew/lib/libgd.dylib
-- LIBGD_INCLUDE_DIRS='/opt/homebrew/include'
-- LIBGD_LIBRARIES=/opt/homebrew/lib/libgd.dylib
-- Found LibSndFile: /opt/homebrew/lib/libsndfile.dylib
-- LIBSNDFILE_INCLUDE_DIRS='/opt/homebrew/include'
-- LIBSNDFILE_LIBRARIES=/opt/homebrew/lib/libsndfile.dylib
-- Found LibMad: /opt/homebrew/lib/libmad.dylib
-- LIBMAD_INCLUDE_DIRS='/opt/homebrew/include'
-- LIBMAD_LIBRARIES=/opt/homebrew/lib/libmad.dylib
-- Found LibId3Tag: /opt/homebrew/lib/libid3tag.dylib
-- LIBID3TAG_INCLUDE_DIRS='/opt/homebrew/include'
-- LIBID3TAG_LIBRARIES=/opt/homebrew/lib/libid3tag.dylib
CMake Error at /opt/homebrew/lib/cmake/Boost-1.89.0/BoostConfig.cmake:141 (find_package):
  Could not find a package configuration file provided by "boost_system"
  (requested version 1.89.0) with any of the following names:

    boost_systemConfig.cmake
    boost_system-config.cmake

  Add the installation prefix of "boost_system" to CMAKE_PREFIX_PATH or set
  "boost_system_DIR" to a directory containing one of the above files.  If
  "boost_system" provides a separate development package or SDK, be sure it
  has been installed.
Call Stack (most recent call first):
  /opt/homebrew/lib/cmake/Boost-1.89.0/BoostConfig.cmake:262 (boost_find_component)
  CMakeLists.txt:125 (find_package)

There are several related Homebrew PRs, notably Homebrew/homebrew-core#233031 which links to various fixed formulas and points out the breaking change:

Major impacting change is Boost System becoming header-only - boostorg/system#132

For audiowaveform, the issue is here where boost's system package is required. The build succeeds on macOS and Ubuntu if I remove system, so maybe it's not needed anymore. According to this comment, system can also be marked as an optional component if you need to support older versions of boost (< 1.69). We could bump the minimum version of boost at the same time.

Happy to make a PR if you know which way you want to go. Thanks for your work on this project.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions