Мохнатые уроды и моральные пёзды. Войти !bnw Сегодня Клубы
История про то, как академики изобрели USE-флаги. Я только что увидел самое больное дерьмо, что когда-либо выдавали кудахтерные инженеры. Есть пакетный менеджер opam для языка программирования OCaml. Входит во множество так называемых «велосипедных пакетных менеджеров». Кроме установки пакетов-библиотек он занимается еще и установкой самого компилятора нужной версии. Вообще в этом главная проблема opam — у его создателей очень хуево с реляционным мышлением, и они очень плохо понимают, что именно они делают. У них просто есть какие-то проблемы, и они хуярят в свою поделку что-то, чтобы они решились. Вот и все проектирование. Ближе к делу. Если набрать opam switch list, то тебе выдадут все доступные версии комплятора OCaml. Но каждой версии будет две: одна подписана как ocaml-base-compiler, другая как ocaml-variants. В чем разница — понять очень сложно, так как гуглить по запросам "ocaml variants" и "ocaml options" одно удовольствие (выдаст все что угодно, кроме нужного). Покопавшись в исходниках, начинаешь понимать, что вскрывать эту тему не стоило. Итак, у компилятора OCaml есть свой ./configure, где можно включить всякие опции. Есть разработчик opam’а. Он хочет, чтобы по команде opam switch create можно было устанавливать компилятор с нужным набором опций. Как он это делает? Он засовывает в репозитарий пакетов (библиотек) пакет ocaml-variants. Туда он срет СОТНИ (на текущий момент 566) версий объявления пакетов. Вот вам для примера: https://github.com/ocaml/opam-repository/blob/master/packages/ocaml-variants/ocaml-variants.4.14.1%2Boptions/opam Обратите внимание на секцию build. Теперь, чтобы пользователь мог поставить OCaml, допустим, с опциями bytecode-only и musl, он дожен сделать opam switch create 4.14.1 --packages ocaml-option-bytecode-only,ocaml-option-musl Вообще-то опция --packages нужна была для того, чтобы сразу ставить нужные пользователю пакеты. Но тут при помощи какой-то ебаной магии эти пакеты — которые тоже реально существуют, посмотрите в репе! — считаются установленными, на них триггерятся флаги в opam-файле, и делается нужное ./configure Занавес, блять. Справедливости ради хочу отметить, что эта поебень делалась не совсем академиками. Кроме академиков, есть еще и полтора бизнеса, которые пользуются окамлом. Так вот, они выдают код в три раза хуже, чем у академиков. Вот это вот мастерили люди из бизнеса. Пожалейте меня, пожалуйста. Я серьезно. Я в шоке, у меня руки трясутся, у меня потеряна вера в человечество и я хочу мой 2022 год назад.
Рекомендовали: @enterprize
#O9U2XN / @komar / 676 дней назад

че ты там на окамле пишешь в 2023, ты ебанутый?
#O9U2XN/MHW / @voker57 / 676 дней назад
@voker57 Да сервер быстрый понадобилось сделать, окамл прямо хорошо зашел.
#O9U2XN/SKM / @komar --> #O9U2XN/MHW / 676 дней назад
@komar переходи на раст
#O9U2XN/QD4 / @voker57 --> #O9U2XN/SKM / 676 дней назад
@voker57 Раст непередаваемое дерьмище.
#O9U2XN/FQO / @komar --> #O9U2XN/QD4 / 676 дней назад
@komar пруф
#O9U2XN/YRN / @voker57 --> #O9U2XN/FQO / 676 дней назад
ЕМЕРГЕ НОРОД
#O9U2XN/4Z2 / @l29ah / 676 дней назад
@l29ah Кто не хочет емерге, то обречен емерге долбоебов.
#O9U2XN/LAS / @komar --> #O9U2XN/4Z2 / 676 дней назад
@l29ah в эмерге, конечно, уже сделали легкую установку двух версий пакета с разными юзфлагами параллельно?
#O9U2XN/GAQ / @voker57 --> #O9U2XN/4Z2 / 675 дней назад
@voker57 Да.
#O9U2XN/V6E / @l29ah --> #O9U2XN/GAQ / 675 дней назад
@l29ah что нажать чтоб поставить firefox с debug и без одновременно?
#O9U2XN/ZB6 / @voker57 --> #O9U2XN/V6E / 675 дней назад
@voker57 Для начала обратиться к меинтейнерам пакета чтобы предусмотрели возможность ставить несколько firefox'ов.
#O9U2XN/CHW / @l29ah --> #O9U2XN/ZB6 / 675 дней назад
@l29ah так и думал, никак, а гентушник обосрался и виляет задом
#O9U2XN/ZXK / @voker57 --> #O9U2XN/CHW / 675 дней назад
@voker57 В гентушном пакетном менеджере предусмотрен механизм для пакета сообщить пакетному менеджеру, может ли одна версия этого пакета быть установленной параллельно другой версии. Большинство пакетов сообщает что не может, поскольку, как ты понимаешь, без модификации системы сборки у тебя возникли бы конфликты устанавливаемых файлов. Брать из астрала необходимую для конкретного случая модификацию системы сборки (как и вообще что-либо знать про систему сборки) пакетный менеджер не умеет, это дело меинтейнера пакета.
#O9U2XN/A3T / @l29ah --> #O9U2XN/ZXK / 675 дней назад
@enterprize Мне ничего не нужно.
#O9U2XN/S48 / @l29ah --> #O9U2XN/J0U / 675 дней назад
@l29ah да бля, не тот id скопипиздил
#O9U2XN/YBP / @enterprize --> #O9U2XN/S48 / 675 дней назад
@l29ah оправдания не интересуют, пакетный менеджер такого сервиса не предоставляет. мейнтейнер может какие угодно костыли запилить.
#O9U2XN/LH5 / @voker57 --> #O9U2XN/A3T / 675 дней назад
@voker57 Тебе прям в системе нужен именно USE=debug со всеми ассертами и хуйнёй? -ggdb в CFLAGS мало? А если мало, то зачем таскать в систему разработческие автораспидорашиватели, когда их можно запускать из хомяка по ./mach run в любой позе с временным профилем?
#O9U2XN/MZC / @enterprize --> #O9U2XN/ZB6 / 675 дней назад
@voker57 я не хочу срать в хомяк в хаотичном виде фаерфоксами и как-то их там запускать через жопу, для этого есть пакетный менеджер
#O9U2XN/R2G / @voker57 --> #O9U2XN/ZB6 / 675 дней назад
@voker57 Пакетный менеджер не занимается выбором того, куда и что поставить, он занимается разрешением зависимостей и трекингом файлов. Меинтейнер пакета в Debian не может разрешить ставить параллельно несколько версий пакета, меинтейнер пакета в Gentoo может.
#O9U2XN/OBS / @l29ah --> #O9U2XN/LH5 / 675 дней назад
@l29ah толку от того что он может, около нуля, два фаерфокса все равно не поставить. это определение пакетного менеджера ты сам щас придумал
#O9U2XN/MWU / @voker57 --> #O9U2XN/OBS / 675 дней назад
@voker57 Давай своё определение, узнаем заодно сколько на планете пакетных маняменеджеров.
#O9U2XN/6JB / @l29ah --> #O9U2XN/MWU / 675 дней назад
@voker57 Хорошо что мне не нужно ставить два firefox, а то всплакнул бы ща.
#O9U2XN/Y3W / @l29ah --> #O9U2XN/MWU / 675 дней назад
@l29ah ну бритва Линуса это беспроигрышный вариант
#O9U2XN/WNP / @voker57 --> #O9U2XN/Y3W / 675 дней назад
@l29ah A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.
#O9U2XN/BNE / @voker57 --> #O9U2XN/6JB / 675 дней назад
@voker57 Ну хотя бы https://docs.google.com/document/d/1z6_q9rDR3hNnAr_1PT2gCtuAhPLAAclhouxcXRcL7cU/edit Руст это когда сишник посмотрел на окамл, но ни хуя не понял.
#O9U2XN/3HO / @komar --> #O9U2XN/YRN / 672 дня назад
@komar доебки до мелочей какие-то. Я как посмотрел на окамл так сразу понял что методы huita_to_int() это бред
#O9U2XN/BA3 / @voker57 --> #O9U2XN/3HO / 672 дня назад
@voker57 В окамле тайпклассов нет шоле ?
#O9U2XN/WJ8 / @l29ah --> #O9U2XN/BA3 / 672 дня назад
@l29ah В окамле нет тайпклассов.
#O9U2XN/APA / @komar --> #O9U2XN/WJ8 / 672 дня назад
@komar Даже сраный раст палущ!
#O9U2XN/BST / @l29ah --> #O9U2XN/APA / 672 дня назад
@l29ah В расте нашли способ перегрузить операторы без обоссаного RTTI, или как в хуяскеле?
#O9U2XN/BK1 / @komar --> #O9U2XN/BST / 672 дня назад
@komar перегрузка оператора considered harmful
#O9U2XN/W1K / @voker57 --> #O9U2XN/BK1 / 672 дня назад
@komar В хуяскеле нет RTTI для обычных (не-экзистенциальных) вызовов методов тайпкласса.
#O9U2XN/3DH / @l29ah --> #O9U2XN/BK1 / 672 дня назад
@komar Чё за операторы?
#O9U2XN/T5X / @l29ah --> #O9U2XN/BK1 / 672 дня назад
@l29ah так пещерные люди называют функции с инфиксной нотацией
#O9U2XN/8Y0 / @voker57 --> #O9U2XN/T5X / 672 дня назад
@l29ah А в расте, соответственно, нет экзистенциальных типов, поэтому RTTI тоже не нужен.
#O9U2XN/M7J / @l29ah --> #O9U2XN/3DH / 672 дня назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.