Мохнатые уроды и моральные пёзды. Войти !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 / 709 дней назад

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

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