yandex / tomita-parser

Other
495 stars 112 forks source link

Не получается собрать при выполнении пункта с make на Ubuntu #139

Open by22shh opened 3 years ago

by22shh commented 3 years ago

/home/baymxs/Рабочий стол/tomita/tomita-parser/src/contrib/tools/bison/gnulib/src/freadahead.c: In function ‘freadahead’: /home/baymxs/Рабочий стол/tomita/tomita-parser/src/contrib/tools/bison/gnulib/src/freadahead.c:91:3: error: #error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib." 91 | #error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib." | ^~~~~ make[2]: [contrib/tools/bison/gnulib/CMakeFiles/tools-bison-gnulib.dir/build.make:663: contrib/tools/bison/gnulib/CMakeFiles/tools-bison-gnulib.dir/src/freadahead.c.o] Ошибка 1 make[1]: [CMakeFiles/Makefile2:1874: contrib/tools/bison/gnulib/CMakeFiles/tools-bison-gnulib.dir/all] Ошибка 2 make: *** [Makefile:95: all] Ошибка 2

victorbocharov commented 3 years ago

Какая версия Ubuntu и gcc? Откуда вы склонировали проект?

by22shh commented 3 years ago

Какая версия Ubuntu и gcc? Откуда вы склонировали проект?

gcc - 9.3.2 Ubuntu - 20.04.1 Указанную версию в README установить не получается, к сожалению.

by22shh commented 3 years ago

Проект клонировали с https://github.com/victorbocharov/tomita-parser/tree/no_stlport и https://github.com/yandex/tomita-parser

by22shh commented 3 years ago

В каждом случае была одна и та же ошибка, только в первом по процентам чуть дальше продвинулась

victorbocharov commented 3 years ago

Ветка https://github.com/victorbocharov/tomita-parser/tree/no_stlport - правильная.

Я пока не довёл до конца актуализацию кода для свежих версий gcc. Вот тут работающие и не работающие варианты:

https://travis-ci.org/github/victorbocharov/tomita-parser/builds/717297227

На 20.04 томита собирается версиями gcc до 7 включительно. gcc 8 собирает только с ключём cmake -DUSE_INTERNAL_STL=yes .

Инструкция по сборке здесь: https://github.com/victorbocharov/tomita-parser/blob/no_stlport/docker/Dockerfile-for-travis Там, в частности, показано как поставить нужную версию gcc, а не ту, которая стоит в дистрибутиве по умолчанию.

by22shh commented 3 years ago

Т.е. есть возможность поднять томиту в докере?

victorbocharov commented 3 years ago

Т.е. есть возможность поднять томиту в докере?

Наверняка есть ( см. https://github.com/nlpub/tomita-docker ), но я не пробовал. Докер на travis использован только для того, чтобы проверить с разными версиями Ubuntu. Встроенными средствами travis это (разные версии Ubuntu) сделать не получилось.

SidorkinAlex commented 3 years ago

получил такую же ошибку при сборке томиты в докере на образе ubuntu:20.04

victorbocharov commented 3 years ago

Скорее всего проблема в том, что томита не собирается компилятором по умолчанию в новых версиях Ubuntu. Вот здесь текущее состояние собираемости томтиы под linux в докере:

https://travis-ci.org/github/victorbocharov/tomita-parser/builds/717297227

Смотрите на строчки с USE_INTERNAL_STL=yes.

Обновление кода (удаление и замена разного legacy) пока не завершено, к сожалению.

Antipire commented 3 years ago

gcc 7.5, ubuntu 19.04 Переустановил gcc, g++ до версии 7.5 (была 10) и проблема всё еще осталась. Пишет ошибку в библиотке gnulib в файле freadahead.c error: #error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib.". При обращении к гитхабу gnulib с такой ошибкой мало кто сталкивался. CMake прошел без ошибок, а вот make не заводится

victorbocharov commented 3 years ago

@Antipire Компьютер - это amd64 (т.е. не Mac и не ARM)? Вы взяли исходники из https://github.com/victorbocharov/tomita-parser (ветка no_stlport)? g++ --version говорит, что он 7.5 ?

Antipire commented 3 years ago

@victorbocharov Да, AMD64, нет, вот ветку как раз не пробовал no_stlport, да, версия g++ и gcc говорят версия 7.5.0. Других версий не установлено. У товарища на ubuntu 18.04 получилось собрать проект. Скорее всего проблема в версии ubuntu.

victorbocharov commented 3 years ago

@Antipire , возьмите ветку no_stlport из victorbocharov/tomita-parser. Она отличается от основной тем, что решает проблемы со сборкой. Частично. Судя по логам на travis (тем, что упомянуты выше) в 18.04 и 20.04 с g++ 7.5.0 собралось.

victorbocharov commented 3 years ago

@Antipire напишите, пожалуйста, что в итоге получится.

Antipire commented 3 years ago

Скорее всего в силу незнания и неопытности, добиться успеха не получилось. Нам в рамках лабораторной работы необходимо собрать данный парсер, а методичка очень старая и предлагает вообще всё делать через Vagrant. И я еще соврал, когда говорил, что версия ubuntu 20.04, хотя на самом деле 21.04. Пробовал так-же ветку с no_stlport, а ошибки были абсолютно такие-же. Я не пробовал еще использовать Docker для собрки, но этот вариант стоит рассмотреть. В ближайшие дни однозначно нужно попробовать, как получится сообщу, а так ближайшее решение - просто установить ubuntu 18.04. Будем учиться, спасибо Вам за помощь!

victorbocharov commented 3 years ago

@Antipire для того, чтобы попробовать с другой ОС, не надо её устанавливать. Возьмите вот этот докерфайл и соберите его в докере вот этой командой:

sed "s/DISTRIB_PLACEH
OLDER/ubuntu:21.04/" Dockerfile-for-travis | docker build --build-arg COMPILER_VERSION=7 --build-arg USE_INTERNAL_STL=yes --file - .

Так подберёте версию компилятора и дистрибутива, которые у вас работают, без переустановки. Далее вам останется повторить то, что сделано в докерфайле без докера.

SidorkinAlex commented 3 years ago

я по итогу собрал вне докера, у себя на ос и просто прокинул папку внутрь контейнера

alexeysklemin commented 8 months ago

У меня такая же ошибка на совершенно собственном проекта @ cmake error https://github.com/alexeysklemin/cmkeStuding/tree/main/comp/computers