The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Открыт код C++ компилятора Zapcc, opennews (?), 18-Июн-18, (0) [смотреть все]

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


60. "Открыт код C++ компилятора Zapcc"  –1 +/
Сообщение от нах (?), 18-Июн-18, 14:51 
> И после этого все порты и сама система будет собираться через ccache.

"троллейбус из буханки".jpeg

Но зачем?


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

65. "Открыт код C++ компилятора Zapcc"  +/
Сообщение от PereresusNeVlezaetBuggy (ok), 18-Июн-18, 15:13 
>> И после этого все порты и сама система будет собираться через ccache.
> "троллейбус из буханки".jpeg
> Но зачем?

Если вы работаете над патчем для ОС или портов, то ответ как бы очевиден — чтобы было быстрее собирать-тестировать. Ну а если нет, то эти опции вас просто не касаются, и всё.

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

71. "Открыт код C++ компилятора Zapcc"  +/
Сообщение от Andrey Mitrofanov (?), 18-Июн-18, 15:27 
>>> И после этого все порты и сама система будет собираться через ccache.
>> "троллейбус из буханки".jpeg
>> Но зачем?

...и немножечко GPLv3-or-any-later из портов -- так "УдобнееТМ".

> Если вы работаете над патчем для ОС или портов, то ответ как
> бы очевиден — чтобы было быстрее собирать-тестировать. Ну а если нет,

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

73. "Открыт код C++ компилятора Zapcc"  –1 +/
Сообщение от PereresusNeVlezaetBuggy (ok), 18-Июн-18, 15:46 
>>>> И после этого все порты и сама система будет собираться через ccache.
>>> "троллейбус из буханки".jpeg
>>> Но зачем?
> ...и немножечко GPLv3-or-any-later из портов -- так "УдобнееТМ".

Я могу еще более страшные вещи рассказать: многие разработчики *BSD пользуются vim и — о, ужас! — emacs.

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

84. "Открыт код C++ компилятора Zapcc"  –1 +/
Сообщение от нах (?), 18-Июн-18, 17:00 
> Если вы работаете над патчем для ОС или портов, то ответ как

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

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

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

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

87. "Открыт код C++ компилятора Zapcc"  +/
Сообщение от PereresusNeVlezaetBuggy (ok), 18-Июн-18, 17:52 
>> Если вы работаете над патчем для ОС или портов, то ответ как
> ну разьве что портов. Потому что тестируется (да и патчится,по большей части)
> там сама система сборки, порты бывают развесистые, тут соглашусь. (правда, USE_GCC,
> притащенный третьей вложенной зависимостью, обгадит всю малину)
> С ос все просто - хотя это и немодно, но для просто
> отладки кода совершенно незачем пересобирать мир. И ядро с нуля тоже
> незачем пересобирать.

Прежде всего, базовая система написана в основном на Си, поэтому данный компилятор для её сборки попросту бесполезен. :)

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

94. "Открыт код C++ компилятора Zapcc"  +/
Сообщение от пох (?), 18-Июн-18, 19:09 
ооох, ваши б слова да Б-гу в уши!

> базовая система написана в основном на Си

угадайте, ЧТО занимает сейчас 90% времени make world на даже хорошем железе?
Пра-а-а-авильно, пересборка самого llvm+clang (включая миллиард неотключаемых сборочным инструментарием ненужных вещей, от кодогенераторов для мертвых архитектур до специфических отладочных инструментов). ДА, именно потому, что, в отличие от gcc, он и его миллион библиотек написаны на c++.

другое дело, что попатчив очередные грабли в недрах arc.c, пересобирать шланг не надо, достаточно пересобрать zfs.ko и userland.

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

96. "Открыт код C++ компилятора Zapcc"  +/
Сообщение от PereresusNeVlezaetBuggy (ok), 18-Июн-18, 19:13 
> ооох, ваши б слова да Б-гу в уши!
>> базовая система написана в основном на Си
> угадайте, ЧТО занимает сейчас 90% времени make world на даже хорошем железе?
> Пра-а-а-авильно, пересборка самого llvm+clang (включая миллиард неотключаемых сборочным
> инструментарием ненужных вещей, от кодогенераторов для мертвых архитектур до специфических
> отладочных инструментов). ДА, именно потому, что, в отличие от gcc, он
> и его миллион библиотек написаны на c++.

Это да, Тео (да и не только он) очень долго не хотел Clang в базе опёнка в том числе поэтому.

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

113. "Открыт код C++ компилятора Zapcc"  –1 +/
Сообщение от Ivan_83 (ok), 18-Июн-18, 22:31 
Да, llvm долго собирается.
Нет, лишнее отключается и другие архитектуры оно не трогает пока ты явным образом не делаешь кросскомпеляцию.
man src.conf
Там есть отключение кусков llvm и есть отключение кросскомпеляции, но это не под другие архитектуры, это бутстрап самого компелятора, те в начале собирается какой то огрызок нового компелятора и он собирает систему и компилятор. Если отключить бутстрап то огрызок собиратся не будет и системным компелятором попробует сразу всё собрать. Но это иногда не работает - вылетает с ошибкой.

Ты там что то не правильное делаешь.
Пересборка ядра занимает максимум минут 10, на стареньком коредуо.
Если отключить все ненужные модули, как ,например, у меня тут:
http://www.netlab.linkpc.net/download/software/os_cfg/FBSD/1...
то пересобирается раза в 2-3 быстрее и весит меньше.
Ещё у меня кастомный конфиг ядра, тоже без лишних модулей.

Ещё можно пересобирать с -DNO_CLEAN это даже на коредуо полностью мир и ядро "пересоберёт" быстро (на самом деле перекомпилят только то что поменялось, но бывают фейлы).

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

129. "Открыт код C++ компилятора Zapcc"  +1 +/
Сообщение от . (?), 19-Июн-18, 10:01 
> Нет, лишнее отключается

нихрена там не отключается. Он вообще не умеет такую сборку - весь миллиард экзотических архитектур всегда собирается.
> man src.conf

ты сам-то его читать - пробовал?
Нет там нихрена (потому что у апстрима нет). Можно выключить ненужно-lld (сэкономит две секунды и вполне вероятно приведет к проблемам в будущем, когда все же научится линковать freebsd, и совместимость с gnu ld тут же сломают) и какие-то совсем причудливые вещи ARCMigrate, Rewriter and StaticAnalyzer (из которых понятно только последнее, и тоже даром не нужно), которые тоже экономят максимум несколько минут. Основное время идет на libclang, libllvm и еще какие-то его внутренние детали, линкующиеся к любому из его бинарников. Большая их часть - это именно генерация/оптимизация под миллиард ненужно-архитектур. Оно вот так у эпла устроено, и они не видят в этом проблемы - "а вдруг мне захочется собрать бинарник под хрень-брень-никто-никогда-не-видал-все-равно-не-заработает".

> Ты там что то не правильное делаешь.

просто некоторые понимают, что они делают - а ты нет.
Содержимое cddl/zfs - общее для userland и ядра, поэтому если в нем ковыряться - пересобирается не ядро, а и ядро, и (если умеешь) пачка бинарников. (если не умеешь - world)

> Если отключить все ненужные модули, как ,например, у меня тут:

молодец, победил zfs.
А мне вот только она в основном и нужна. Кстати, хрена с два ты угадаешь, какие модули для нее "нужные". (особенно приятно, когда из-за очередного MFV "нужных" внезапно удваивается. Нет, оторвать не получится, новое поколение девелоперов не умеет ifdef)

> Ещё у меня кастомный конфиг ядра, тоже без лишних модулей.

я надеюсь, ты в курсе про платформо-независимый конфиг, включающийся по умолчанию? ;-)
Правда, оверрайды в make.conf его перекроют, в части модулей.

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

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

135. "Открыт код C++ компилятора Zapcc"  –1 +/
Сообщение от Ivan_83 (ok), 19-Июн-18, 13:33 
WITHOUT_CLANG_BOOTSTRAP
         Set to not    build the Clang    C/C++ compiler during the bootstrap
         phase of the build.  To be    able to    build the system, either gcc
         or    clang bootstrap    must be    enabled    unless an alternate compiler
         is    provided via XCC.
WITHOUT_CLANG_FULL
         Set to avoid building the ARCMigrate, Rewriter and    StaticAnalyzer
         components    of the Clang C/C++ compiler.
WITHOUT_CROSS_COMPILER
         Set to not    build any cross    compiler in the    cross-tools stage of
         buildworld.  When compiling a different version of    FreeBSD    than
         what is installed on the system, provide an alternate compiler
         with XCC to ensure    success.  When compiling with an identical
         version of    FreeBSD    to the host, this option may be    safely used.
         This option may also be safe when the host    version    of FreeBSD is
         close to the sources being    built, but all bets are    off if there
         have been any changes to the toolchain between the    versions.
         When set, it enforces these options:

         WITHOUT_BINUTILS_BOOTSTRAP
         WITHOUT_CLANG_BOOTSTRAP
         WITHOUT_ELFTOOLCHAIN_BOOTSTRAP
         WITHOUT_GCC_BOOTSTRAP

Вот последний параметр позволит не собирать libclang, libllvm два раза.
А -DNO_CLEAN или ccache позволят не собирать с нуля и тот единственный раз.

А где в шланге ты нашёл архитектуры отличные от х86 во время компеляции?
Я вот когда хотел с арм поиграться ставил гцц для кросскомпеляции.

ZFS мне лично не нужен.
По работе я быстро нашёл все его зависимости.

GENERIC самый ужасный конфиг, к тому же он не на всех пллатформах есть, в тех же арм и мипс под каждый чип свой конфиг.

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

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

139. "Открыт код C++ компилятора Zapcc"  +/
Сообщение от нах (?), 19-Июн-18, 18:02 
> WITHOUT_CLANG_BOOTSTRAP

это бесполезно и потенциально сломает билд

> WITHOUT_CLANG_FULL
>       Set to avoid building the ARCMigrate,

об этом тебе сказали

> WITHOUT_CROSS_COMPILER

это выключено по умолчанию, GCC на обычных архитектурах вообще давно не собирается... к чему была вся эта простыня?

> А -DNO_CLEAN или ccache позволят не собирать с нуля и тот единственный раз.

и что-нибудь сломать. А если ты понимаешь как работает то, что ты менял - то тебе не нужно пересобирать мир вообще.  Кроме теста перед попыткой отдать свои патчи кому-то еще, который надо проводить с полной пересборкой без всяких "оптимизаций", если интересует результат.

> А где в шланге ты нашёл архитектуры отличные от х86 во время

посмотреть что и как он в этом процессе собирает, когда один хрен заняться нечем, не?

> ZFS мне лично не нужен.
> По работе я быстро нашёл все его зависимости.

пара пересборок с парой аварийных перезагрузок, и нашел, да?

Не проще ли не маяться дурью и не экономить на спичках?
(в конце-концов, можно целенаправленно выключить часть модулей)

> GENERIC самый ужасный конфиг, к тому же он не на всех пллатформах

у него есть две особенности - он имеет свойство меняться даже в пределах releng, самому это отслеживать не слишком удобно. И есть еще дефолтные конфиги в уровне выше arch.

если система не предназначена для "поставил и забыл", это может когда-нибудь выйти боком. А если предназначена - то тем более нафиг не надо бороться за время его сборки - поставил и забыл.


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

140. "Открыт код C++ компилятора Zapcc"  –2 +/
Сообщение от Ivan_83 (ok), 19-Июн-18, 19:09 
ccache у меня ещё ни разу ничего не ломал.
-DNO_CLEAN иногда приводит к фейлам при сборке, иногда к фейлам при работе, но это инструмент для определённых целей.

Раз не хочешь смотреть то не стоит и говорить.

Нет никаких аварийны перезагрузок.
Собрал с одним ZFS, инсталл, ребут.
kldload zfs
если фейл, смотрим чего не хватило, собираем ядро с этим модулем, инсталл, опять kldload zfs.
Всё просто.

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

В GENERIC всё равно пихают всякий хлам, уже лет 9 сижу на своём конфиге и проблем не испытывал.
У меня ядро получается 7-12мб, против 40+мб генерика, те грузится оно тоже чуточку быстрее.
А поскольку там меньше хлама то оно и немного безопаснее.
Короче, меня не напрягает это суппортить, и я в курсе того что у меня в системе есть, в отличии от большинства пользователей генерика.

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

148. "Открыт код C++ компилятора Zapcc"  +1 +/
Сообщение от Аноним (148), 20-Июн-18, 08:18 
для тазиков с неприлично большим временем сборки - имеет смысл держать отдельный сборочный тазик.
Ответить | Правка | Наверх | Cообщить модератору

156. "Открыт код C++ компилятора Zapcc"  +1 +/
Сообщение от Ivan_83 (ok), 20-Июн-18, 18:49 
Да, было бы здорово.
Но нет времени/желания пока это автоматизировать: тазиков не много и обновляются они сравнительно редко.
Ответить | Правка | Наверх | Cообщить модератору

80. "Открыт код C++ компилятора Zapcc"  –1 +/
Сообщение от Ivan_83 (ok), 18-Июн-18, 16:36 
Затем что от этого есть профит практически всегда на живой системе.
И много профита если ты разработчик который больше одного раза собирает одно и тоже.
Ответить | Правка | К родителю #60 | Наверх | Cообщить модератору

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

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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