Scons не удается найти git и компилятор - PullRequest
0 голосов
/ 30 апреля 2020

Я использую подсистему Windows для Linux с Ubuntu Focal.

После установки
sudo apt install build-essential git m4 scons zlib1g zlib1g-dev libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev python-dev python libboost-all-dev
Я пытаюсь собрать gem5 с помощью scons из папки gem5
scons build/ARM/gem5.opt -j 4
и получите ошибку

Warning: Failed to find git repo directory: a bytes-like object is required, not 'str' :
TypeError: argument should be integer or bytes-like object, not 'str' :
   File "/home/user/gem5/Sconstruct", line 355:
       main['GCC'] = CXX_version and CXX_version.find('g++')>= 0

В более старой сборке WSL с использованием Bionics эти шаги работали без проблем. Есть идеи, чего мне здесь не хватает?

1 Ответ

1 голос
/ 01 мая 2020

В python 3 взаимодействие подпроцесса будет возвращать подобный байту объект здесь: gem5 SConstruct , который устанавливает CXX_version (python байтовоподобные документы: PIPE и общаться )

Этот байтовоподобный объект вызывается функцией find с аргументом str, но его следует преобразовать в байты для поиска в байтовоподобном объекте. Вероятно, именно функция readCommand, которая вернула выходные данные для связи, должна преобразовывать выходные данные из байтовоподобных данных в str.

С какой версией python и SCons был этот запуск? Я предполагаю, что python 3 был использован, и SConstruct для этой сборки не совместим с python 3.

Возможно, попробуйте сейчас использовать python2 .7.

Один способ сделать это через virtualenv

# assuming linux
python2.7 -m pip install virtualenv
virtualenv /home/user/venv
/home/user/venv/bin/pip install -U setuptools wheel pip
/home/user/venv/bin/pip install scons
cd /home/user/gem5
/home/user/venv/bin/scons
...