LINUX.ORG.RU
ФорумTalks

Сборка дебиановский source пакетов

 ,


0

1

Как собирать пакет без боли:

cmake ..
make
make install

Как собирать пакет с болью:

dpkg-buildpackage -uc -us

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

А всего то хотелось не засорять систему с make install, а собрать пакет, чтобы потом если что легко удалить.

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

★★★★★
Ответ на: комментарий от James_Holden

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

Такой же «логикой» можно придти к выводу о том, что Nix не обеспечивает воспроизводимость сборки. Nix обеспечивает или нет?

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

Похоже что я неправильно понял, что ты имеешь в виду. Поясни, в чем основные проблемы dpkg-buildpackage о которых ты упоминал и в чем конкретно по твоему мнению сабжевый фейл.

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

Nix обеспечивает или нет?

Обеспечивает если выполнить ряд условий. А dpkg-buildpackage обеспечивает если таскать в виде образа точную копию системы, в которой была удачная сборка. Иначе он ничего не обеспечивает, там куча способов все сломать так что он совсем не заметит подмены.

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

Поясни, в чем основные проблемы dpkg-buildpackage о которых ты упоминал

Он не может собрать программу, если она зависит от библиотеки, которую неоткуда достать. К сожалению, не умеет доставать из эфира. Nix, видимо, может.

в чем конкретно по твоему мнению сабжевый фейл

ТС забыл поставить требуемые зависимости для сборки.

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

Обеспечивает если выполнить ряд условий.

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

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

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

Он не может собрать программу, если она зависит от библиотеки, которую неоткуда достать. К сожалению, не умеет доставать из эфира. Nix, видимо, может.

Может, да. Либо коммит из гита достает, либо в особо запущенных случаях, как например установка Viber - из web archive за указанную дату качает.

Если гитхаб и вебархив сдохнут - то тут уже не до Nix будет.

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

ТС забыл поставить требуемые зависимости для сборки.

О чем и речь. Если обеспечивается воспроизводимость сборки - нужные зависимости должны ставиться автоматически. Иначе это называется - она не обеспечивается.

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

Образ, кстати, представляет собой перечисление имён пакетов и их версий

А что в дебиановском репозитории происходит с пакетом когда выходит обновление?

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

все что нужно было для сборки стояло. И через cmake руками собиралось

и никаких там кучи опций, как у того же ffmpeg, нет

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

Дело в том, что deb сборщик мог добавить ключи для configure, которые требуют дополнительных зависимостей. При ручной сборке без этих ключей, возможно, эти зависимости не требуются.

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

так в самом же ОП в тегах написано. pocl. в убунте версия 1.4, а на гитхабе уже 1.8 релизнули

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

Я не о том. Какие конкретно ошибки выдает? Мы же не будем тут ставить дебиан и проверять сами.

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

Может, да. Либо коммит из гита достает, либо в особо запущенных случаях, как например установка Viber - из web archive за указанную дату качает.

Прямо без интернета, из астрала?

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

Нет, это разные вещи.

Иначе это называется - она не обеспечивается.

Кем называется? Тобой? Официальный сайт Nix заявляет: "Nix builds packages in isolation from each other. This ensures that they are reproducible and don’t have undeclared dependencies, so if a package works on one machine, it will also work on another. " Про автоматическую установку зависимостей там ничего нет.

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

что в дебиановском репозитории происходит с пакетом когда выходит обновление?

Он уходит в архив. Старая версия уходит в архив.

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

Прямо без интернета, из астрала?

Что за софистика? На сгоревшем компьютере тоже Nix не работает. Поэтому он плохой? Что это за логика?

А как ты в дебиане без интернета будешь вообще что-то собирать? Все сорц пакеты на DVD нарезаешь и носишь в чемодане?

Nix builds packages in isolation

Ты просто невнимательно читаешь. Вот это - означает что он сам все ставит. Иначе ты никак in isolation ничего не соберешь. Сначала надо поставить все зависимости во внутрь этой isolation. Что Nix автоматически и делает.

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

Он уходит в архив. Старая версия уходит в архив.

Ну, а что тогда имелось в виду под «которую неоткуда достать»? Все же в архиве есть.

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

Что за софистика?

А, гнуть слова только тебе можно? Я не знал.

А как ты в дебиане без интернета будешь вообще что-то собирать? Все сорц пакеты на DVD нарезаешь и носишь в чемодане?

У меня есть локальное зеркало. Периодически обновляю.

Ты просто невнимательно читаешь. Вот это - означает что он сам все ставит.

Нет, не означает. Это твои домыслы.

Сначала надо поставить все зависимости во внутрь этой isolation. Что Nix автоматически и делает.

Зависимости можно поставить руками. Или если ставить руками, Nix внезапно теряет воспроизводимость? Если не теряет, то почему воспроизводимость в твоём понимании требует автоматической установки?

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

У меня есть локальное зеркало

Так можно чего угодно зеркало создать.

Зависимости можно поставить руками

Ты просто подменяешь понятия. Дело не в том, что можно поставить руками. А в том, можно ли поставить автоматически. Nix гарантированно ставит автоматически все что еще не стоит. Этим он и обеспечивает повторяемость. Руки тут вообще не причем.

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

Ну, а что тогда имелось в виду под «которую неоткуда достать»?

dpkg-buildpackage собирает пакет. Он не занимается установкой зависимостей. Ему неоткуда их достать, у него нет для этого кода. Более того, этот код туда добавлять нет смысла, потому что для установки зависимостей уже есть другие утилиты.

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

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

Вот именно - их две. Левая и правая. Вот в этом и беда.

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

Nix гарантированно ставит автоматически все что еще не стоит.

Проблема с твоей риторикой состоит в нарушении некоторых подразумеваемых правил общения. Когда ты сравнивая Nix с чем-то другим заявляешь, что Nix делает что-то гарантированно, ты подразумеваешь, что Nix даёт какие-то гарантии, которые не может дать сравниваемый объект. В данном случае — комбинация пользователя и комплекса программ dpkg-dev. Это подразумеваемое утверждение — ложное, потому что если Nix может что-то сделать, это может сделать и человек.

Руки тут вообще не причем.

Руки тут являются примером ортогональности аспектов. Повторяемость не связана с автоматической установкой зависимостей.

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

Это подразумеваемое утверждение — ложное, потому что если Nix может что-то сделать, это может сделать и человек.

Блин, ну да нет же. Причем тут человек. Мы говорили про то что сборщик пакетов обеспечивает либо не обеспечивает повторяемость. Человек не является компонентом сборщика пакетов, я вообще в шоке и не знаю как ты вот такое придумываешь. Причем тут какие-то комбинации с человеком?

Nix делает что-то гарантированно

Возвращаясь к Nix. Строго говоря, при сборке через Nix ты не можешь вручную поставить пакеты in isolation. Это делается только автоматически.

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

Вот именно - их две. Левая и правая. Вот в этом и беда.

Ты серьёзно считаешь, что проект Debian при сборке каждого из 30-40 тысяч пакетов для десятка архитектур требует от сопровождающих установки зависимостей руками? Мне кажется, ты немного оторван от реальности.

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

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

Не я считаю, а так и есть. -dev пакеты нужно вагонами наяривать вручную.

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

Причем тут человек.

Это попытка объяснить тебе, что автоматическая установка зависимостей не является необходимым условием повторяемости. Вижу, что объяснить не получилось и вряд ли получится.

Возвращаясь к Nix

Да-да, ТС возьмёт Nix, и у него внезапно появится нужный пакет. Видимо, так всё произойдёт?

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

Не я считаю, а так и есть.

Спасибо, насмешил.

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

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

Я утверждал обратное? Вот это новости.

Я тебе пишу что это является необходимым условием для «сборщик обеспечивает повторяемость». А не Папа Римский, человек или Зевс.

Да-да, ТС возьмёт Nix, и у него внезапно появится нужный пакет

Я где-то такое утверждал? Ты сегодня какой-то странный. Я ни разу не писал что конкретную сабжевую проблему прямо сейчас решает Nix.

James_Holden ★★★★
()
Ответ на: комментарий от cvs-255

все что нужно было для сборки стояло.

Там в репозитории нет своей версии директории debian/, как это бывает в некоторых проектах. Каждый пытающийся тебе помочь должен сам догадаться, откуда ты взял debian/ или что ты там насоздавал?

и никаких там кучи опций

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

  • -DWITH_LLVM_CONFIG=<path-to-llvm-config>
  • -DSINGLE_LLVM_LIB
  • -DSTATIC_LLVM
  • -DENABLE_ICD
  • -DENABLE_FP64
  • -DPOCL_INSTALL_<something>_DIR
  • -DLLC_HOST_CPU=<something>
  • -DKERNELLIB_HOST_CPU_VARIANTS
  • -DLLC_TRIPLE=<something>
  • -DENABLE_TESTSUITES
  • -DENABLE_TESTS=ON/OFF
  • -DENABLE_EXAMPLES=ON/OFF
  • -DENABLE_POCLCC=ON/OFF
  • -DENABLE_CONFORMANCE=ON/OFF
  • -DENABLE_{A,L,T,UB}SAN
  • -DENABLE_{CUDA,TCE,HSA}=ON/OFF
  • -DPOCL_DEBUG_MESSAGES=ON
  • -DEXAMPLES_USE_GIT_MASTER=ON
  • -DENABLE_POCL_FLOAT_CONVERSION=ON/OFF
  • -DINTEL_SDE_AVX512=<PATH>
i-rinat ★★★★★
()
Ответ на: комментарий от James_Holden

Я утверждал обратное? Вот это новости.

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

Я где-то такое утверждал? Ты сегодня какой-то странный. Я ни разу не писал что конкретную сабжевую проблему прямо сейчас решает Nix.

Ты влез в тему с комментарием про Nix, хотя про Nix никто не спрашивал. Если предположить, что ты не нарушаешь намеренно принцип кооперации, можно сделать вывод, что ты советуешь Nix, потому что он решает проблему.

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