compiling fails with 'boost/preprocessor/cat.hpp' file not found

204 views
Skip to first unread message

Szabolcs Horvát

unread,
Sep 4, 2020, 6:11:59 AM9/4/20
to sage-support

Hello everyone,

I am trying to compile Sage on macOS 10.14.

The package brial-1.2.5 fails to compile.

The error is:

../../libbrial/include/polybori/common/traits.h:26:10: fatal error: 'boost/preprocessor/cat.hpp' file not found
#include <boost/preprocessor/cat.hpp>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

Did anyone succeed to compile Sage on macOS 10.14? Is a separate, manual installation of Boost necessary to compile? Sage does appear to include (or auto-download?) Boost, so I assume this is not the case.

Dima Pasechnik

unread,
Sep 4, 2020, 7:04:27 AM9/4/20
to sage-support
it should work. Sage tries to detect an system-wide installation of
boost, and if it fails it installs a package boost-cropped,
otherwise it uses what's available on the system.

Have a look at the top level config.log to see what happens for you.
E.g. here is a place in config.log where system boost is detected:

[....]
# Checking whether SageMath should install SPKG boost_cropped... ##
## -------------------------------------------------------------- ##
configure:13366: checking for boostlib >= 1.66.0 (106600)
configure:13398: clang++ -std=gnu++11 -c -g -O2 -I/usr/local/include
-I/usr/local/include conftest.cpp >&5
configure:13398: $? = 0
configure:13400: result: yes
configure:13564: will use system package and not install SPKG boost_cropped
## ------------------------------------------------------ ##
## Checking whether SageMath should install SPKG boost... ##
## ------------------------------------------------------ ##
configure:13664: checking whether any of boost_cropped is installed as
or will be installed as SPKG
configure:13673: result: no
configure:13697: clang++ -std=gnu++11 -o conftest -g -O2
-I/usr/local/include -L/usr/local/lib conftest.cpp -lmpfr -lgmp -lm
-lntl >&5
configure:13697: $? = 0
configure:13697: ./conftest
configure:13697: $? = 0
configure:13714: will use system package and not install SPKG boost

[.....]

configure:36187: result: boost-1_66_0:
using system package; SPKG will not be installed
configure:36187: result: boost_cropped-1.66.0.p0:
using system package; SPKG will not be installed

[...]


>
> --
> You received this message because you are subscribed to the Google Groups "sage-support" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to sage-support...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/sage-support/53272397-0628-49ac-91d2-eeccb93fedb2n%40googlegroups.com.

Szabolcs Horvát

unread,
Sep 4, 2020, 7:55:25 AM9/4/20
to sage-s...@googlegroups.com
Hi Dima,

Thanks for the response. I do have boost installed in /opt/local/include, through MacPorts, but I remove MacPorts from the PATH before building Sage (otherwise Sage complains). Therefore, I assumed that this boost installation would not be detected. It appears that it might be sometimes detected and sometimes not? The contents of config.log are a bit unclear to me. I copy the relevant part below. Do you have any suggestion for what I might try, based on this?

## -------------------------------------------------------------- ##
## Checking whether SageMath should install SPKG boost_cropped... ##
## -------------------------------------------------------------- ##
configure:13360: checking for boostlib >= 1.66.0 (106600)
configure:13392: g++ -std=gnu++11 -c -g -O2 -I/opt/local/include conftest.cpp >&5
configure:13392: $? = 0
configure:13394: result: yes
configure:13558: will use system package and not install SPKG boost_cropped
## ------------------------------------------------------ ##
## Checking whether SageMath should install SPKG boost... ##
## ------------------------------------------------------ ##
configure:13658: checking whether any of boost_cropped is installed as or will be installed as SPKG
configure:13667: result: no
configure:13691: g++ -std=gnu++11 -o conftest -g -O2 conftest.cpp -lm >&5
conftest.cpp:24:12: fatal error: 'boost/program_options/errors.hpp' file not found
#include <boost/program_options/errors.hpp>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
configure:13691: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "Sage"
| #define PACKAGE_TARNAME "sage"
| #define PACKAGE_VERSION "9.1"
| #define PACKAGE_STRING "Sage 9.1"
| #define PACKAGE_BUGREPORT "sage-...@googlegroups.com"
| #define PACKAGE_URL ""
| #define PACKAGE "sage"
| #define VERSION "9.1"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_LIBM 1
| #define HAVE_CXX11 1
| #define HAVE_BOOST /**/
| /* end confdefs.h. */
| #include <boost/program_options/errors.hpp>
|
| int
| main ()
| {
|
| boost::program_options::error err("Error message");
| return 0;
|
| ;
| return 0;
| }
configure:13719: no suitable system package found for SPKG boost

You received this message because you are subscribed to a topic in the Google Groups "sage-support" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/sage-support/GCasfFMwOOI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to sage-support...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-support/CAAWYfq0cWt22NZzKAqCZ5epN58vNVPUD3N%2B8F8bfEnHexdKVrA%40mail.gmail.com.

Dima Pasechnik

unread,
Sep 4, 2020, 10:14:24 AM9/4/20
to sage-support


On Fri, Sep 4, 2020 at 12:55 PM Szabolcs Horvát <szho...@gmail.com> wrote:

> Thanks for the response. I do have boost installed in /opt/local/include, through MacPorts, but I remove MacPorts from the PATH before building Sage (otherwise Sage complains). Therefore, I assumed that this boost installation would not be detected. It appears that it might be sometimes detected and sometimes not? The contents of config.log are a bit unclear to me. I copy the relevant part below. Do you have any suggestion for what I might try, based on this?


various Sage  packages have many ways to detect external software, and it's not uncommon to  see loops over
/usr/include, /usr/local/include/, /opt/include, /opt/local/include in their configuration scripts.
Perhaps you are hit by one of these issues.
Or perhaps you left an environment variable set, pointing at /opt/local/include, e.g. CFLAGS or CXXFLAGS or CPPFLAGS...
At least it would explain why your log says


> configure:13392: g++ -std=gnu++11 -c -g -O2 -I/opt/local/include conftest.cpp >&5

which contains -I/opt/local/include

As a workaround, please rename your /opt/local 
while building Sage. 

slelievre

unread,
Sep 4, 2020, 10:43:07 AM9/4/20
to sage-support
I would also suggest trying to build the latest development
version (currently Sage 9.2.beta11) instead of Sage 9.1.

On macOS 10.14.6 I had trouble with a range of
Sage versions around Sage 9.1 but recent betas
have been building fine for me.

I would suggest changing to your Sage root directory
and running:
```
$ git checkout develop
$ git pull origin develop --tags
$ make configure
$ ./configure
$ make -s V=0
```

Also, you might consider switching package manager
from MacPorts to Homebrew, since Sage supports
getting many system packages from Homebrew.

I opened a ticket for also supporting MacPorts:

- Support getting system packages from MacPorts

but cannot promise whether or how soon that might happen.

John H Palmieri

unread,
Sep 4, 2020, 11:31:20 AM9/4/20
to sage-support


On Friday, September 4, 2020 at 7:14:24 AM UTC-7, Dima Pasechnik wrote:


On Fri, Sep 4, 2020 at 12:55 PM Szabolcs Horvát <szho...@gmail.com> wrote:

> Thanks for the response. I do have boost installed in /opt/local/include, through MacPorts, but I remove MacPorts from the PATH before building Sage (otherwise Sage complains). Therefore, I assumed that this boost installation would not be detected. It appears that it might be sometimes detected and sometimes not? The contents of config.log are a bit unclear to me. I copy the relevant part below. Do you have any suggestion for what I might try, based on this?


various Sage  packages have many ways to detect external software, and it's not uncommon to  see loops over
/usr/include, /usr/local/include/, /opt/include, /opt/local/include in their configuration scripts.
Perhaps you are hit by one of these issues.
Or perhaps you left an environment variable set, pointing at /opt/local/include, e.g. CFLAGS or CXXFLAGS or CPPFLAGS...
At least it would explain why your log says

> configure:13392: g++ -std=gnu++11 -c -g -O2 -I/opt/local/include conftest.cpp >&5

which contains -I/opt/local/include

As a workaround, please rename your /opt/local 
while building Sage. 

Or if you think that the system boost being broken is the only problem, you could do

make distclean
./configure --with-system-boost_cropped=no
make


to force Sage to build its own boost.
 
>> > To unsubscribe from this group and stop receiving emails from it, send an email to sage-s...@googlegroups.com.

>> > To view this discussion on the web visit https://groups.google.com/d/msgid/sage-support/53272397-0628-49ac-91d2-eeccb93fedb2n%40googlegroups.com.
>>
>> --
>> You received this message because you are subscribed to a topic in the Google Groups "sage-support" group.
>> To unsubscribe from this topic, visit https://groups.google.com/d/topic/sage-support/GCasfFMwOOI/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to sage-s...@googlegroups.com.

>> To view this discussion on the web visit https://groups.google.com/d/msgid/sage-support/CAAWYfq0cWt22NZzKAqCZ5epN58vNVPUD3N%2B8F8bfEnHexdKVrA%40mail.gmail.com.
>
> --
> You received this message because you are subscribed to the Google Groups "sage-support" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to sage-s...@googlegroups.com.

Dima Pasechnik

unread,
Sep 4, 2020, 12:23:30 PM9/4/20
to sage-support
On Fri, Sep 4, 2020 at 4:31 PM John H Palmieri <jhpalm...@gmail.com> wrote:
>
>
>
> On Friday, September 4, 2020 at 7:14:24 AM UTC-7, Dima Pasechnik wrote:
>>
>>
>>
>> On Fri, Sep 4, 2020 at 12:55 PM Szabolcs Horvát <szho...@gmail.com> wrote:
>>
>> > Thanks for the response. I do have boost installed in /opt/local/include, through MacPorts, but I remove MacPorts from the PATH before building Sage (otherwise Sage complains). Therefore, I assumed that this boost installation would not be detected. It appears that it might be sometimes detected and sometimes not? The contents of config.log are a bit unclear to me. I copy the relevant part below. Do you have any suggestion for what I might try, based on this?
>>
>>
>> various Sage packages have many ways to detect external software, and it's not uncommon to see loops over
>> /usr/include, /usr/local/include/, /opt/include, /opt/local/include in their configuration scripts.
>> Perhaps you are hit by one of these issues.
>> Or perhaps you left an environment variable set, pointing at /opt/local/include, e.g. CFLAGS or CXXFLAGS or CPPFLAGS...
>> At least it would explain why your log says
>>
>> > configure:13392: g++ -std=gnu++11 -c -g -O2 -I/opt/local/include conftest.cpp >&5
>>
>> which contains -I/opt/local/include
>>
>> As a workaround, please rename your /opt/local
>> while building Sage.
>
>
> Or if you think that the system boost being broken is the only problem, you could do
>
> make distclean
> ./configure --with-system-boost_cropped=no
> make
>
>
> to force Sage to build its own boost.

Sage does build its own boost here - the problem is that a broken
(from Sage's point of view) systemwide
install of boost interferes with the build of brial.
> To unsubscribe from this group and stop receiving emails from it, send an email to sage-support...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/sage-support/702943b4-a995-4569-aec2-37affe72d488o%40googlegroups.com.

John H Palmieri

unread,
Sep 4, 2020, 12:31:08 PM9/4/20
to sage-support


On Friday, September 4, 2020 at 9:23:30 AM UTC-7, Dima Pasechnik wrote:
On Fri, Sep 4, 2020 at 4:31 PM John H Palmieri <jhpalm...@gmail.com> wrote:
>
>
>
> On Friday, September 4, 2020 at 7:14:24 AM UTC-7, Dima Pasechnik wrote:
>>
>>
>>
>> On Fri, Sep 4, 2020 at 12:55 PM Szabolcs Horvát <szho...@gmail.com> wrote:
>>
>> > Thanks for the response. I do have boost installed in /opt/local/include, through MacPorts, but I remove MacPorts from the PATH before building Sage (otherwise Sage complains). Therefore, I assumed that this boost installation would not be detected. It appears that it might be sometimes detected and sometimes not? The contents of config.log are a bit unclear to me. I copy the relevant part below. Do you have any suggestion for what I might try, based on this?
>>
>>
>> various Sage  packages have many ways to detect external software, and it's not uncommon to  see loops over
>> /usr/include, /usr/local/include/, /opt/include, /opt/local/include in their configuration scripts.
>> Perhaps you are hit by one of these issues.
>> Or perhaps you left an environment variable set, pointing at /opt/local/include, e.g. CFLAGS or CXXFLAGS or CPPFLAGS...
>> At least it would explain why your log says
>>
>> > configure:13392: g++ -std=gnu++11 -c -g -O2 -I/opt/local/include conftest.cpp >&5
>>
>> which contains -I/opt/local/include
>>
>> As a workaround, please rename your /opt/local
>> while building Sage.
>
>
> Or if you think that the system boost being broken is the only problem, you could do
>
> make distclean
> ./configure --with-system-boost_cropped=no
> make
>
>
> to force Sage to build its own boost.

Sage does build its own boost here - the problem is that a broken
(from Sage's point of view) systemwide
install of boost interferes with the build of brial.

Sage was using the system installation of the standard package "boost_cropped" ("configure:13558: will use system package and not install SPKG boost_cropped"). It would indeed have built its own version of the optional package "boost" if that had been requested, but that's not part of the standard build process. Somehow the configure file recognized that boost was broken but not boost_cropped. That should probably be addressed.
 

Dima Pasechnik

unread,
Sep 4, 2020, 2:08:25 PM9/4/20
to sage-support


On Fri, 4 Sep 2020, 17:31 John H Palmieri, <jhpalm...@gmail.com> wrote:


On Friday, September 4, 2020 at 9:23:30 AM UTC-7, Dima Pasechnik wrote:
On Fri, Sep 4, 2020 at 4:31 PM John H Palmieri <jhpalm...@gmail.com> wrote:
>
>
>
> On Friday, September 4, 2020 at 7:14:24 AM UTC-7, Dima Pasechnik wrote:
>>
>>
>>
>> On Fri, Sep 4, 2020 at 12:55 PM Szabolcs Horvát <szho...@gmail.com> wrote:
>>
>> > Thanks for the response. I do have boost installed in /opt/local/include, through MacPorts, but I remove MacPorts from the PATH before building Sage (otherwise Sage complains). Therefore, I assumed that this boost installation would not be detected. It appears that it might be sometimes detected and sometimes not? The contents of config.log are a bit unclear to me. I copy the relevant part below. Do you have any suggestion for what I might try, based on this?
>>
>>
>> various Sage  packages have many ways to detect external software, and it's not uncommon to  see loops over
>> /usr/include, /usr/local/include/, /opt/include, /opt/local/include in their configuration scripts.
>> Perhaps you are hit by one of these issues.
>> Or perhaps you left an environment variable set, pointing at /opt/local/include, e.g. CFLAGS or CXXFLAGS or CPPFLAGS...
>> At least it would explain why your log says
>>
>> > configure:13392: g++ -std=gnu++11 -c -g -O2 -I/opt/local/include conftest.cpp >&5
>>
>> which contains -I/opt/local/include
>>
>> As a workaround, please rename your /opt/local
>> while building Sage.
>
>
> Or if you think that the system boost being broken is the only problem, you could do
>
> make distclean
> ./configure --with-system-boost_cropped=no
> make
>
>
> to force Sage to build its own boost.

Sage does build its own boost here - the problem is that a broken
(from Sage's point of view) systemwide
install of boost interferes with the build of brial.

Sage was using the system installation of the standard package "boost_cropped" ("configure:13558: will use system package and not install SPKG boost_cropped").
oops, yes, you are right.

we can add an extra header check in spkg-config.m4 of boost_cropped


To unsubscribe from this group and stop receiving emails from it, send an email to sage-support...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-support/41ee60f8-e211-4bb0-88db-4483ec9e960co%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages