LINUX.ORG.RU
ФорумTalks

Зачем проекты бандлят кучу либ и не дают юзать системные ?

 , ,


0

2
★★★★

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

они патчат эти библиотеки

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

а патчи не отправляют в апстрим.

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

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

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

свежий пример - angelscript в supertuxkart. просто чистая копия angelscript с офсайта. взяли и забандлили без возможности использовать системное

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

Я постоянно репорчу подобные вещи в апстримы проектов. Встречал несколько случаев когда мне на вопрос про отсылали ли патч - говорят нет.

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

потому что им (разрабам игр) нужно пилить, а не точить.

встречал такое и в конторах разрабатыващих ПО - зафигачить imagemagick, libxml, openssl (самый ад!) в кучу в git проекта. Быстро, модно и не молодежно (как раз мастодонты так обычно делают). Так что не только gamedev, но и малые и большие проприетарасты (что, конечно, не новость. КО)

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

потому что им (разрабам игр) нужно пилить, а не точить.

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

Так что не только gamedev, но и малые и большие проприетарасты

/me ещё больше возненавидел проприетарщиков

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

свежий пример - angelscript в supertuxkart. просто чистая копия angelscript с офсайта. взяли и забандлили без возможности использовать системное

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

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

Я убедился, что зачастую проще включить код или заголовки прямо в проект. С NPAPI заголовками, например, так. Они вроде есть во многих дистрибутивах отдельным пакетом, но иногда их нет. И тогда сборка ломается. Я вот сейчас погуглил, вроде libyuv (из Chromium'а) с недавних пор есть в Fedora, но её нет в Debian. Если её использовать, проще её втащить целиком. То же про ANGLE.

С заголовками PulseAudio оказалось тоже забавно. В некоторых дистрибутивах нужно поставить PulseAudio целиком, чтобы получить заголовки, что для пользователей оказалось мучительным опытом. Зато после включения обнаружились те, кому наоборот, остро не нравятся включённые в проект заголовки, и они хотят собирать с системными.

Lua тоже имеет большие шансы быть включённой в проект целиком. Сейчас гуляют версии 5.1, 5.2, 5.3, и не факт, что в системе будут заголовки и сами библиотеки нужной версии.

i-rinat ★★★★★
()

Потому что для конечного пользователя статическая линковка удобнее динамической - меньше шансов что при апгрейде системы что-то сломается. Бандлинг либ - это просто такая особая форма статической линковки.

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

тогда нужно делать возможность использования системных либ. если в системе нет - юзать бандл.

Кстати, порекламирую билдсистему meson - посмотри как предложено на этой странице - https://github.com/jpakkane/meson/wiki/Wrap-dependency-system-manual

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

Апстрим патчи может не принять. А в новой версии либы API может сломаться. Потому и делают бандлы.

EXL ★★★★★
()
Ответ на: комментарий от i-rinat
  • autocrap — старьё с невозможностью сделать inspect
  • CMake — уже лучше, но чтобы начать кодить - надо написать 300 строк в CMakeLists.txt

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

http://www.youtube.com/watch?v=KPi0AuVpxLI

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

Потому, что не хотят лишних проблем. Если не бандлить — им нужно будет следить за апстримом и дистрибутивами и проверять работоспособность с тонной комбинаций версий зависимостей. Если бандлить — всё просто работает™.

Если первую проблему иногда пытаются решить (или как минимум отрепортить) ментейнеры — это не значит, что её нет или что она не отнимает уйму человекочасов.

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

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

Они и отсылают. Но часто патчи не проходят Code Review, а какой адекватный разработчик будет корпеть над кодом сторонней бибилотеки, дабы сделать всё по стандартам разработчиков той библиотеки? Проще при очередном reject'е патча вообще забить на доделывание патча (который, например, может ломать совместимость), пропатчить всё самому, вбандлить и запретить использование системной либы.

Возможно потому и говорят тебе что не отсылают патчи, потому что их патчи либо раньше не проходили Code Review, либо ломали совместимость/стабильность, что для вбандленных либ не так страшно.

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

CMake — уже лучше, но чтобы начать кодить - надо написать 300 строк в CMakeLists.txt

Я себе с нуля написал за час, без каких-либо предварительных познаний.
Перед этим часа три читал доки по autocrap, параллельно пытаясь понять, на кой чёрт мне всё это нужно?

Если есть варианты ещё получше, то вносите. Но вообще cmake is good enough.

aidaho ★★★★★
()

Они делают всё правильно. Им работать надо и чтобы у пользователей всё работало, а не постоянно чинить проблемы с совместимостями. Пусть так называемые «майнтейнеры» в федорах анбандлят если им очень надо.

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

Перед этим часа три читал доки по autocrap, параллельно пытаясь понять, на кой чёрт мне всё это нужно?

Надо было читать неделю, чтобы проникнуться духом autotools, единственно верной системой сборки! У тебя ещё есть время отречься от еретического симейка, покайся, уверуй в истинную систему сборки!

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

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

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

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

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

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

мне, кстати, autotools гораздо больше нравится чем CMake

Это хорошо, только всем пофиг :)

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

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

и что в этом плохого? в апстриме что-т опоменяли, значит и им нужно менять.

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

мне, кстати, autotools гораздо больше нравится чем CMake

In Autotools I never tried to do this, I think I will kill myself if will try.

Хм...

Кстати, в случае с ANGLE и libyuv придётся качать 300-700 метров исходников Chromium'а (в зависимости от версии). Лучше я эти 1-2 метра исходников в проект включу, сжатыми они килобайт 100-200 будут всего.

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

Хм...

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

Кстати, в случае с ANGLE и libyuv придётся качать 300-700 метров исходников Chromium'а (в зависимости от версии). Лучше я эти 1-2 метра исходников в проект включу, сжатыми они килобайт 100-200 будут всего.

можно включить их в проекте, но предоставить возможность использовать системные.

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

кстати libuv не нужно качать из хромиума. у них есть реп на гитхабе.

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

встречал такое и в конторах разрабатыващих ПО - зафигачить imagemagick, libxml, openssl (самый ад!) в кучу в git проекта. Быстро, модно и не молодежно (как раз мастодонты так обычно делают). Так что не только gamedev, но и малые и большие проприетарасты (что, конечно, не новость. КО)

Быстро, модно, молодежно - это подключить какой-нибудь модуль для nodejs, который при установке подтянет приватные копии того же самого и скомпилирует.

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

я никогда в жизни в своих проектах не бандлю либы

Ты просто не решал задачу «не важно как, но клиент должен скачать и запустить софтину/игру» и «не ***т как, но она должна сразу заработать», а также, чтобы у клиента не возникало вопроса «какого ничего не работает?!». Никто не будет 100500 раз объяснять, что надо поставить распоследний glibc, openssl и т.п.

И чаще, это входит впривычку: выпуск готовой продукции. А извращения для маргиналов, которые любят все собирать руками уходят на пятидесятый план.

В этом ничего нет ни плохого, ни хорошо. Все крутятся как могут. И ты крутишься :)

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

я работал в конторе, которая для своего поделия половину опенсорса с собой тащила в виде зависимостей, и это всё около часа компилировалось на i7

зато .deb и .rpm пакеты ни от чего не зависели, да

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

дистрибутить тарболы можно с уже этими модулями

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

Потому что если не бандлить, то в Linux вообще ничего работать не будет. Ибо какой-то Вася внес в либу 2.8.6.245 пару багов, которых небыло в 2.8.6.232, а какой-то Петя решил, что в репозитарии твоего дистриба будет именно версия 2.8.6.245.

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

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

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

/me ещё больше возненавидел проприетарщиков

Зато они создали для винды замечательный редактор сони вегас.

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

Если не бандлить — им нужно будет следить за апстримом и дистрибутивами и проверять работоспособность с тонной комбинаций версий зависимостей. Если бандлить — всё просто работает™.

Если бы так просто... То libc не той версии, то ядро не той системы. В Linux нет гарантии, что код со всеми зависимостями, аккуратно сложенными в бандл, вообще заведется.

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

Если бандлить — всё просто работает™.

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

Harald ★★★★★
()

Чтобы не тратить время зря на тесты под кучей дистров, где разные версии библиотек. А это положил нужные библиотеки, с которыми 100% работает как надо и хорошо. И пользователю от левой пятки мейнтейнеров не надо зависеть, а то они фиг знает когда соизволят собрать программу, да ещё и могут собрать не так.

Z-Rot
()
Ответ на: комментарий от Harald

Надо было читать неделю, чтобы проникнуться духом autotools, единственно верной системой сборки! У тебя ещё есть время отречься от еретического симейка, покайся, уверуй в истинную систему сборки!

Что тогда делает «auto» в названии?

Z-Rot
()
Ответ на: комментарий от Z-Rot

один разработчик программы знает как правильно собирать зависимости. tell me more

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