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 и ни разу не понял что он от меня хочет, как этим говном вообще пользоваться?

★★★★★

Сколько же у вас памяти? Я хромиум ниньзей успешно собираю на древнем ноуте с 16ГБ рам и разделом для сборки в оперативке чтобы ссд не тревожить.

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

У меня 16 гигов, в случае с liveUSB могут быть приколы с количеством оперативки, но сейчас я уже отказался от сборки с 0 и просто пытаюсь обновиться, так что сейчас честные 16 гигов. Даже /tmp монтируется на диск а не в оперативку.

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

Не должно такого быть. Я даже для своих проектов использую ниньзю, всем доволен. Есть ещё самурай, переписанный на си ниньзя.

curver
()

оно нинзя конечно говно, причём качественное, генномодифицированное, но в данном случае твоя проблема не в нём, в вашей же гентушной багтраке есть решение https://bugs.gentoo.org/795471

надеюсЪ дальше сам разберёшься.))

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

Спасибо, это помогло, ЛОР - торт.

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

Что же получается, при установке генты с 0 нужно так же пересобирать dev-libs/gjs….

Жесть какая то….

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

ЛОР - торт.

А ты не пробовал погуглить? По запросу «undefined reference to `sysprof_clock_init’» первый же результат — https://bugs.gentoo.org/795471.

ninja не любит когда нехватает оперативки

На небольших проектах процесс Ninja у меня использует около 32 МБ памяти. На относительно большом, 2190 файлов, съел 190 МБ. По сравнению с компоновщиком и компилятором, которые легко отъедают гигабайты, это вообще пшик.

Или ты имеешь в виду то, что Ninja прекращает сборку, когда запущенный им компилятор падает? А что вообще система сборки может в таком случае сделать? Компилятор вернул ошибку. Всё. Дальнейшая работа в текущей ветке зависимостей невозможна.

i-rinat ★★★★★
()

А что тогда не говно?

Вот я читаю форумы. То make и autoconf говно мамонта, то cmake дерьмо qbs (или как его там) лучше! А другой утверждает что и qbs говно и ненужно.

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

Пётр

anonymous
()
Ответ на: А что тогда не говно? от anonymous

без понятия, в данном случае тема на эмоциях, о чем я сообщил в первом посте и является следствием того что я несколько раз подряд столкнулся с ошибками именно от ninja

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

с ошибками именно от ninja

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

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

Монитор виноват! Ошибку показывает! :)

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

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

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

Не разобрался ты ни в чём, если считаешь, что сообщение о приведённой ошибке вывела система сборки, а не что-то другое.

Там из вывода сразу видно, что ошибку выдал ld.

А чтобы ещё сильнее на это указать, приводится сообщение ld returned 1 exit status

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

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

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

А чтобы ещё сильнее на это указать, приводится сообщение ld returned 1 exit status

ну и че это по твоему пример для подражания?

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

pc-linux-gnu/bin/ld: /usr/lib64/libgjs.so: undefined reference tosysprof_clock_init’`

Уж не знаю куда понятнее ещё мог ld сообщить.

Человек, который юзает нинзю ничего не смог по этому поводу сказать, потому что нинзя тут ни причём.

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

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

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

Вот только тупишь тут ты. Примерно на том же уровне, что и люди, которые посылали гневные письма автору Curl.

Ни в одном из твоих сообщений нет ни намёка на то, что ошибку вызывает Ninja. Более того, в выхлопе, который ты привёл в заглавном сообщении видно, что компоновщик не смог найти символ, поэтому завершился с ненулевым кодом выхода. Ninja репортит тебе эту информацию. Как будет репортить любой make-подобный инструмент иерархической сборки.

Ты пытаешься утверждать, что ninja прячет сообщения об ошибках от софта, который запускает. Это не так. Наоборот, нужны дополнительные действия, чтобы их спрятать. Видимо, скрипты сборки в Gentoo что-то подобное и делают.

Ты пытаешься свою неспособность разобраться в проблемах сборки софта возложить на ninja. Это глупо. Примерно так же глупо, как жаловаться на компилятор, который не пишет за тебя код. Нет, компиляторы сейчас уже умеют подсказывать, что вот у тебя printf() в коде вызывается, а <stdio.h> ты включить забыл. Но они никак не смогут разобраться в причинах отсутствия символов в сторонних библиотеках.

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

Ты развей идею и расскажи каким образом система сборки должна узнать что не понравилось внешней утилите ld и сообщить что именно не так, если сама утилита ld сообщила уже всё что могла?

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

Она сообщила, что ld вызвал exit code 1

ах, если бы все так сообщали об ошибках, мир был бы прекрасен.

Иди проспись уже.

сказал чувак который срется в закрытой теме…

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

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

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

Жаль, что ты не ограничился выводом этой ошибки и тупишь дальше.

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

Конкретная команда из лога:

pc-linux-gnu/bin/ld: /usr/lib64/libgjs.so: undefined reference tosysprof_clock_init’

Разбирайся. Это так сложно?

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

Нинзя должен был сообщить «пересобери вон ту штуку!»? Нет, так не могло бы быть.

К тому же ты не привёл лог изначальной сборки. Может ты запускал emerge с -q

grem ★★★★★
()

падает на моменте ninja -v -j1 -l0 -C /v…. полез в инет, вычитал что ninja не любит когда нехватает оперативки и следует ограничить MAKEOPTS. Ну ок, ограничил до одного потока

Ограничить MAKEOPTS… У переменной прямо в названии сказано, что это опции для make! Какое отношение это имеет к Ninja? Тем более, у тебя в строке запуска Ninja написано, что запускать сборку нужно в один поток за раз: «-j1».

Команду ему нужно… Опция «-v» у Ninja означает «показывать выполняемые команды». У тебя всё есть, тебе всё показывается.

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

показать конкретную команду

Тебе показали конкретную команду!

что бы я скопировал ее, воспроизвел ошибку и уже разбирался с нею

Здесь почему-то произошёл фейл.

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

Ограничить MAKEOPTS… У переменной прямо в названии сказано, что это опции для make! Какое отношение это имеет к Ninja? Тем более, у тебя в строке запуска Ninja написано, что запускать сборку нужно в один поток за раз: «-j1».

Это не оригинальная срочка, она скопированная с последнего трабла.

Команду ему нужно… Опция «-v» у Ninja означает «показывать выполняемые команды». У тебя всё есть, тебе всё показывается.

Я рад за ninja но на кой хрен я должен вкуривать эти опции?

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

Это правила хорошего тона, если они их не соблюдают то я имею полное право называть их говном.

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

Это не оригинальная срочка, она скопированная с последнего трабла.

Культ карго. Копипастишь в терминал всё подряд в надежде, что какая-нибудь команда сработает.

но на кой хрен я должен вкуривать эти опции?

Потому что на какой-то хрен ты решил собирать софт. Решил собирать, значит должен разобраться.

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

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

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

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

Культ карго. Копипастишь в терминал всё подряд в надежде, что какая-нибудь команда сработает.

В какой терминал? Я на форум скоппировал текущее состояние дел, мб немного не точно ну и хрен с ним.

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

нет

А это что?

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
i-rinat ★★★★★
()
Ответ на: комментарий от TDrive

Я на форум скоппировал текущее состояние дел

Тупак ты на форум написал. И пытаешься бравировать невежеством.

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

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

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

Тупак ты на форум написал. И пытаешься бравировать невежеством.

Я давным давно отметил эту тему как решенную) Если бы вы два клоуна не пришли то уже забыл бы про нее.

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

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

Нет это так не работает) То что я решил с этим разбираться ни к чему меня не обязывает лол.

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

Оооо, ты дошёл до пункта «Итак, оно не работает…». Прогрессируешь. Того гляди до чтения документации дорастёшь.

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

Сорян, я перестал понимать о чем ты.

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