LINUX.ORG.RU
ФорумTalks

Баг gmake и webkit

 , plan9.org.ru, стена плача


0

1

Собственно, линукс в плане сборки программ давно был предметом насмешек, но то, что произошло сегодня, перевернуло все мои представления о сложности процесса сборки.

Решил я по простоте душевной собрать свеженький Webkit (как оказалось потом, одна из старых версий-таки была в репах, и проблема разрешилась сама собой), установил все зависимости, и сделал ./configure ... && make. Ничто не предвещало беды (я умолчу про то, что оно собиралось дольше чем ядро), но через какой-то момент make упал с ошибкой:

make: execvp: /bin/sh: Argument list too long

Вкупе со всеми остальными тредами «куда катится линукс?» это довольно-таки опечалило меня.

// Да, баг уже был отправлен, есть патчи

А вопрос таков: почему нельзя сделать систему сборки «простой»?

★★★★★

>почему нельзя сделать систему сборки «простой»?

Не по уставу.

Deleted
()

и сделал ./configure ... && make

Ну и что ты хотел от автолулзов?

Deleted
()

Из портов WebKit автолулз использует только гткшный

annulen ★★★★★
()

линукс в плане сборки программ давно был предметом насмешек

...неуравновешенного кодера, покончившего с собой?

make: execvp: /bin/sh: Argument list too long

Вкупе со всеми остальными тредами «куда катится линукс?»

Ну, накосячил автор Makefile. Бывает.

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

Мопед не мой :) В оригинале имелось в виду GNU, вероятно.

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

И что в гифке не так?

Бессмысленность и бесполезность вывода километровых портянок текста на терминал.

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

1. А кому это мешает?

Это мешает тем, кто хочет понять, на какой именно стадии компиляции процесс находится в данный момент. Автолулзы такой информации просто не дают.

2. Удобно искать проблемы сборки.

Проблемы удобно искать по логу сборки, который аккуратно сохранён в текстовом файле. Вывод автолулзов на терминал, особенно со скоростью 10 строк в секунду, совершенно бесполезен.

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

Может быть, может быть, но я как-то привык уже.

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

Необходимость использования километровых портянок текста для сборки программ. Даже самых простых.

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

Это мешает тем, кто хочет понять, на какой именно стадии компиляции процесс находится в данный момент. Автолулзы такой информации просто не дают.

Кому не дает, а кому и дает... странно не правда ли ? :) Да и кстати причем тут автолулзы к (гну) мейку ? :) Вы там со своими сконсами и цмаками совсем уже башкой повернулись, ибо именно _собирать_ и есть основаная задача сборочной системы. и миллионы(десятки, тысячи) проектов написаных для сборки мейком доказательство его эффективности. Однако появляется на лоре онолитек из подворотни и так громко «говно»... Показатель неадекватности? Тупости? Безграмотности?

Проблемы удобно искать по логу сборки, который аккуратно сохранён в текстовом файле. Вывод автолулзов на терминал, особенно со скоростью 10 строк в секунду, совершенно бесполезен.

Деточка, это юникс вей. перенаправь в файл, что-то мешает ?

Jetty ★★★★★
()

вали на план, фига ты забыл тут ?

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

Вывод автолулзов на терминал, особенно со скоростью 10 строк в секунду, совершенно бесполезен.

Мой емерж умеет его скрывать :3

tazhate ★★★★★
()

Баг gmake и webkit

это баг bash, который не умеет слишком длинные параметры.

нужно ставить патченный make, который специальным образом разбивает параметры передаваемые в bash.

AGUtilities ★★★
()

линукс в плане сборки программ давно был предметом насмешек

У людей иногда бывает странное чувство юмора...

я умолчу про то, что оно собиралось дольше чем ядро

Оно долго собирается?!

real    2m19.711s
user    11m13.068s
sys     1m5.134s

erfea ★★★★★
()

Попытки есть. Пример autotools и cmake. Правда autotools получился еще сложнее, чем make, ну да ладно. :)

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

2. Удобно искать проблемы сборки.

Вот это просто феерический бред. У меня до сих пор на этой почве некоторая ненависть к Visual Studio 2008 - тем более что пользоваться ей всё равно приходилось на ACM ICPC, из чисто практических соображений. Достаточно допустить одну ошибку в шаблонах - и вот вам 134 ошибки компилятора, каждая из которых распечатывает полный (sic!) тип выражения, который представляет собой что-то типа

std::map<std::basic_string<char,
                           std::allocator = std::default_allocator<> >,
         int,
         std::comparator = std::{ещё какая-нибудь хрень}
         std::allocator = std::default_allocator<>
         >
И конечно же ошибки выкинуты в один лог, а не расставлены прямо в файле с исходным кодом, как в последних студиях, криэйторах и прочих IDE.

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

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

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

Кому не дает, а кому и дает... странно не правда ли ? :)

Ну если вы умеете читать со скоростью «экран текста в минуту», то я вам завидую 8).

Да и кстати причем тут автолулзы к (гну) мейку ?

К тому, что макефайл генерируют именно они.

Деточка, это юникс вей. перенаправь в файл, что-то мешает ?

Говно это, а не юникс-вей 8).

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

ибо именно _собирать_ и есть основаная задача сборочной системы

Нет. Основная задача - собирать везде. Один разработчик управляется максимум с двумя-тремя машинами, то чем сложнее и машиннописнее синтаксис - тем меньше шанс этого достичь. Синтаксис Makefile сложен и перечисляет кучу фактов, которые машина и сама могла бы определить - например, явно указывает каждый компилируемый файл, хотя обычно нужно скомпилировать все *c и *.cpp, которые есть в директории.

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

Боюсь разочаровать, но нет. Десятки тысяч пользователей emacs - доказательство его эффективности? А как же тот факт, что в графическом редактое можно полностью воспроизвести консоль, причём с той же отзывчивостью? И все эти проекты на makefile, как и миллионы пользователей emacs, доказывают одно - новые системы сборки реализовывали едва ли половину того, что требовалось для превращения в новый дефолт.

Однако появляется на лоре онолитек из подворотни и так громко «говно»... Показатель неадекватности? Тупости? Безграмотности?

Показатель отсутствия логики, только не у аналитика, а у кодеров с синдромом «УМВР ПНХ».

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

хотя обычно нужно скомпилировать все *c и *.cpp, которые есть в директории.

1. А если не нужно?

2. NAMES = $(basename $(wildcard *.c))

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

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

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

1. Вот тогда можно перечислить файлы явно. Но раз в 95% таки-нужно, то лучше соблюсти принцип «простые вещи должны оставаться простыми» 2. basename - юниксовая команда? Переформулируя вопрос 1, «а если её нету?».

За подсказку спасибо. Считаю, что в кратком введении в Makefile для YOBA-программистов она должна быть первой строчкой.

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

И как это относится к неосиляторству чувака выше прочитать вывод ./configure --help ?

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

basename - юниксовая команда? Переформулируя вопрос 1, «а если её нету?».

Это функция встроенного в gnu make языка. (Насколько он совместим с другими — хз. Не интесовался.)

Боже мой, мне одному кажется, что прежде чем рваться что-то критиковать, нужно хотя бы прочитать ман? Или это устаревший и немодный подход?

geekless ★★
()
Ответ на: комментарий от geekless
[sergey@localhost ~]$ man make | grep basename
[sergey@localhost ~]$ man make | grep wildcard
[sergey@localhost ~]$ man gmake | grep wildcard
Ничего про gmake в руководстве нет
[sergey@localhost ~]$

Что касается вывода ./configure и ./make, то там синтаксис не очень-то дружелюбный для человека (частично фиксится -s, согласен) и не очень дружелюбный для разбора. Так что я просто заранее устранял оправдания.

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

Достать руки оттуда, куда ты их засунул, и осиль уже --enable-silent-rules.

Правильно! Адекватное поведение по умолчанию - не наш путь! У нас же йунегз-вей, а значит нужно на каждый чих сбоку костыли подставлять 8).

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

И да, векторный гипертекстовый^W^Winfo - это вообще отдельная песня...

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

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

quiet_readonly ★★★★
()

Кстати, в этом случае спасает «make V=1» без всякого патчения gmake, bash и т.п.

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

Десятки тысяч пользователей emacs

Я говорил о десятках миллионов едениц ПО, а не о десятках тысяч.

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

чувак, текущее поведение - предел адекватности. Игрища в сайлент месаджинг - полный отстой и абсолютно не информативно.

Хотя можно посмотреть с немного другой стороны: ты считаешь что должно быть без процесса вывод команд, я считаю что с выводом лучше. Разработчики мейка считают что дожно быть с выводом. Всем не угодишь, тем более нью-вейв программистам.

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

Советую каждое утро читать вслух, в полный голос, вывод скриптов сборки clang, например. Как мантру. Чтобы твёрдо верить, что Makefile - лучший на все времена.

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

Разработчики мейка считают что дожно быть с выводом.

При чём тут вообще make? Он работает ровно так, как написаны правила в Makefile. Мои претензии к генератору правил - автолулзовому configure.

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

А у товарища выше притензии именно к мейкфайлам и, очевидно, к мейку... Так где-же правда? А точно автотулз должен генерировать вывод процентиков сборки объектов, ведь его задача в другом, в конфигурации софта относительно текущей среды, или нет? А если это ТАК кровь из носа необходимо человечеству, то почему бы тебе не запилить соответствующий ф-нал для автолулзов? Напоминаю, что у ТСа притензии именно к мейку :)

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

Насколько он совместим с другими — хз.

Ни насколько, это расширения гну.

мне одному кажется, что прежде чем рваться что-то критиковать, нужно хотя бы прочитать ман?

Не парь мозги своими манами i-поколению.

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