↑↑↓↓←→←→ⒷⒶ Войти !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 / 480 дней назад

че ты там на окамле пишешь в 2023, ты ебанутый?
#O9U2XN/MHW / @voker57 / 480 дней назад
@voker57 Да сервер быстрый понадобилось сделать, окамл прямо хорошо зашел.
#O9U2XN/SKM / @komar --> #O9U2XN/MHW / 480 дней назад
@komar переходи на раст
#O9U2XN/QD4 / @voker57 --> #O9U2XN/SKM / 480 дней назад
@voker57 Раст непередаваемое дерьмище.
#O9U2XN/FQO / @komar --> #O9U2XN/QD4 / 480 дней назад
@komar пруф
#O9U2XN/YRN / @voker57 --> #O9U2XN/FQO / 480 дней назад
ЕМЕРГЕ НОРОД
#O9U2XN/4Z2 / @l29ah / 480 дней назад
@l29ah Кто не хочет емерге, то обречен емерге долбоебов.
#O9U2XN/LAS / @komar --> #O9U2XN/4Z2 / 480 дней назад
@l29ah в эмерге, конечно, уже сделали легкую установку двух версий пакета с разными юзфлагами параллельно?
#O9U2XN/GAQ / @voker57 --> #O9U2XN/4Z2 / 480 дней назад
@voker57 Да.
#O9U2XN/V6E / @l29ah --> #O9U2XN/GAQ / 480 дней назад
@l29ah что нажать чтоб поставить firefox с debug и без одновременно?
#O9U2XN/ZB6 / @voker57 --> #O9U2XN/V6E / 480 дней назад
@voker57 Для начала обратиться к меинтейнерам пакета чтобы предусмотрели возможность ставить несколько firefox'ов.
#O9U2XN/CHW / @l29ah --> #O9U2XN/ZB6 / 480 дней назад
@l29ah так и думал, никак, а гентушник обосрался и виляет задом
#O9U2XN/ZXK / @voker57 --> #O9U2XN/CHW / 480 дней назад
@voker57 В гентушном пакетном менеджере предусмотрен механизм для пакета сообщить пакетному менеджеру, может ли одна версия этого пакета быть установленной параллельно другой версии. Большинство пакетов сообщает что не может, поскольку, как ты понимаешь, без модификации системы сборки у тебя возникли бы конфликты устанавливаемых файлов. Брать из астрала необходимую для конкретного случая модификацию системы сборки (как и вообще что-либо знать про систему сборки) пакетный менеджер не умеет, это дело меинтейнера пакета.
#O9U2XN/A3T / @l29ah --> #O9U2XN/ZXK / 480 дней назад
@enterprize Мне ничего не нужно.
#O9U2XN/S48 / @l29ah --> #O9U2XN/J0U / 480 дней назад
@l29ah да бля, не тот id скопипиздил
#O9U2XN/YBP / @enterprize --> #O9U2XN/S48 / 480 дней назад
@l29ah оправдания не интересуют, пакетный менеджер такого сервиса не предоставляет. мейнтейнер может какие угодно костыли запилить.
#O9U2XN/LH5 / @voker57 --> #O9U2XN/A3T / 480 дней назад
@voker57 Тебе прям в системе нужен именно USE=debug со всеми ассертами и хуйнёй? -ggdb в CFLAGS мало? А если мало, то зачем таскать в систему разработческие автораспидорашиватели, когда их можно запускать из хомяка по ./mach run в любой позе с временным профилем?
#O9U2XN/MZC / @enterprize --> #O9U2XN/ZB6 / 480 дней назад
@voker57 я не хочу срать в хомяк в хаотичном виде фаерфоксами и как-то их там запускать через жопу, для этого есть пакетный менеджер
#O9U2XN/R2G / @voker57 --> #O9U2XN/ZB6 / 480 дней назад
@voker57 Пакетный менеджер не занимается выбором того, куда и что поставить, он занимается разрешением зависимостей и трекингом файлов. Меинтейнер пакета в Debian не может разрешить ставить параллельно несколько версий пакета, меинтейнер пакета в Gentoo может.
#O9U2XN/OBS / @l29ah --> #O9U2XN/LH5 / 480 дней назад
@l29ah толку от того что он может, около нуля, два фаерфокса все равно не поставить. это определение пакетного менеджера ты сам щас придумал
#O9U2XN/MWU / @voker57 --> #O9U2XN/OBS / 480 дней назад
@voker57 Давай своё определение, узнаем заодно сколько на планете пакетных маняменеджеров.
#O9U2XN/6JB / @l29ah --> #O9U2XN/MWU / 480 дней назад
@voker57 Хорошо что мне не нужно ставить два firefox, а то всплакнул бы ща.
#O9U2XN/Y3W / @l29ah --> #O9U2XN/MWU / 480 дней назад
@l29ah ну бритва Линуса это беспроигрышный вариант
#O9U2XN/WNP / @voker57 --> #O9U2XN/Y3W / 479 дней назад
@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 / 479 дней назад
@voker57 Ну хотя бы https://docs.google.com/document/d/1z6_q9rDR3hNnAr_1PT2gCtuAhPLAAclhouxcXRcL7cU/edit Руст это когда сишник посмотрел на окамл, но ни хуя не понял.
#O9U2XN/3HO / @komar --> #O9U2XN/YRN / 476 дней назад
@komar доебки до мелочей какие-то. Я как посмотрел на окамл так сразу понял что методы huita_to_int() это бред
#O9U2XN/BA3 / @voker57 --> #O9U2XN/3HO / 476 дней назад
@voker57 В окамле тайпклассов нет шоле ?
#O9U2XN/WJ8 / @l29ah --> #O9U2XN/BA3 / 476 дней назад
@l29ah В окамле нет тайпклассов.
#O9U2XN/APA / @komar --> #O9U2XN/WJ8 / 476 дней назад
@komar Даже сраный раст палущ!
#O9U2XN/BST / @l29ah --> #O9U2XN/APA / 476 дней назад
@l29ah В расте нашли способ перегрузить операторы без обоссаного RTTI, или как в хуяскеле?
#O9U2XN/BK1 / @komar --> #O9U2XN/BST / 476 дней назад
@komar перегрузка оператора considered harmful
#O9U2XN/W1K / @voker57 --> #O9U2XN/BK1 / 476 дней назад
@komar В хуяскеле нет RTTI для обычных (не-экзистенциальных) вызовов методов тайпкласса.
#O9U2XN/3DH / @l29ah --> #O9U2XN/BK1 / 476 дней назад
@komar Чё за операторы?
#O9U2XN/T5X / @l29ah --> #O9U2XN/BK1 / 476 дней назад
@l29ah так пещерные люди называют функции с инфиксной нотацией
#O9U2XN/8Y0 / @voker57 --> #O9U2XN/T5X / 476 дней назад
@l29ah А в расте, соответственно, нет экзистенциальных типов, поэтому RTTI тоже не нужен.
#O9U2XN/M7J / @l29ah --> #O9U2XN/3DH / 476 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

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