LINUX.ORG.RU

Почему ninja такое говно?

 


3

1

Это можно считать криком души, в общем слушайте кул стори.

Решил я значит обновить на своем ноуте генту и в коим то веке решил не переносить систему со старого ноута, а собрать все с 0. Загрузил liveCD, разметка дисков, chroot… все как обычно, выбрал нужный профиль, пересобираю мир… падает на моменте ninja -v -j1 -l0 -C /v.... полез в инет, вычитал что ninja не любит когда нехватает оперативки и следует ограничить MAKEOPTS. Ну ок, ограничил до одного потока, я не тороплюсь, вроде как прошло, но упало при сборке Sushi, это какие то привьюхи для наутилуса, думаю хрен сними, да и наутилус мне нафиг не нужен, поубирал юз флаги что бы суши вообще не требовалось, собираю дальше… опять падает и опять ninja чем то недоволен.

Думаю ок, хрень какая то, пофиг на установкой с 0, не в этот раз, синкнул систему из бекапа, все идеально но надо бы обновить, запустил обновление и….. да ninja падает при сборке, в этот раз уже gnome-shell не хочет собираться.

Самый смак в том что когда билд падает в консоле ты видишь вот такую ошибку ninja: build stopped: subcommand failed. Да как вы могли заметить она очень информативная.

Если скопировать команду и выполнить отдельно то будет вот это

# ninja -v -j1 -l0 -C /var/tmp/portage/gnome-base/gnome-shell-40.1-r1/work/gnome-shell-40.1-build
ninja: Entering directory `/var/tmp/portage/gnome-base/gnome-shell-40.1-r1/work/gnome-shell-40.1-build'
[1/15] x86_64-pc-linux-gnu-gcc  -o src/gnome-shell-portal-helper src/gnome-shell-portal-helper.p/meson-generated_.._.._js_portal-resources.c.o src/gnome-shell-portal-helper.p/gnome-shell-portal-helper.c.o -Wl,--as-needed -Wl,--no-undefined -O2 -pipe -march=native -Wl,-O1 -Wl,--as-needed -Wl,--start-group /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so /usr/lib64/libgjs.so -Wl,--end-group
FAILED: src/gnome-shell-portal-helper
x86_64-pc-linux-gnu-gcc  -o src/gnome-shell-portal-helper src/gnome-shell-portal-helper.p/meson-generated_.._.._js_portal-resources.c.o src/gnome-shell-portal-helper.p/gnome-shell-portal-helper.c.o -Wl,--as-needed -Wl,--no-undefined -O2 -pipe -march=native -Wl,-O1 -Wl,--as-needed -Wl,--start-group /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so /usr/lib64/libgjs.so -Wl,--end-group
/usr/lib/gcc/x86_64-pc-linux-gnu/10.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib64/libgjs.so: undefined reference to `sysprof_clock'
/usr/lib/gcc/x86_64-pc-linux-gnu/10.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib64/libgjs.so: undefined reference to `sysprof_clock_init'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

Повезло что FAILED: src/gnome-shell-portal-helper подсвечивается красным цветом и теперь все стало понятно(нет)

Кто нибудь может рассказать что это за говнище и почему его вдруг начали использовать? Я за последнии пару дней 6 или 7 раз упирался в ошибки с этим сраным ninja и ни разу не понял что он от меня хочет, как этим говном вообще пользоваться?

★★★★★

Ответ на: комментарий от TDrive

Так ошибку же ld вызывает

ld не вызывает ошибку. Он сообщает об ошибке. И для знакомых со сборкой софта в несовпадении имён программ нет никаких противоречий. Потому что, сюрприз-сюрприз, программы могут вызывать другие программы, что в данном случае и происходит. Конкретный набор параметров, с которым в итоге вызывается ld для решения проблемы не нужен, и тебе никак не поможет.

Как уже было выше сказано, убери руки от клавиатуры, покинь помещение, вызови специалистов.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Да не гори ты так, все норм.

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

Разлогиниться и писать от анонимуса, ах какой хитрый ход.

TDrive ★★★★★
() автор топика

Не надо на ninja гнать. Он не совместим с убогим autotools (да, это преимущество, autotools надо поскорее закопать чтобы не фонил) работает быстрее make и выдаёт более понятные сообщения. Один раз так разобрался где проблема, какого-то заголовка не хватало. make выводил непонятную ерунду. Сам ninja от нехватки памяти ни разу не падал, у него потребление ресурсов ерунда по сравнению с компилятором и линкером.

Для вывода команд есть ninja -v.

X512 ★★★★★
()

Команда которая упала вот это, если что:

x86_64-pc-linux-gnu-gcc  -o src/gnome-shell-portal-helper src/gnome-shell-portal-helper.p/meson-generated_.._.._js_portal-resources.c.o src/gnome-shell-portal-helper.p/gnome-shell-portal-helper.c.o -Wl,--as-needed -Wl,--no-undefined -O2 -pipe -march=native -Wl,-O1 -Wl,--as-needed -Wl,--start-group /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so /usr/lib64/libgjs.so -Wl,--end-group

gcc используется в качестве линковщика. gcc уже внутри вызывает ld, ninja про это ничего не знает. Можно поменять gcc на ld и немного подправить команду (убрать -Wl,) и будет прямой вызов ld.

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

Да, я уже понял как все это работает, забей, тема на эмоциях, у меня до этого были похожие ошибки в других пакетах по которым не гуглились багрепорты, при установке системы с 0 билды падают…

Просто на второй день психанул, набухался и пошел писать на ЛОР.

Никаких претензий к ninja у меня больше нету.

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

Да, я уже понял как все это работает

Так исправь название темы, чтоб оно соответствовало контенту. Оптимальный вариант: «Почему у меня в голове говно, а не в ninja?»

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

Уже ни кто не спорит, тут только пара пригоревших анонимусов осталась.

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

Я уже объяснил всю ситуацию на столько на сколько это возможно.

И да, я первый раз познакомился с ninja, не вижу никаких причин почему мне должно быть стыдно.

А вот че ты тут ловишь и что пытаешься доказать мне непонятно.

TDrive ★★★★★
() автор топика

Вроде бы он эффективнее в больших проектах, т.е. экономит время на пересборках, т.к. аккуратнее способен определить что действительно нужно пересобирать, а что можно взять уже из собраного (я так понял его предназначение).

https://mesonbuild.com/Simple-comparison.html

Но лично мне тоже не нравится, потому что когда я собирал большое qt-webengine например. То не нашел способа указать сколько ядер использовать. Нинзя использует все. Это очень плохо когда ядер много (у меня их 6) а ОЗУ мало. Пришлось в виртуалке отключить ядра, и оставить только 2. Если бы я работал на реальной машине, пришлось бы деактивировать ядра в биосе, чтобы собрать программу.

В Мейке же -j работает всегда.

Но это не в своих сборках, а если я свое собираю - то тоже указываю Симейку использовать именно gnu make (т.к. новые симейк по дефолту юзает Нинзю, вместо Мейка). Просто потому что привык к логам сборки от Мейка. Нинзявские совсем другие. Ну и мои проекты обычн не большие, что бы что-то там экономить на времени сборки...

bonta ★★★★★
()

gnome-shell

Решение очевидно - брось каку.

token_polyak ★★★★
()

/usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so /usr/lib64/libgjs.so

У меня сразу возникла мысль, что кто-то из этой компании хочет пересборки. Но не успел поумничать :-)

utanho ★★★★★
()

На арм64 с 4гб оперативы нинзя qtwebenjine в 6 потоков собирает удачно, а ты в 1 с 16гб не можешь!

burato ★★★★★
()
Ответ на: комментарий от TDrive

Wat? Ну, если ты сборку вообще в первый раз видешь, то окей. Или у тебя вообще никогда ошибок при сборке не было? !

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

Или у тебя вообще никогда ошибок при сборке не было? !

Подобных не было, были ошибки с отсутствием утилит необходимых для сборки, были ошибки связанные с конфликтами зависимостей, всякие были, а таких нет. Это вообще первый раз более чем за 10 лет когда у меня гента не собралась с 0 из за каких то странных багов с gjs.

TDrive ★★★★★
() автор топика

тебе нужно собрать новые sysprof или sysprof-capture и пересобрать libgjs с вышеуказанными.

bhfq ★★★★★
()
Ответ на: комментарий от TDrive

stable abi nonsense

Это новомодное введение, проверять системную библиотеку на наличие символов и затем собирать или не собирать некоторые «опциональные» функции (в данном случае gjs). А затем приходит программа зависящая от этих опциональных символов и не собирается. Например прямо сейчас когда переписывают libdnf5 на c++ нужен libsolv от проекта opensuse.

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

в том то и дело никто не пользуется правильно, в gjs наверное meson вот они и должны были добавить туда либо проверку на минимальную версию sysprof либо на нужный символ в sysprof.

https://bugs.gentoo.org/795507

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

я первый раз познакомился с ninja

Для тебя все незнакомое по умолчанию говно?

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

Забей, он уже заявил, что он не должен знать что такое ld и что этот ld вообще пытается делать.

А ты с этим не согласен?
★★★★★

Чё-т проорал.

LamerOk ★★★★★
()

Потому что это очередная модно-молодёжная поделка. Что CMake, что ninja выводит ошибки в каком-то нечитаемом виде. В выводе ninja ещё и дублируются зачастую, будто он команду несколько раз дёргает в надежде, что она заработает.

xaizek ★★★★★
()
Ответ на: комментарий от uberroot

Пётр это имя Влалимира, принявшего мессианский иудаизм.

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

И снимок окружения? 🤦‍♂️ Он Вам вывел ошибку линкера, если не разбираетесь, виновата не программма.

erfea ★★★★★
()

фокусируется на скорости же, поэтому и не информативный видимо

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

А ты с этим тоже не согласен?

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

че сказать то хотел? или ты просто гуляешь по тредам и дублируешь то что в них уже обсудили?

TDrive ★★★★★
() автор топика
Ответ на: А что тогда не говно? от anonymous

Вот у меня вопрос мучает, если все вокруг дерьмо и ненужно, что что кошерно и нужно?

ant

Legioner ★★★★★
()
Ответ на: комментарий от TDrive

Хотел сказать что Вы зря хамите, ВЫ - ССЗБ и хамло, а товарищ правильно всё сказал: проблема если и в программе то этп программа Ваше ДНК.

erfea ★★★★★
()
Ответ на: комментарий от anonymous

Советует ацетона не много добавлять, без запаха …

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

Ну извините что разочаровал Ваше хамское высочество и не осилил читать Ваши высеры больше чем две страницы. Я не достоин Ваших отборных помоев! Посыпаю голову пеплом! Кек.

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

Не гони, в начале треда (да и в конце) я уважительно общался со всеми кто решил помочь и даже спасибо сказал, по хамски только с отдельными личностями которые и сами не отличаются манерами.

У меня зеркальное отношение к людям.

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

Я ассоциирую тебя неуча, который неуважает людей и их труд, с говном.

anonymous
()
Ответ на: комментарий от i-rinat

Чво вы такие злые. Сказали бы что вот мол перестань в глаза долбится, нописано жи undefined reference. ld не нашёл символа в библиотеке значит программа не сможет вызвать функцию, значит ld говорит на этом мои полномочия всё gcc говорит а я вообще тут не причём и молчу а ninja говорит короче ой всё, я им сказала, а они не того не этого фик знает чё тама и всё. Вот развели палемику.

Вопрос правда вообще в другом. Какого **я в дереве портов лежит гномопрограмма которой требуется gjs.so а в нём депрекатнули причём молча функции без криков при компиляции THIS IS DEPRECAAAAATEEED BASSSTAAAAARRRRDDDD!!!!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.