Estou tentando construir o MongoDB v4.0 no CentOS7 ( https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source ) e não estou familiarizado com o conjunto de ferramentas python incluído para construção. O conjunto de ferramentas requer gcc8.2 ou mais recente, que instalei com devtoolset-8-gcc
e devtoolset-8-g++
. Eu habilito o conjunto de ferramentas usando scl enable devtoolset-8 bash
E executo a construção do scons seguindo o guia de construção, no entanto, o scons parece construir seu próprio ambiente que não inclui a biblioteca em /opt/rh/devtoolset-8/
.
[user@localhost mongo.git]$ sudo scl enable devtoolset-8 bash
[sudo] password for user:
[root@localhost mongo.git]# gcc --version
gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3)
Copyright (C) 2018 Free Software Foundation, Inc.
...
[root@localhost mongo.git]# ./buildscripts/scons.py
scons: Reading SConscript files ...
scons version: 2.5.0
python version: 2 7 5 'final' 0
...
Checking if C compiler is GCC 8.2 or newer...no
Checking if C++ compiler is GCC 8.2 or newer...no
ERROR: Refusing to build with compiler that does not meet requirements
See /opt/mongodb/mongo.git/build/scons/config.log for details
O conteúdo do arquivo de log está disponível em https://pastebin.com/jB2q4NxN .
Minhas tentativas de modificar o script python para incluir o caminho de acordo com o manual do scons resultaram em outro erro:
[root@localhost mongo.git]# buildscripts/scons.py all
Traceback (most recent call last):
File "buildscripts/scons.py", line 7, in <module>
env = Environment(ENV = {'PATH' : os.environ['PATH']})
NameError: name 'Environment' is not defined
Depois de adicionar as linhas
import os
env = Environment(ENV = {'PATH' : os.environ['PATH']})
Para o meu buildscripts/scons.py
arquivo. Estou adicionando isso no lugar errado, talvez? Por que a variável de ambiente não está disponível?
Obrigado.
Apenas nomeie o caminho para o compilador com as variáveis CC e CXX na linha de comando do SCons:
scons CC=/path/to/toolset/gcc CXX=/path/to/toolset/g++
Observe, no entanto, que o GCC 8 não é oficialmente compatível com a compilação do MongoDB 4.0. Você pode achar que ele não compila ou que compila com avisos que são promovidos a erros. Você pode contornar alguns deles adicionando o sinalizador
--disable-warnings-as-errors
à sua invocação de SCons.A razão pela qual você não vê as variáveis de ambiente em sua compilação é que os SCons, por padrão, ignoram o ambiente dos usuários no interesse de produzir compilações reproduzíveis. Se você realmente deseja permitir que os SCons vejam o ambiente de shell atual, você pode adicionar
--variables-files=etc/scons/propagate_shell_environment.vars
à sua invocação de SCons.