LINUX.ORG.RU

Прошу помощи, не собирается llvm

 , , сборка системы


1

1

На gentoo давно, но глубоких знаний не имею, по мере возникновения проблем обычно решал их через ГуглЯние и переводчик. На этот раз сдох винт на старенькой машине и одновременно уронил систему на основной, пришлось поднимать с нуля по новой на обоих. Дак вот на более новой не без проблем, но все собралось, а старенькая ни в какую - уже неделю мучаюсь. Пробовал и на ней собирать и после начального разворачивания системы перекидывать винт на более мощную. Затык всегда на gcc и llvm, но если gcc удалось кое как победить через O1, вместо O2 - pipe, но с llvm никак, сил уже нет, ГуглЯние не помогает или я не то ищу. Короче сборка всегда падает с руганью на FAILED: include/llvm/IR/Attributes.inc

Вот ссылка на полный лог https://disk.yandex.ru/d/IpdvphtWv-HGoQ

make.conf на обоих системах одинаковые, кроме -march=amdfam10 в проблемной системе.

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=amdfam10 -O2 -pipe"
#для сборки gcc
#CFLAGS="-march=native -O1"
CXXFLAGS="${CFLAGS}"
USE="elogind libkms opengl gtk wifi python unicode alsa pulseaudio dri eudev nls dbus samba mtp jpeg djvu rar session X -radeon -amdgpu nvidia -consolekit -systemd s3tc -bindist -nouveau -video_cards_nv -minimal -gnome -kde -qt4 -bluetooth -ipv6 -networkmanager -modemmanager"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage ${PORTDIR_OVERLAY}"
DISTDIR="/var/cache/distfiles"
PKGDIR="${PORTDIR}/packages"
MAKEOPTS="-j1"
EMERGE_DEFAULT_OPTS="--jobs=5 --quiet-build=y"
GENTOO_MIRRORS="ftp://ftp.corbina.net/pub/Linux/gentoo http://mirror.yandex.ru/gentoo-distfiles ftp://mirror.yandex.ru/gentoo-distfiles"
GRUB_PLATFORMS="pc"
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="-* @FREE"
INPUT_DEVICES="evdev keyboard mouse"
VIDEO_CARDS="nvidia"
LINGUAS="ru en"
L10N="ru en"
AUTOCLEAN="yes"
LC_MESSAGES=C

Советы прошу давать конкретные с последовательностью действий, ибо пространные объяснения или намеки не факт что смогу осмыслить в силу нулевого представления о програмировании :)



Последнее исправление: mshicko (всего исправлений: 1)

дополню

Еще пробовал calculate накатывать, дак система поднимается, но при попытке обновления та же история.

mshicko
() автор топика
Ответ на: комментарий от alexanius

это лог из chroot’a винт прицеплен к новой машине (та на которой система собралась нормально) 16 Гб оперативки и сам винт с системой 1 Тб, как такое может быть? Никаких tmpfs не использую.

mshicko
() автор топика
Ответ на: комментарий от alexanius

Получается что при сборке своей системы ему всего хватало, а как только chroot и -march=amdfam10, так сразу не хватает памяти? Как-то это странновато…

mshicko
() автор топика
Ответ на: комментарий от mshicko

в chroot компилятор под amdfam10 и используется он, и я так понял что это не хоста процессор
если для другой системы компилировать нужно вроде SYSROOT=/путь/к/другой/системе/ ROOT=/путь/к/другой/системе/ emerge

doc0
()
Последнее исправление: doc0 (всего исправлений: 1)
Ответ на: комментарий от doc0

Так еще раз, чтобы прояснить и никого не путать. Есть старая машина с -march=amdfam10 на которой не собирается llvm, и есть новая с -march=sandybridge, где все собралось и теперь винт от старой прицеплен к ней и система собирается в chroot с прописанным -march=amdfam10, чтобы потом на старой все это взлетело. Если на старой машине еще можно было бы списать все на железо, то тут с железом все норм, свою систему же оно собрало. Хотя раньше (года 2 назад) я и на старой собирал gentoo из stage3, и все было нормально.

Вообще как я понял проблема в отсутствии include/llvm/IR/Attributes.inc, но ничего на этот счет найти не удается, кроме того что эта фигня вроде как должна быть в пакете сборки самого llvm.

mshicko
() автор топика
Ответ на: комментарий от doc0

''' если для другой системы компилировать нужно вроде SYSROOT=/путь/к/другой/системе/ ROOT=/путь/к/другой/системе/ emerge '''

Да с путями вроде все нормально, все разделы монтирую по Hendbook’у, и потом chroot туда делаю, остальные пакеты собираются без проблем, затык именно в llvm.

mshicko
() автор топика

MAKEOPTS="-j1" emerge --ignore-default-opts --jobs=1 --quiet-build=n system

потом уже таким же лвм

по факту тебе легче со stage 3 уже давно развернуться было, и смысл юзать отличное от march native? буратинить потом на лоре?

deity ★★★★
()
Последнее исправление: deity (всего исправлений: 1)
Ответ на: комментарий от deity
MAKEOPTS="-j1" emerge --ignore-default-opts --jobs=1 --quiet-build=n system

@system пересобран на 100 рядов, но дело в том что собирается он только до llvm, ну и частично после него если сделать –skipfirst. Думаю что сборка дойдет ровно до llvm и все, привет. Ну в любом случае сейчас попробую.

mshicko
() автор топика
Ответ на: комментарий от mshicko

в chroot компиляторы библиотеки и т.п. запускаются собранные для amdfam10 и соответственно они не работают правильно на хосте который sandybridge, используй SYSROOT а не chroot

doc0
()
Ответ на: комментарий от deity

Ну я так понял разница с моим make.conf только в jobs=1 ? Тогда точно не поможет, я пробовал и --jobs=1 и просто emerge -a1 sys-devel/llvm и пробовал версию sys-devel/llvm маскировать а последнюю из нестабильных размаскировать, тоже не помогло. За неделю уже как только не извращался.

mshicko
() автор топика
Ответ на: комментарий от doc0
в chroot компиляторы библиотеки и т.п. запускаются собранные для amdfam10 и соответственно они не работают правильно на хосте который sandybridge, используй SYSROOT а не chroot

То есть собирать пакет не в chroot, а в своей системе с указанием куда потом его запихнуть? Ну допустим целевая система у меня смонтирована в /mnt, как будет выглядеть команда?

mshicko
() автор топика
Ответ на: комментарий от mshicko

молодец, не в chroot нужно, только я сам не пробовал еще толком
и нужно на старом полный вывод gcc -v -E -x c -march=native -mtune=native - < /dev/null 2>&1 | grep cc1 | perl -pe 's/^.* - //g;' вместо -march=amdfam10 переписать, потому-что -march=amdfam10 без -mno-* компилятор может включить оптимизации которых может не оказаться физически в процессоре и не правильно работать уже после возврата накопителя

doc0
()
Ответ на: комментарий от doc0

ну так то у меня и прописано CFLAGS="-march=amdfam10 -mmmx -m3dnow -msse -msse2 -msse3 -mno-ssse3 -msse4a -mcx16 -msahf -mno-movbe -mno-aes -mno-sha -mno-pclmul -mpopcnt -mabm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-sgx -mno-bmi2 -mno-pconfig -mno-wbnoinvd -mno-tbm -mno-avx -mno-avx2 -mno-sse4.2 -mno-sse4.1 -mlzcnt -mno-rtm -mno-hle -mno-rdrnd -mno-f16c -mno-fsgsbase -mno-rdseed -mprfchw -mno-adx -mfxsr -mno-xsave -mno-xsaveopt -mno-avx512f -mno-avx512er -mno-avx512cd -mno-avx512pf -mno-prefetchwt1 -mno-clflushopt -mno-xsavec -mno-xsaves -mno-avx512dq -mno-avx512bw -mno-avx512vl -mno-avx512ifma -mno-avx512vbmi -mno-avx5124fmaps -mno-avx5124vnniw -mno-clwb -mno-mwaitx -mno-clzero -mno-pku -mno-rdpid -mno-gfni -mno-shstk -mno-avx512vbmi2 -mno-avx512vnni -mno-vaes -mno-vpclmulqdq -mno-avx512bitalg -mno-movdiri -mno-movdir64b -mno-waitpkg -mno-cldemote -mno-ptwrite --param l1-cache-size=64 --param l1-cache-line-size=64 --param l2-cache-size=512 -mtune=amdfam10 -O2 -pipe" Это я для простоты сказал просто -march=amdfam10, пока уходил видимо свет отрубили, пришел комп после ребута, так что результата пока нет, запустил заново.

mshicko
() автор топика
Ответ на: комментарий от doc0

Помогло, llvm собрался по твоему рецепту, чрутнулся в систему запустил обновляться мир и в списке подлежащих установке llvm не значится, надеюсь что соберется до конца теперь. Спасибо тебе огромное, дружище, реально уже неделю мучился с ним.

Как мир дособерется - закрою тему.

mshicko
() автор топика
Ответ на: комментарий от mshicko

В chroot вообще не заходи, в нем можно работать только если там скомпилированно для generic или под такой-же процессор, у тебя ошибки опять будут т.к. в нем запускается софт собранный под другой процессор, при SYSROOT софт запускается из / для компиляции и т.п.

doc0
()
Последнее исправление: doc0 (всего исправлений: 1)
Ответ на: комментарий от doc0

Действительно, теперь dev-qt/qtcore вылетел с ошибкой. Сейчас попробую через sysroot мир собрать.

mshicko
() автор топика

Разрешилось

В общем не знаю почему оно на старой машине не собиралось, возможно памяти не хватало, а на новой не собиралось из-за конфликта архитектур процессоров. Помогло:

SYSROOT=/mnt ROOT=/mnt emerge -a1 sys-devel/llvm
SYSROOT=/mnt ROOT=/mnt emerge -auND @world

Сейчас уже иксы накатываются. Всем откликнувшимся большое спасибо.

mshicko
() автор топика
Ответ на: Разрешилось от mshicko

у себя проверил и обнаружил что это не совсем правильно
нужно еще PORTAGE_CONFIGROOT=/mnt указывать чтобы настройки make.conf брались из /mnt/gentoo иначе все равно настройки make.conf берутся из / хоста компилируют для не целевой архитектуры

должно быть примерно так
SYSROOT=/mnt ROOT=/mnt PORTAGE_CONFIGROOT=/mnt emerge -ave1 @world

вы можете посмотреть какие пакеты собраны не правильно для архитектуры amdfam10
grep amdfam10 /mnt/var/db/pkg/*/*/CFLAGS и пересобрать, если их уже много, сорри, вывод можно преобразовать

doc0
()
Ответ на: комментарий от doc0

разницей можно найти неправильные между тем что в /mnt/etc/portage/ и содержимым /mnt/var/db/pkg/
или совпадением /etc/portage/ и /mnt/var/db/pkg/

doc0
()

т.е. у вас неправильно запускалось amdfam10 на машине sandybridge, а без PORTAGE_CONFIGROOT скомпилировалось неправильно sandybridge sandybridge, и наоборот теперь на машине amdfam10 не запуститься sandybridge, с PORTAGE_CONFIGROOT должно использоваться машина sandybridge для компиляции amdfam10 и запуска amdfam10 на amdfam10

doc0
()
Последнее исправление: doc0 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.