The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Компания Google открыла код системы сборки Ninja"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Компания Google открыла код системы сборки Ninja"  +/
Сообщение от opennews (ok) on 08-Фев-11, 12:11 
Компания Google открыла (http://neugierig.org/software/chromium/notes/2011/02/ninja.html) под лицензией Apache исходные тексты проекта Ninja (https://github.com/martine/ninja), созданного в процессе портирования web-браузера Chrome в Linux и Mac OS X. Ninja представляет собой (http://martine.github.com/ninja/manual.html) упрощенный вариант программы make, оптимизированный для значительного ускорения процесса сборки крупных проектов.


Изначально, прототип Chrome был создан только для Windows и разработчики для упрощения переноса на другие платформы попытались адаптировать для данной задачи систему Scons (http://www.scons.org/), но столкнулись с рядом трудностей. В частности, ценой простоты использования написанной на языке Python утилиты Scons была низкая производительность - на предсборочный анализ 30 тыс. файлов уходило примерно 40 секунд, а на пересборку бинарного файла после изменения всего одного файла с кодом уходило 8 минут. Не желая мириться с подобными задержками, подрывающи...

URL: http://neugierig.org/software/chromium/notes/2011/02/ninja.html
Новость: https://www.opennet.ru/opennews/art.shtml?num=29525

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Компания Google открыла код системы сборки Ninja"  +5 +/
Сообщение от dimqua (ok) on 08-Фев-11, 12:11 
Хм, странно что сразу не открыли.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Компания Google открыла код системы сборки Ninja"  –9 +/
Сообщение от Аноним (??) on 08-Фев-11, 12:15 
ничего странного, могли вообще не открывать - не обязаны
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Компания Google открыла код системы сборки Ninja"  +1 +/
Сообщение от dimqua (ok) on 08-Фев-11, 13:15 
Если уж решили открывать, то странно что не сделали этого сразу. Чего ждали интересно.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

29. "Компания Google открыла код системы сборки Ninja"  +1 +/
Сообщение от QuAzI (ok) on 08-Фев-11, 18:54 
Ждали, когда оно маленько заработало и стабилизировалось. А то много вечно недовольных хомячков, которые сначала нагадят "то не так, это хочу эдак", а потом после того как всё исправлено ещё 5 лет помоями поливают то, что сами не осилили.
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

32. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от dimqua (ok) on 08-Фев-11, 22:25 
Если бы сабж был игрой какой-нибудь, тогда было бы понятно. Но вариант программы make это ведь не для хомячков, ну. :)
Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

4. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от Аноним (??) on 08-Фев-11, 12:17 
Интересно, на каком железе у них за 6 секунд собирается?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Компания Google открыла код системы сборки Ninja"  +7 +/
Сообщение от Lain_13 email on 08-Фев-11, 12:31 
За 6 секунд при изменении одного файла. В этом вся идея, как я понял. Т.е. сидишь ты, колупаешься с одним файликом. Тыц — пересобрал, запустил, погонял и колупаешься дальше. Представляешь каково оно минут 10 минут ждать пока весь проект пересоберётся ради проверки одного мелкого изменения? Тут даже минуту ждать невыносимо.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

8. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от paulus (ok) on 08-Фев-11, 12:47 
гентушники говорят, что хромиум собирается как опенофис (сам не проверял), так что ускорение данного процесса явно не лишнее :-)
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

14. "Компания Google открыла код системы сборки Ninja"  +1 +/
Сообщение от h31 (ok) on 08-Фев-11, 14:10 
Тут немного не то. В топике идет речь о времени, которое уходит на служебные операции. Сама по себе компиляция не успорится.
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

19. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от anonix on 08-Фев-11, 14:58 
Сборка в дженту, арче, да вообще везде не изменится по скорости никак. Потому как собирается там всё равно весь пакет.
Здесь речь о другом - изменили 1 строчку кода, этот кусок скомпилили и прилинковали к уже собранным остальным кускам. Естественно такая схема вообще возможна только в разработческой среде.
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

24. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от User294 (ok) on 08-Фев-11, 17:43 
> гентушники говорят, что хромиум собирается как опенофис (сам не проверял), так что
> ускорение данного процесса явно не лишнее :-)

Редкий гентушник что-то *меняет* в собираемых исходниках, так что реально мало какой гентушник сильно выиграет от этого. Всего лишь наблюдение.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

5. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от Aleksey (??) on 08-Фев-11, 12:19 
Перешел с Scons на Waf (https://code.google.com/p/waf/) и крайне доволен. Особенно радует скорость на крупных проектах.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

16. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от cdome (ok) on 08-Фев-11, 14:37 
+1. Согласен,

Причем у меня waf быстрее даже make работает

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

25. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от Аноним (??) on 08-Фев-11, 17:49 
А мы не видим альтернативы cmake. В waf (в отличие от scons) даже о портабельности не думали - по сути это make только с более заумным синтаксисом. SCons уже полноценная система сборки, но с ещё более убогим и сложным синтаксисом, не делающая 'automagically' ничего, что делают даже autocrap и располагающая к писанию всего руками под кучей if'ов для разных систем. Только cmake позволяет огромный проект с кучей внешних зависимостей собрать на любой платформе (включая кросскомпиляцию) без единой платформенно-зависимой строчки в CMakeLists.txt.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

28. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от Aleksey (??) on 08-Фев-11, 18:18 
Согласен, что waf еще не достаточно распространен, но из этого не следует, что он не портабельный. То, что для Cmake написано больше модулей не отрицаю, но расширять waf намного проще. Кроме того не нужно изучать еще один нигде не нужный корявый язык программирования. Не говоря уже о том, что waf можно включать в бандл с исходниками и не требовать для сборки установки правильной версии Cmake.
Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

30. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от Аноним (??) on 08-Фев-11, 20:30 
> Согласен, что waf еще не достаточно распространен, но из этого не следует, что он не портабельный

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

> То, что для Cmake написано больше модулей не отрицаю, но расширять waf намного проще.

Написав кучу кода на питоне? Спасибо, в scons это уже проходили. Можно сразу к сборочным скриптам на shell вернуться, там хоть синтаксис вменяемый и менее многословный.

В cmake добавить поддержку новой библиотеки - FIND_FILE + FIND_LIBRARY. Проще просто нельзя.

> Кроме того не нужно изучать еще один нигде не нужный корявый язык программирования.

Это вы про питон? Врёте, в cmake не нужен питон, с ним вообще программировать не нужно.

> Не говоря уже о том, что waf можно включать в бандл с исходниками и не требовать для сборки установки правильной версии Cmake.

Назад к autocrap'у? Нет, спасибо, bundled сборочная система это тупиковый путь.

Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

33. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от Alexey (??) on 08-Фев-11, 22:30 
Во-первых, Python всяко лучше, чем тот недоязык который есть в cmake.
Во-вторых, вы забыли упомянуть что cmake настолько сложно расширить, что, например, до сих пор не написано поддержки C# (а ведь он наиболее похож на C++). По сути cmake - это система для одного языка программирования. Если не дай бог вам потребуется поддержать что-то свое нестандартное, да еще и с поддержкой зависимостей, то придется очень сильно попотеть.
В-третьих, в cmake как я понимаю до сих пор нет аналога "configure --help" для получения всех опций сборки?
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

35. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от Аноним (??) on 09-Фев-11, 02:19 
> Во-первых, Python всяко лучше, чем тот недоязык который есть в cmake.

Это недалёкий фанатизм. Система сборки должна иметь простой и понятный синтаксис, а не нагромождение ручной работы со словарями, склеиванием строк плюсами и определения функций и классов. Питон имеет отвратительный синтаксис в принципе, а применимость его здесь просто нулевая. У меня складывается впечатление, что фанатики питона готовы писать сборочную систему на голом питоне, только потому что на питоне. SCons и waf это чуть-чуть упрощают, но сборочными системами от этого не становятся.

> Во-вторых, вы забыли упомянуть что cmake настолько сложно расширить, что, например, до сих пор не написано поддержки C# (а ведь он наиболее похож на C++).

Вы забили упомянять что это ваши фантазии, а про похожесть C# и C++ вообще ближе к бреду. Понятия не имею как компилируется C#, но у нас произвольные генераторы добавляются одной строчкой, и проекты, состоящие из кода не нескольких языках с кучей swig'овских обёрток, Qt с его moc/uic/rcc, документацией и тестами собираются влёт.

> По сути cmake - это система для одного языка программирования. Если не дай бог вам потребуется поддержать что-то свое нестандартное, да еще и с поддержкой зависимостей, то придется очень сильно попотеть.

Интересная у вас рефлексия. Именно то что "поддержать что-то свое нестандартное, да еще и с поддержкой зависимостей" (плюс добавлю "с возможностью сборки на разных платформах без писания, по сути, отдельного скрипта под каждую платформу") кроме cmake нету.

> В-третьих, в cmake как я понимаю до сих пор нет аналога "configure --help" для получения всех опций сборки?

Всегда был. cmake -L[A]H, ccmake

Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

45. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от Yaro on 12-Фев-11, 21:10 
Согласен с вами,
В cmake нет ничего для C# потому что C# и кросс-платформенность - взаимоисключающие пункты.
Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

7. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от LuckAs (ok) on 08-Фев-11, 12:39 
Маньяки, им 10 секунд было много компилировать то, что они разрабатывают как минимум несколько дней.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

26. "Компания Google открыла код системы сборки Ninja"  +/
Сообщение от Одмин on 08-Фев-11, 17:58 
Эти несколько дней они сотни раз проект пересобирают. По крайней мере надеюсь что хром это не write-only проект :)
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Разработчики из компании Google открыли код системы сборки N..."  –2 +/
Сообщение от Аноним (??) on 08-Фев-11, 12:55 
А про cmake они наверное не слышали.. Их Ninja только с -j1 собирать может :(
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

10. "Разработчики из компании Google открыли код системы сборки N..."  +1 +/
Сообщение от Сергей (??) on 08-Фев-11, 12:58 
cmake пользуется make-ом
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

23. "Разработчики из компании Google открыли код системы сборки N..."  +/
Сообщение от Аноним (??) on 08-Фев-11, 17:35 
Это отнюдь не исключает того факта что "Ninja только с -j1 собирать может"
А CMake может использовать как сам make, так и многое другое:
Borland Makefiles
MSYS Makefiles
MinGW Makefiles
NMake Makefiles
NMake Makefiles JOM
Unix Makefiles
Visual Studio 10
Visual Studio 6
Visual Studio 7
Visual Studio 7 .NET 2003
Visual Studio 8 2005
Visual Studio 9 2008
Watcom WMake

Зачем лепить новый велосипед... Когда есть трушный cmake! :)

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

27. "Разработчики из компании Google открыли код системы сборки N..."  +/
Сообщение от Аноним (??) on 08-Фев-11, 18:08 
>[оверквотинг удален]
> NMake Makefiles JOM
> Unix Makefiles
> Visual Studio 10
> Visual Studio 6
> Visual Studio 7
> Visual Studio 7 .NET 2003
> Visual Studio 8 2005
> Visual Studio 9 2008
> Watcom WMake
> Зачем лепить новый велосипед... Когда есть трушный cmake! :)

Это не замена CMake. Это вместо make, возможно будет новый бекенд для CMake

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

12. "Разработчики из компании Google открыли код системы сборки N..."  +1 +/
Сообщение от Аноним122333 on 08-Фев-11, 13:15 
тогда к чему было это:

>>>Буферизация вывода всех параллельно выполняемых команд, что позволило более точно ассоциировать ошибку с вызвавшей её командой, без смешивания с выводом от других процессов;<<<

???

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

13. "Разработчики из компании Google открыли код системы сборки N..."  +1 +/
Сообщение от Аноним (??) on 08-Фев-11, 13:23 
Из README:

Though the code is copyright Google, don't take that as an
endorsement; I wrote this in my spare time for fun.

Вот с этого надо было начать новость.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

15. "Разработчики из компании Google открыли код системы сборки N..."  +/
Сообщение от sluge (ok) on 08-Фев-11, 14:28 
ccache+distcc спасут гиганта мысли
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

31. "Разработчики из компании Google открыли код системы сборки N..."  +1 +/
Сообщение от Аноним (??) on 08-Фев-11, 22:00 
Читать и думать вообще не умеем? Когда изменяется один исходник нужно
- скомпилировать этот исходник
- перелинковать бинарники/библиотки в которые этот файл линкуется

ccache тут не впёрся потому что файл таки надо пересобрать, а distcc потому что файл один и параллеить нечего.

Суть новости в том что поделие под названием SCons чтобы понять что надо пересобрать этот один файл полчаса тупит своим питоном. Обычный make они не осилили, поэтому решено было написать свой костыль.

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

37. "+1"  +/
Сообщение от Вова on 09-Фев-11, 12:51 
И как часто случается, самые грамотные каменты от анонимов. Я вчера ровно на этом месте впал в эйфорию, начитавшись серебряных пуль в вышестоящих комментариях. Отокомментил по смыслу то же самое, что и вы, как обычно - по делу, без оффтопа, кратко и осмысленно. Но сервер, видимо, сбоит (фс сыпется?) каменты пропадают.
Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

34. "Разработчики из компании Google открыли код системы сборки N..."  +/
Сообщение от Аноним (??) on 08-Фев-11, 23:34 
> высокопроизводительному линкеру

Что за производительный линкер? Не binutils/ld надеюсь?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

36. "Разработчики из компании Google открыли код системы сборки N..."  +/
Сообщение от Аноним (??) on 09-Фев-11, 11:48 
На haskell отличная система сборки: ghc --make someModule.hs
Дальше парсится код, находятся зависимости и вуаля -
больше ничего делать не надо.
Ничего похожего для .NET я не нашел - может плохо искал
SCons по сравнению с этим смотрится блекло, нечего говорить про
make-подобные системы
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

38. "Разработчики из компании Google открыли код системы сборки N..."  +/
Сообщение от Аноним (??) on 09-Фев-11, 14:11 
Ну в песочнице из одного файла я так и для C могу сделать. Напомню, что в реальном мире файлов куча, лежат они в разных местах (особенно на разных системах) зависимости не всегда явно прописаны (dlopen), нужно всё равно линковаться с сишным кодом, выполнять тесты на пригодность и особенности окружения, поддерживать кросскомпиляцию, опции и ещё кучу всего.
Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

39. "Разработчики из компании Google открыли код системы сборки N..."  +/
Сообщение от Аноним (??) on 09-Фев-11, 15:00 
Для C такое и не сделаешь - обычно задача стоит собрать нечто из
кучи разнородного содержимого.
Но для управляемых языков отсутствие действительно удобных средств сборки странно.
Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

40. "Разработчики из компании Google открыли код системы сборки N..."  +/
Сообщение от Ne01eX (??) on 09-Фев-11, 16:46 
Так-то если столмановский мейк кастрировать, то он тоже будет шустро работать... :-\
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

42. "Разработчики из компании Google открыли код системы сборки N..."  +1 +/
Сообщение от Andrey Mitrofanov on 09-Фев-11, 18:50 
Тебе тож не отрезать, а даже прищемить -- ещё не так _забегаешь

Ответить | Правка | ^ к родителю #40 | Наверх | Cообщить модератору

44. "Разработчики из компании Google открыли код системы сборки N..."  +/
Сообщение от Ne01eX (??) on 11-Фев-11, 00:23 
Ну так и я про тоже =)
Ответить | Правка | ^ к родителю #42 | Наверх | Cообщить модератору

41. "Разработчики из компании Google открыли код системы сборки N..."  +1 +/
Сообщение от Аноним (??) on 09-Фев-11, 18:33 
А нехрен было все внешние либы тащить в проект, у них там в исходниках 5% хромиума и 95% сторонних компонентов, которые у нормальных людей ставятся с помощью пакетного менеджера. Устроили виндоус-стайл, сами себе создали проблему, а потом героически её решают, работа кипит, фигли.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

43. "Разработчики из компании Google открыли код системы сборки N..."  +/
Сообщение от LuckAs (ok) on 10-Фев-11, 16:25 
Думаю так оно и есть, пусть делают типа как Опера:
- shared (работает с либами установленными в системе)
- static (слинкованый с своими внутренними либами и работает с инсталятора)
тогда видно разницу будет.
Ответить | Правка | ^ к родителю #41 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру