УМННБJ, ЯХВ. Войти !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 / 646 дней назад

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

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