Opendigitalradio / ODR-DabMux

ODR-DabMux is a DAB (Digital Audio Broadcasting) multiplexer, part of the ODR-mmbTools.
https://www.opendigitalradio.org
Other
48 stars 35 forks source link

Flawed checking of boost version in configure script #69

Closed arianna-cox closed 10 months ago

arianna-cox commented 10 months ago

I cross-compiled boost and then wanted to cross-compile ODR-DabMux. I set the environment variable $BOOST_ROOT to the path of my boost directory. However, when running the ODR-DabMux ./configure script it continued to say I did not have the correct version. It turns out this is because the ODR-DabMux configure script searches for boost's version number using the folder name provided in $BOOST_ROOT, rather than searching for it in the version.hpp file. I fixed this problem by renaming my folder to include the version number, however this seems like a flaw in the configure script. The relevant section of the configure script starts at line 6067. See the photo:

unnamed

colisee commented 10 months ago

Hi @arianna-cox ,

The version checking comes from file configure.ac actually; more precisely from line 41

AX_BOOST_BASE([1.48.0], [], AC_MSG_ERROR([BOOST 1.48 or later is required]))

The m4 macro AX_BOOST_BASE is defined inside folder m4. This is the file that needs to be investigated and potentially changed, if necessary.

colisee commented 10 months ago

Could you please try:

# Test #1 
./configure --with-boost=<directory_containing_cross-compiled_boost>

# Test #2 
./configure --with-boost-libdir=<directory_containing_cross-compiled_boost>
arianna-cox commented 10 months ago

I can try those tests now, but changing the name of the boost root directory from "boost" to "boost_1_85_0" (and setting the environment variable $BOOST_ROOT to the corresponding file path) did solve my issues.

arianna-cox commented 10 months ago

I've done test 1 and 2.

Test 1 returns error:

configure: error: Could not find a version of the Boost::System library!

Test 2 returns error:

configure: We could not detect the boost libraries (version 1.48.0 or higher). If you have a staged boost library (still not installed) please specify $BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation. configure: error: BOOST 1.48 or later is required

My solution:

Since I have a staged boost library that is not installed, I didn't use the --with-boost option or --with-boost-libdir option. Instead, I set the environment variable $BOOST_ROOT to the path of the boost root. This is a successful solution only in the case where the boost root folder is named "boost_1_85_0". It does not work in the case where the folder name doesn't include the version, for example if it is called "boost". If the version is not included in the folder name, it returns the error:

expr: syntax error: unexpected argument '0' configure: We could not detect the boost libraries (version 1.48.0 or higher). If you have a staged boost library (still not installed) please specify $BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation. configure: error: BOOST 1.48 or later is required

Note

Also, if I leave a trailing backslash on the $BOOST_ROOT environment variable then there is an additional error:

expr: syntax error: unexpected argument '\([0-9]\.[0-9]\)'

This error is why I initially looked at line 6067 of the configure script (which is created by the bootstrap script).

mpbraendli commented 10 months ago

You might be stepping a bit too far from the beaten path here :-) If you want to debug the configure script, please don't refer to configure.ac and the files inside the m4 folder. The configure script itself is locally-generated, and may differ from one system to another.

I am not willing to maintain cross-compilation support for the mmbtools. As you managed to compile odr-dabmux successfully, I'll close this ticket.