Eos: Error when building dawn 3.0 "Unable to find the requested Boost libraries."

Created on 6 Apr 2018  路  15Comments  路  Source: EOSIO/eos

Server spec below default Amazon AMI
Beginning build version: 1.2
Fri 6 Apr 13:32:20 UTC 2018
git head id: 54d4d177ed80b37dcc93a9f7e7f310cb4542d492
Current branch: * master

ARCHITECTURE: Linux

OS name: Amazon Linux AMI
OS Version: 2017
CPU speed: 2400Mhz
CPU cores: 2
Physical Memory: 7984 Mgb
Disk space total: 40G
Disk space available: 36G

Shows below error

-- Configuring ChainBase on Linux
-- Using custom FindBoost.cmake
CMake Error at libraries/fc/CMakeModules/FindBoost.cmake:1129 (message):
Unable to find the requested Boost libraries.

Unable to find the Boost header files. Please set BOOST_ROOT to the root
directory containing Boost or BOOST_INCLUDEDIR to the directory containing
Boost's headers.
Call Stack (most recent call first):
libraries/appbase/CMakeLists.txt:22 (find_package)

-- Configuring AppBase on Linux
-- Found bsoncxx headers: /usr/local/include/bsoncxx/v_noabi
-- Found bsoncxx library: /usr/local/lib/libbsoncxx-static.a;/usr/local/lib/libbson-static-1.0.a;-lm;-pthread
-- Found mongocxx headers: /usr/local/include/mongocxx/v_noabi;/usr/local/include/bsoncxx/v_noabi
-- Found mongocxx library: /usr/local/lib/libmongocxx-static.a;/usr/local/lib/libbsoncxx-static.a;/usr/local/lib/libbson-static-1.0.a;-lm;-pthread;/usr/local/lib/libmongoc-static-1.0.a;/usr/local/lib/libbson-static-1.0.a;-lm;-pthread;-lssl;-lcrypto;-lrt;-lz;-lresolv
-- Git commit revision: 54d4d177
-- Git commit revision: 54d4d177
-- Git commit revision: 54d4d177
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- Doxygen not found. Contract documentation will not be generated.
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
/home/ec2-user/eos/libraries/appbase/Boost_INCLUDE_DIR
used as include directory in directory /home/ec2-user/eos/libraries/appbase
/home/ec2-user/eos/libraries/chainbase/Boost_INCLUDE_DIR
used as include directory in directory /home/ec2-user/eos/libraries/chainbase
/home/ec2-user/eos/libraries/fc/Boost_INCLUDE_DIR
used as include directory in directory /home/ec2-user/eos/libraries/fc
/home/ec2-user/eos/tools/Boost_INCLUDE_DIR
used as include directory in directory /home/ec2-user/eos/tools
Boost_INCLUDE_DIR (ADVANCED)
used as include directory in directory /home/ec2-user/eos/contracts/proxy

-- Configuring incomplete, errors occurred!
See also "/home/ec2-user/eos/build/CMakeFiles/CMakeOutput.log".
See also "/home/ec2-user/eos/build/CMakeFiles/CMakeError.log".

>>>>>>>>>>>>>>>>>>>> CMAKE building EOSIO has exited with the above error.
No testing needed

Most helpful comment

I looked at the $HOME/eos/scripts/eosio_build_ubuntu.sh script and despite the if statement, for some reason, boost was not getting installed, so I did the installation myself, so that shell script would enter the else branch.

Under $HOME/opt:

curl -LO https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.bz2
tar xvf boost_1_66_0.tar.bz2
BOOST_ROOT=/$HOME/opt/boost_1_66_0
export BOOST_ROOT
echo $BOOST_ROOT (To verify the export worked, returned as expected /home/rajita/opt/boost_1_66_0)

All 15 comments

I've hit this error as well and tracked down the issue to a difference in the clean install instructions and the amazon specific build script.

The install instructions place the boost directory at ${HOME}/boost_1_66_0
The Amazon build script looks in ${HOME}/opt/boost_1_66_0

However once fixing that, I then run in to permissions issues, and the inline download of the boost libs doesn't seem to work either.

Seeing the same issue on a clean install of Ubuntu 16.04, Git commit revision: 54d4d17.

Here's what I ran.

sudo apt install git
git clone https://github.com/EOSIO/eos --recursive
cd eos
./eosio_build.sh

Here's the output towards the end of the build:

CMake Error at libraries/fc/CMakeModules/FindBoost.cmake:1129 (message):
  Unable to find the request Boost libraries.

 Unable to find the Boost header files. Please set BOOST_ROOT to the root
 directory containing Boost or BOOST_INCLUDEDIR to the directory containing
 Boost's headers.
Call Stack (most recent call first):
  CMakeLists.txt:88 (find_package)

hi the same issue on AWS ubuntu 16.04

Please set them or make sure they are set and tested correctly in the CMake files:
/home/ubuntu/eos/libraries/appbase/Boost_INCLUDE_DIR
used as include directory in directory /home/ubuntu/eos/libraries/appbase
/home/ubuntu/eos/libraries/chainbase/Boost_INCLUDE_DIR
used as include directory in directory /home/ubuntu/eos/libraries/chainbase
/home/ubuntu/eos/libraries/fc/Boost_INCLUDE_DIR
used as include directory in directory /home/ubuntu/eos/libraries/fc
/home/ubuntu/eos/tools/Boost_INCLUDE_DIR
used as include directory in directory /home/ubuntu/eos/tools
Boost_INCLUDE_DIR (ADVANCED)
used as include directory in directory /home/ubuntu/eos/contracts/proxy

workaround:

put boost_1_66_0 under $HOME/opt: /home/ubuntu/opt/boost_1_66_0

and build with 'sudo'

We need a little more information. Could you run the following commands and paste the output here?
cd ${HOME}
ls -lah ${HOME}/opt
cat ${HOME}/opt/boost_1_66_0/include/boost/version.hpp | grep BOOST_LIB_VERSION
gcc --version
AMAZON Linux:
${HOME}/opt/cmake/bin/cmake --version
Ubuntu:
cmake --version

If the above runs without error run the following commands from your eos/ document root and paste the output from the beginning of the script to the following line:

ALL dependencies sucessfully found or installed . Installing EOS.IO

cd eos/
git pull
git submodule update --init --recursive
./eosio_build.sh

(note: while sudo is required to install certain dependencies we don't recommend compiling EOS.IO as root)

@pacificcode
Follow your suggestion:

~$ echo $HOME
/home/ubuntu

~$ cat ${HOME}/opt/boost_1_66_0/include/boost/version.hpp | grep BOOST_LIB_VERSION
cat: /home/ubuntu/opt/boost_1_66_0/include/boost/version.hpp: No such file or directory

~$ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.

~$ cmake --version
cmake version 3.5.1

after I put "boost_1_66_0" under $HOME/opt: /home/ubuntu/opt/boost_1_66_0
and build with "sudo", the issue does not exist.

But new build error happened:
/home/ubuntu/eos/libraries/chainbase/test/test.cpp:(.text.startup+0x12b): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

@hixichen you need to have the actual boost libraries compiled and installed in the directory ${HOME}/opt/boost_1_66_0 i.e.
ls -lah ${HOME}/opt/boost_1_66_0
total 16K
drwxrwxr-x. 4 bhamilton bhamilton 4.0K Mar 15 18:43 .
drwxrwxr-x. 4 bhamilton bhamilton 4.0K Mar 15 20:46 ..
drwxrwxr-x. 3 bhamilton bhamilton 4.0K Mar 15 18:43 include
drwxrwxr-x. 2 bhamilton bhamilton 4.0K Mar 15 19:00 lib

However it looks as though you may have 2 issues:

  1. You may need to update your EOS.IO code.
    from your eos document root run:
    git checkout master
    git pull
    git submodule update --init --recursive
  1. Im not sure where you are from but it looks as though the boost library download domain may be blocked in China.
    Try running the following command and paste the output here.
    curl -LO https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.bz2

@pacificcode

Thanks.
1. code repo:
$ git branch
* (HEAD detached at dawn-v3.0.0)
2. Ubuntu 16.04 on AWS.

Btw, I live and work in united states.

@hixichen Thank you for the information.
Installing boost in /usr is not going to work, EOS.IO expects boost to be located in $HOME/opt/
The install script eos/eosio_build.sh will install boost in the expected directory.
Remove the boost directory you created in ${HOME}/opt
rm -rf ${HOME}/opt/boost_1_66_0

Update your code from the repo and run the install script.
cd eos
git pull
git submodule update --init --recursive
./eosio_build.sh

This should install boost in:
${HOME}/opt/boost_1_66_0

If you get any errors during the install procedure let me know.

I looked at the $HOME/eos/scripts/eosio_build_ubuntu.sh script and despite the if statement, for some reason, boost was not getting installed, so I did the installation myself, so that shell script would enter the else branch.

Under $HOME/opt:

curl -LO https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.bz2
tar xvf boost_1_66_0.tar.bz2
BOOST_ROOT=/$HOME/opt/boost_1_66_0
export BOOST_ROOT
echo $BOOST_ROOT (To verify the export worked, returned as expected /home/rajita/opt/boost_1_66_0)

I meet the same problem,what should I do?I really need help.Thank you!My PC is MacOS10.12.6
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
/Users/yuanwei/eos/libraries/appbase/Boost_INCLUDE_DIR
used as include directory in directory /Users/yuanwei/eos/libraries/appbase
/Users/yuanwei/eos/libraries/chainbase/Boost_INCLUDE_DIR
used as include directory in directory /Users/yuanwei/eos/libraries/chainbase
/Users/yuanwei/eos/libraries/fc/Boost_INCLUDE_DIR
used as include directory in directory /Users/yuanwei/eos/libraries/fc
/Users/yuanwei/eos/tools/Boost_INCLUDE_DIR
used as include directory in directory /Users/yuanwei/eos/tools
Boost_INCLUDE_DIR (ADVANCED)
used as include directory in directory /Users/yuanwei/eos/contracts/proxy

-- Configuring incomplete, errors occurred!
See also "/Users/yuanwei/eos/build/CMakeFiles/CMakeOutput.log".

>>>>>>>>>>>>>>>>>>>> CMAKE building EOSIO has exited with the above error.

I ran into the same error on ubuntu 16.04. The root cause was a naming mismatch during the boost source download and extraction.

I fixed the issue by editing eos/scripts/eosio_build_ubuntu.sh line 113.
old: tar xf boost.1.66.0.tar.bz2
new: tar xf boost_1_66_0.tar.bz2

It looks like the eos_build_amazon.sh has the same issue.

After the edit the build completed successfully.

It looks as though that typo managed to slip back into the repo, Ill be pushing a PR to straighten that out today.

@pacificcode , I am wondering, is that possible we put all the needed package into a Dockerfile and use the running container as the toolchain?

Like: https://github.com/hixichen/toolchains/tree/master/golang-toolchain

@hixichen We have a docker solution available in the master repo.
/path/to/eos/docker

Were still working on adding features and extras at this time.
Thanks for the input.

@WildBlackBear try to reinstall boost
brew reinstall boost

Was this page helpful?
0 / 5 - 0 ratings

Related issues

IvanYakimov picture IvanYakimov  路  3Comments

guaiguaihw picture guaiguaihw  路  3Comments

hoopslb picture hoopslb  路  3Comments

sim31 picture sim31  路  3Comments

hadramidah picture hadramidah  路  3Comments