Home
Objective Caml
ocaml@conference.jabber.ru
Среда, 14 декабря 2011< ^ >
ygrek установил(а) тему: OCaml / ОКамл / Камль -- http://caml.inria.fr | http://camlunity.ru/ (теперь с git доступом!) | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ | Fight FUD with fire
Конфигурация комнаты
Участники комнаты

GMT+4
[00:41:29] Typhon вошёл(а) в комнату
[01:06:43] f[x] вышел(а) из комнаты
[01:07:21] Andrey Popp вышел(а) из комнаты
[01:07:49] Andrey Popp вошёл(а) в комнату
[01:10:14] <gds> народ, интересно ваше видение вопроса.  Вот, есть зависимости, прописанные в конфиге brb.conf.  Есть отдельно: 1. способ сбилдить зависимости в _dep/, 2. необходимость указать переменные окружения при их билде/использовании, 3. способ сбилдить собственно сам проект.
Как всё это решать с точки зрения сборки так, чтобы реализовывались схемы: 1. простой командой сбилдить зависимости и проект (опционально инсталлить), 2. сбилдить зависимости и зафиксировать это, 3. билдить зависимости только если не зафиксировано из п.2, но пробовать сбилдить проект.
Учитывайте общую тупизну версии1, там вариантов мало.  Версии-хеши и прочее -- не катит.  И как бы это всё связать с текущими средствами сборки наподобие configure + make, вот что интересно.
[01:10:48] <Andrey Popp> а что модно использовать для написания лексеров/парсеров на ocaml?
[01:12:09] <gds> Andrey Popp: расскажи про цели и требования, вариантов куча, очень разные, под разные нужды.
[01:12:14] <bobry> meinhir! :)
[01:12:40] <gds> Mein Herr!
[01:13:17] <bobry> пффт :)
[01:14:28] <Andrey Popp> gds: цели — потренироваться, в качестве этого хочу написать diff для DDL от PostgreSQL
[01:15:44] <gds> Andrey Popp: если будет такой проект в опенсорсе, можно как-нибудь потом поучаствовать в допиливании всяком?  тоже хочу софтину такую, она нужна.  про парсер -- сейчас распишу.
[01:16:54] <Andrey Popp> да, будет в opensource, я тут хотел сначала на основе pfff это напилить, но решил попробовать отдельно сначала написать
[01:17:23] Kakadu вышел(а) из комнаты
[01:20:48] <gds> Andrey Popp: menhir -- хороший парсер общего назначения.  ulex (для юникода) -- лексер.  не знаю, умеет ли menhir использовать ulex, но по идее должен.  комбинаторные парсеры пока не советую, хотя, если есть желание поиграться, то не буду отговаривать.  итераты посоветовал бы как лёгкий способ работать с юникодом (в схемах бывают каменты ещё, иногда не ascii), но для такой задачи итераты будут мутны, там нет генерации, там чисто LL(1) парсинг.  ещё варианты -- ocamlyacc (везде хуже menhir, кроме своей искоробочности), dypgen (оверкилл имхо), camlp4 (для извращений можно, но не нужно).  ещё можно Stream-парсеры, но они LL(n) и не слишком удобны.  в целом -- menhir.  кстати, вообще не знаю, как у него с лексером, но здешние его использовали.
[01:21:34] <gds> > итераты будут мутны, там нет генерации
  .. кода из описания грамматики
[01:22:07] dzhon вышел(а) из комнаты
[01:22:16] <Andrey Popp> dypgen мне понравился по описанию ) но для текущей задачки возьму menhir, спасибо
[02:47:42] Typhon вышел(а) из комнаты
[04:09:27] <bobry> вощем я пушнул cleanup для бедных
[04:09:57] <bobry> предлагаю больше не закаменчивать код -- git все помнит, как ни крути
[06:02:25] bobry вышел(а) из комнаты
[06:34:14] bobry вошёл(а) в комнату
[07:50:11] ermine вошёл(а) в комнату
[09:46:51] ermine чера весь вечер билась с багой в markdown парсере, а оказалось, что это недочет опасности наличия мутабельности в peg парсере
[09:47:22] <ermine> мутаблы давить
[09:54:02] bobry вышел(а) из комнаты
[09:54:23] bobry вошёл(а) в комнату
[11:11:37] ftrvxmtrx вышел(а) из комнаты
[11:12:46] <f[x]> <shameless plug>у меня есть парсилка какого-то подмножества sql на menhir</plug>
[11:14:23] <Andrey Popp> кто нибудь сидит под маком с homebrew? как вообще ставят oasis и прочие либы?
[11:15:50] <f[x]> gds: для сборки проекта нужны настройки окружения чтобы найти проинсталенные зависимости. соответственно проект который использует brb должен запускаться в таком окружении. т.е. brb должен сетапать окружение в котором все зависимости проинсталенные ранее - находятся автоматически. лучше сделать два варианта :
brb setup - выводит окружение в пригодном для eval виде
brb run make - запускает переданные команды (в данном случае make) сразу в нужном окружении
как то так?
[11:23:40] <ermine> gds: под вендой какой конец строки - "\r"?
[11:40:52] ftrvxmtrx вошёл(а) в комнату
[11:48:05] Andrey Popp вышел(а) из комнаты
[12:45:12] Andrey Popp вошёл(а) в комнату
[13:03:41] <gds> bobry: git помнит, но надо вспомнить, в какой ревизии оно было, поэтому, если велика вероятность того, что код пригодится, я его в своих репках комментирую.
[13:10:41] <gds> f[x]: да, в целом надо как-то так.   вывод чисто окружения я бы переименовал в brb env какое-нибудь, но пофиг.  вот ещё не знаю, цельной картины нет.  предположим, проект использует makefile (например, сгенерированный оазисом).  каким образом изменить этот makefile так, чтобы использовать brb для сборки зависимостей?  а для сборки зависимостей и проекта?  а для сборки проекта при собранных зависимостях?  или не менять makefile, а вызывать, допустим, brb deps для сборки зависимостей, brb run make {all,install} для другого?
[13:11:09] <gds> ermine: падвендой конец строки \r\n, однако всякие мингвы понимают \n.
[13:12:02] <ermine> gds: а кто может вставить одиночный \r?
[13:12:34] <f[x]> gds: ну простой способ - да, вызывать brb внешним образом
[13:12:52] <f[x]> ermine: одиночный \r это макось вроде, не?
[13:12:57] <gds> ermine: http://en.wikipedia.org/wiki/Newline#Representations
[13:14:07] <gds> f[x]: понял.  пока как-то так будет, наверное.
[13:15:43] <ermine> f[x]: а как ты определил?
[13:16:08] <ermine> в файлах после винды на конце в редакторе обычно виден символ ^M, я уж не помню что это
[13:17:42] <f[x]> gds: а если хочется проще для юзера, то билд скрипт
[13:18:02] <f[x]> т.е. имхо встраивать в makefile не круто
[13:18:21] <f[x]> make не должен заниматься вытягиванием зависимостей
[13:18:36] <f[x]> ерлангисты же билдят с помощью этой тулзы отдельно
[13:18:38] <gds> для разработчика, значит, будет brb run make ... для его целей.
[13:19:01] <f[x]> для юзера - шелл скрипт
[13:19:10] <f[x]> или отдельный Makefile
[13:19:40] <f[x]> ermine: ну у всех разный же - \r\n винда, \n юникс, \r макось
[13:24:37] <ermine> хм
[13:24:40] <ermine> надо проверить
[13:28:56] <ermine> 0x0A на конце
[13:30:11] <ermine> видимо кто-то пошутил :)
[13:31:50] <gds> f[x]: хз видел ли, но http://caml.inria.fr/mantis/view.php?id=5313 status=feedback
[13:32:19] <f[x]> gds: угу, видел
[13:32:32] <f[x]> самое замечательное в том тикете это :
    gasche      Status      new => feedback
[13:32:53] <f[x]> уже проверяю
[13:35:24] <gds> статус -- нормально.  зачем брать тикет в работу, если этот момент уже пофиксили при фиксе другого тикета.
[13:36:15] <f[x]> gds: не. кто поменял статус.
[13:36:56] <ermine> послушать вас, так камло покажется жутко глючной вещью
[13:37:14] <ermine> поэтому наверное до сих пор нет монстроузных систем кроме xen
[13:37:44] <ermine> да и xen как-то не популярен чота
[13:38:29] <gds> f[x]: а я чото и не помню, кто такой этот гашик.
[13:39:01] <f[x]> gds: важно что он не из inria
[13:39:25] <f[x]> afair это gabriel scherer aka bluestorm
[13:39:49] <gds> видимо напросился на помощь в багтрекере.
[13:40:09] <ermine> о, этот реально рулит
[13:43:54] komar вышел(а) из комнаты: Replaced by new connection
[13:43:54] komar вошёл(а) в комнату
[13:45:47] arhibot вошёл(а) в комнату
[13:45:50] arhibot вышел(а) из комнаты
[13:55:47] Typhon вошёл(а) в комнату
[14:37:14] <gds> сам brb как инсталлить будем, или как вообще дела обстоят?
[14:37:46] <bobry> gds: я тут вчера подумал, что мы забыли самое главное -- после сборки зависимостей запустить make у нашего проекта
[14:38:07] <gds> не забыли, а отложили!  я помнил об этом!
[14:38:13] <bobry> :)
[14:38:19] <bobry> шо у нас остается для в1?
[14:38:30] <Typhon> gds вроде бы даже озавучивал три варианта когда и как это можно делать
[14:38:56] <gds> bobry: погляди чятик со вчерашнего вечера, интересно твоё мнение.
[14:38:59] <bobry> тогда извиняюсь -- /me пропустил
[14:39:26] <bobry> gds: а примерно во сколько?
[14:40:45] <Typhon> http://www.engagepsg.co.uk/software-engineer-distributed-functional-c-148-p-3743 btw
[14:40:55] <gds> bobry: бери с 2011-12-13 15:38:09 UTC+0200.
[14:51:11] <bobry> вроде я все это уже читал, и мнения мои в логе есть :)
[14:54:53] <gds> bobry: третий раз перечитал, не вижу.
[14:55:31] <bobry> можешь меня тогда прямо в лог ткнуть?
[14:57:26] Kakadu вошёл(а) в комнату
[14:58:44] <gds> bobry: 1. http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/2011/12/13.html#23:23:58.669551
2. http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/2011/12/14.html#01:10:14.345676
3. http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/2011/12/14.html#13:10:41.979595
[15:14:35] <bobry> так, в общем ребар, как я понимаю, делает в этом случае довольно тупо -- все  зависимости должны иметь rebar.config, и все зависимости собираются абсолютно аналогично родительскому проекту: вытягиваем зависимости в deps билдим их, билдим сам проект, добавляя deps в PATH
т. е. у него только случай 1) из описанных gds юзкейсов
[15:15:09] <bobry> gds: а что значит "сблидить зависимости и *зафиксировать*"?
[15:15:13] <bobry> как фиксировать то?
[15:17:01] <gds> bobry: например, не вызывать brb, если сбилдило и если ты разработчик проекта.  вот и не знаю.  про "сбилдить зависимости + опционально сам проект" -- проблем нет.  а как сделать так, чтобы можно было сбилдить и разрабатывать проект -- не знаю.  ну вот представь, имеем дохрена всего в brb.conf + _dep, и надо как-то писать свой код, не перекомпилируя всё это добро.
[15:17:43] <bobry> ну это вощемта юз кейс venvов, описаный в гуглодоке
[15:18:31] <bobry> тупой вариант -- не удалять _dep в "development mode" :)
[15:19:04] <gds> и не билдить, получается.
я уверен, что можно красиво решить этот случай даже в версии1.
[15:19:54] <bobry> почему не билдить?
[15:20:07] <bobry> не качать и не распаковывать -- это да
[15:20:26] <bobry> если мы в директории с уже собранной зависимостью запустим make, оно же ничего не будет пересобирать
[15:20:35] <gds> потому что в версии1 билд зависимостей только целиком, от того, что указали в brb.conf с нуля и до победы.
[15:20:59] <bobry> ну, вот это "с нуля" нам и мешает
[15:22:40] <gds> однако 1. не снуля сложно (и нужно версии учитывать, например), make install фейлится, ocamlfind же.  2. сейчас мы чётко можем остановить билд как на точке "сбилдили все зависимости", так и на точке "сбилдили зависимости и проект", это пока проще.
[15:24:25] <bobry> может сделать так -- если у нас есть _dep, то вызов `brb` собрает только проект, и чтобы "обновить" зависимости и форсировать пересборку, надо вызвать `brb --rebuild`
в случае когда _dep нет, `brb` делает то же самое что  и `brb --rebuild`
[15:24:46] <bobry> считаем что юзер знает что у него в _dep
[15:25:13] <bobry> альтернативно, пишем в _dep какой нибудь статус файл, с результатом прошлой сборки, если там ОК, то следуем описанной выше логике, при вызове `brb`
[15:29:52] <f[x]> имхо если разрабывать - то ставить не в project-local и всё
[15:29:55] <gds> а ведь вариант!  ну или brb deps для билда зависимостей ( = создание venv снуля) и brb просто (или brb project) для билда проекта при условии либо отсутствующего _dep (тогда == "brb deps && brb project"), или с гарантией от пользователя, что в _dep всё культурно.  либо эту автоматику (is_directory _dep? then brb project else brb dep && brb project) запихнуть в просто brb.
[15:30:25] <bobry> gds: мне очень не нра идея собирать "только зависимости", почему это может быть полезно?
[15:32:33] <gds> например, потому что сборка проекта может быть долгой и/или ясно, что она закончится фейлом, потому что надо явно кое-что пофиксить и потом запустить "brb run ocamlfind ocamlbrowser -all".  я предполагал, что это будет равно твоему brb --rebuild
[15:33:19] <bobry> нет, --rebuild пересобирает все
[15:33:28] <bobry> пока что твой пример звучит не убедительно
[15:33:43] <bobry> *не достаточно убедительно, чтобы рассматривать это как отдельную ситуацию
[15:33:47] <gds> f[x]: тоже есть логика.  но плохо, если какие-то мелкие фичи допиливать и в проекте, и в либах.  в текущем случае это легко: зафигачил куда-нибудь себе в /ext/batteries гит-репку батареек, указал её как "dep batteries bundled ext/batteries" и хакай себе без project local.
[15:34:23] <gds> f[x]:   .. а потом git push из локальной репки куда надо, и готовы новые коммиты.
[15:35:02] <f[x]> ну ок
[15:35:09] <gds> bobry: опиши своё текущее видение, как всё должно быть, вдруг я недопонял чего.  желательно сразу в гуглодоках в "Командная строка запуска brb".
[15:40:23] <bobry> gds: вроде ничего нового не написал, но возможно там удобней будет обсуждать :)
[15:42:39] <gds> ну да, там как-то "цельная картина", нежели собранная из кусков сообщений чятика.
[15:47:38] <gds> bobry: как думаешь, может разбить brb --rebuild на brb clean && brb?  чтобы можно было почистить _dep без rm -rf.  или brb --clean сделать.
[15:50:43] <bobry> да в общем то можно, только не знаю стоит ли оно того -- если clean это просто rm -rf
[15:53:03] <gds> можно ошибиться с путём, когда делаешь rm -rf.  путь может меняться.  могут быть в будущем какие-то ещё штуки, которые надо чистить.
[15:54:09] <bobry> true
[16:02:12] <bobry> gds: так что решаем? brb --clean / brb --rebuild?
[16:03:15] <gds> лучше оба.
[16:06:45] ermine вышел(а) из комнаты
[16:06:46] ermine вошёл(а) в комнату
[16:07:07] <gds> а может ещё не "--", а просто набор команд сделаем?
"brb run команда аргументы" -- запустить команду в нашем окружении,
"brb clean/rebuild" -- последнее обсуждённое,
"brb help/version" -- описанное,
"brb getenv" -- выдать окружение, пригодное для eval
(кстати, про окружение, можно ещё класть _dep/env.sh, которое можно будет в скриптах "source _dep/env.sh" и дальше рулить без brb run, а просто запуском команд -- удобно.)
[16:08:33] <bobry> мне нра -- запишешь в гуглодок?
[16:08:42] <gds> угу
[16:09:06] <bobry> хотя мб таки остаивть флаги?
[16:09:35] <bobry> brb <cmd> args
brb --help / brb --version
getenv (env) -- просто еще одна команда
[16:10:21] <gds> при условии, что <cmd> будет run/clean/rebuild/getenv?
[16:10:42] <bobry> nope, cmd это запустить команду в нашем окружении
[16:10:53] <bobry> а --clean / --rebuild остаются флагами
[16:11:12] <gds> и делать виртуальную команду getenv?
[16:11:44] <gds> меня вообще эти "--" не возбуждают, когда они не нужны.
ау, эстеты, разрулите вопрос.
[16:11:58] <gds> понятно, что --help --version надо поддерживать для стандартности.
[16:12:03] <bobry> ну без них получается как-то инородно не?
[16:12:23] <gds> да хз.  вроде у ocamlfind нормально получилось.
[16:12:40] <f[x]> как в svn
[16:12:44] <f[x]> есть команды, есть опции
[16:12:49] <f[x]> как в git
[16:13:55] <gds> f[x]: ну вот, всё вышеописанное -- это же скорее команды?  опции -- что-то опциональное.  либо в случаях, когда команд собственно нет, а в командной строке чисто имена файлов-каталогов.
[16:14:09] <f[x]> угу
[16:19:10] <bobry> ок, убедили :)
[16:23:32] <Typhon> "(кстати, про окружение, можно ещё класть _dep/env.sh, которое можно будет в скриптах "source _dep/env.sh" и дальше рулить без brb run, а просто запуском команд -- удобно.)" — по аналогии с виртуаленвами и прочим таким — brb activate/deactivate env %)
[16:23:39] <bobry> nice
[16:24:07] <f[x]> а что делает deactivate?
[16:24:14] <f[x]> делает пустым этот sh?
[16:24:39] <bobry> f[x]: востанавливает старые переменные окружения
[16:24:41] <Typhon> да
[16:24:59] <Typhon> activate — запомнить текущее, выставить новое, деактивейт наоборот, соот-но
[16:26:23] <f[x]> в скрипт?
[16:26:49] <gds> как можно выполнить процесс, чтобы он поменял окружение того процесса, откуда его запускают?
[16:27:08] <f[x]> никак
[16:27:35] <f[x]> разумными методами, that is
[16:28:28] <gds> ну вот.
[16:29:14] <Typhon> а ну, правильно все эти венвы обмазываются шел-гадостью для этого
[16:29:25] <Typhon> чтобы у тебя были функи, которые енв трогают
[16:40:42] <gds> в общем, займусь-ка я генерацией _dep/env.sh.
[16:41:29] <Typhon> я не особо понимаю, что за скрипты то хочешь делать с использованием env.sh ? вроде бы brb как раз должен в том числе и избавлять от мерде-скриптов
[16:45:51] <ermine> уф, осилила парсинг горизонтальных рулей и вербатимов в маркдауне, причем как бычно вылезла проблема недостающих \n в конце файла
[16:46:19] <ermine> ну и гимор этот парсинг
[16:49:40] <gds> Typhon: да пригодится в целом.  иногда скрипты уже есть, а везде втыкать brb run -- не айс.  ну и для исследований, чтобы в текущем шелле было.
[16:49:47] gds вышел(а) из комнаты
[17:01:05] gds вошёл(а) в комнату
[17:39:48] ftrvxmtrx вышел(а) из комнаты
[17:44:36] <bobry> gds: может введем уже какое нить логирование, как в nih?
[17:45:53] <gds> а давай, мне тамошний подход по нраву.
[17:46:02] <bobry> чтобы не failwith
[17:46:13] <bobry> в критические логлевелы можно и так Exit вписать
[17:46:15] <gds> но чтобы в том числе failwith при фатальном.
[17:46:20] <bobry> именно
[17:46:45] <gds> ща меня отвлекли, но доделаю окружение, пока там сильно не колбась install.ml.
[17:47:02] <bobry> окей
[17:59:06] ftrvxmtrx вошёл(а) в комнату
[18:06:10] АК вышел(а) из комнаты
[18:13:48] Typhon вышел(а) из комнаты
[18:54:23] <gds> о, ништяк, варвара идёт в продакшон.
[18:54:24] klapaucius вышел(а) из комнаты
[18:55:30] <f[x]> слабо oasis через brb поставить?
[18:55:44] <gds> попробовать можно.
[18:55:45] <Andrey Popp> кстати, как его ставят, этот oasis?
[18:55:59] <Andrey Popp> он у всех в репозиториях есть?
[18:56:21] <f[x]> ручками, ручками
[18:56:38] <Andrey Popp> f[x]: :-(
[18:56:44] <Andrey Popp> там же зависимости...
[18:56:45] <ermine> и ножками
[18:56:52] <f[x]> для этого и есть brb
[18:57:06] <f[x]> название какое-то странное, btw
[18:57:18] <Andrey Popp> я вчера начал ночью портировать под homebrew его
[18:58:01] <ermine> берберри
[18:59:47] <ermine> а под андроид есть камло таки?
[19:00:10] <ermine> или там только на яве строгать можно?
[19:00:52] <gds> f[x]: колись, откуда вопрос про оазис/брб.  есть какие-то вещи, которые явно вызовут затруднения?
[19:01:26] <f[x]> gds: чего? не, просто хороший тест будет, да и полезный сразу
[19:01:55] <f[x]> ну и шкурный интерес - надо на чистую машину камло засетапать :)
[19:02:05] <ermine> gds: я тебе могу сразу сказать трудность с оазисом, из-за которой я не могу юзать оазис!
[19:05:09] <gds> теперь вот вопрос.  репка с брб есть, но надо как-то её заюзать.  на хосте нет (точнее, не нужны) рутовские права.  что делать?  в локальный bin её захреначить, или как?
[19:06:16] <ermine> дайте плиз урл к репке с брб
[19:06:37] <bobry> ermine: https://github.com/camlunity/barbra
[19:06:39] <f[x]> gds: brb это же бинарник просто?
[19:06:46] <ermine> пасиб
[19:07:16] <gds> f[x]: по идее -- да.  попробовать в ~/bin?
[19:07:54] <f[x]> ну у меня ~/bin в PATH
[19:08:09] <bobry> ~/.local/bin?
[19:08:43] <bobry> Andrey Popp: oasis слегка противоречит идее homebrew, ибо требует кучи камловских либ
[19:09:37] <Andrey Popp> bobry: угу, но я так понял, пока вы brb не поднимите — нормального инсталлятора нету в ocaml  экосистеме?
[19:09:37] <gds> а для брб -- не противоречит.  просто будет конфиг с оазисом, который тупо копипастить в конфиг проекта.
[19:09:53] <ermine> сколько файликов там уже
[19:10:11] <bobry> Andrey Popp: экосистемы нету вообще :)
[19:10:22] <Andrey Popp> bobry: надо строить)
[19:10:37] <bobry> конечно! для того и барбара :)
[19:14:31] <gds> ну как это нет экосистемы?  вон, мне в рассылке долго втирали, что есть.  дебиан называется, ну или убунту, или бсд.  я уже даже забыл.  и там такие мощные экосистемщики работают, что обосраться можно.
[19:14:43] <ermine> и никаких копирайтов и лицензий
[19:15:13] <ermine> паблик домайн?
[19:19:41] <gds> ermine: ~/LICENSE
[19:19:50] <ermine> зачотный тест в барбаре
[19:20:19] <ermine> а, точно
[19:22:11] ermine не поняла текст лицензии и забила
[19:23:07] <f[x]> я так с eula тоже делал!
[19:29:23] <gds> а у меня пришло время продакшона, запушил в репку результаты oasis setup вместо прошлого setup-dev.
[19:58:33] <gds> чото Arg какой-то странный.  например, в "brb run cmd arg1 arg2 .. argN" нельзя прямым образом сделать так, чтобы узнать, была ли команда "brb run" или какая-то другая команда, так как на случай Arg.Rest оно всего лишь вызывает (string -> unit) функцию на каждый аргумент, а если аргументов не было, то, судя по доке, и не вызовет.
[20:00:06] <f[x]> парсь руками, Arg тупой
[20:02:43] <gds> а, ну это значит, что я нигде не ошибся в оценках Arg.
[20:05:55] bobry вышел(а) из комнаты
[20:06:15] bobry вошёл(а) в комнату
[20:09:49] <gds> мда, эта срань не работает вдобавок:
; ("run",
   Arg.Rest (fun arg -> failwith "kva"; run_list_rev := arg :: !run_list_rev),
   " run command with brb environment")
[20:10:00] <gds> переписываю нахрен, оно нужно сейчас.
[20:28:21] <gds> и всё-таки не очень нравится, что ./brb запускает билд по умолчанию.  раздражает слегка.  может таки ./brb build (или какие-нибудь сокращения, в том числе "b", "bu", ...) предусмотреть?
[20:28:59] <bobry> gds: можем запилить ситему как hg, с levenstein distance :)
[20:29:10] <bobry> там же не только по префиксу?
[20:29:27] <gds> в git этот самый distance, раздражает тоже.  в hg -- префикс.
[20:29:50] <bobry> в git ничего.. он только говорит "did you mean" и ничего не делает
[20:29:55] <bobry> ну давай по префиксу тогда
[20:30:11] <gds> а, ну это тоже не угадывает.
[20:30:45] <gds> пока важно иметь не просто brb, а brb build для билда.  так и сделаю, потом откати/пофиксь, если чо.
[20:32:31] <gds> я сейчас на инороднем хосте всё это пытаюсь вкатить.
[20:32:39] <gds> *инородном
[20:33:05] <bobry> зачем?
[20:33:53] <gds> альтернатива -- заставлять сисадмина поднимать всё системно.  мои внутренние либы тоже.  или извращаться со старым "ребилдолом".
[20:34:35] <gds> понадобилось старенькую программку поднять.  а там либ -- мягко говоря, немало.
[20:34:58] <gds> (рекламным голосом)  но теперь!...  у нас есть варька!
[20:39:06] <bobry> барбара а не варька :(
[21:30:44] <gds> ну вот, приплыли, wget отсутствует, но curl есть.
[21:30:58] <gds> чо делать?  ln -s не предлагать лол
[21:31:56] <gds> вот опять же, is_available должен проносить что-то в fetch -- например, [ `Curl | `Wget ].
[21:32:23] Andrey Popp вышел(а) из комнаты
[21:33:52] <gds> вот это уже не смешно, сделать дело надо сегодня, а админ того хоста ушёл в оффлайн.  давайте быстренько придумаем что-нибудь на тему curl'а.
[21:37:36] <gds> как вариант -- сделать source чем-то типа (уж извените за revised, но он понятнее)
source : Lazy.t (res (~dest_dir:string -> res unit exn) exn)
то есть, ленивое значение, возвращающее функцию (которая знает, есть там курл или вгет, и знает, как поступить с ~dest_dir), либо фейл.  почему ленивое -- потому что в процессе запуска программы нам никто не установит wget/curl/hg/git/...
[21:46:13] <gds> bobry: ^^
[21:48:04] <bobry> gds: не понял про ленивость, почему это необходимо?
[21:48:37] <gds> не необходимо, но удобно -- между двумя проверками wget не появится в системе.
[21:49:22] <bobry> все равно не понимаю в чем удобство, мы вполне можем определить что есть при создании объекта и зафейлиться если нету ничего
[21:50:03] <gds> а я не понимаю, как это определить так, чтобы было удобно и чтобы не проверять wget тогда, когда в brb.conf нет remote-*.
[21:50:15] <gds> если сделаешь так, чтобы был wget+curl -- давай, будет клёво.
[21:50:23] <gds> и практически-полезно.
[21:50:57] <bobry> тык определять будет когда будт создаваться инстанс remote_source
[21:51:01] <bobry> *будем
[21:51:12] <bobry> аа.. вот про что ты
[21:51:18] <bobry> типа определяем один раз
[21:51:58] ermine вышел(а) из комнаты
[21:52:22] <gds> всякое системное лучше один раз и только по нужде, а, определив один раз, не переопределять через Sys.command "which .."
[21:52:31] <gds> это как бы идеально.
[21:52:54] <bobry> понял, надо это в туду
[21:53:04] <bobry> я щас пока в учебе, но через пару часов освобожусь
[21:53:19] <gds> давай идеи, как сделать.  мне это надо уже полчаса назад.
[21:53:27] <gds> как с точки зрения архитектуры.
[21:54:13] <gds> то есть, накодить несложно, но надо сделать.  первый промычленный запуск барбары, йо.
[21:54:50] <bobry> может нам как нить ensure на эту тему перелопатить?
[21:55:00] <bobry> ничего кроме банального замыкания в голову не лезет
[21:56:57] <gds> ну вот я его и предложил, под лентяйкой для оптимальности.
про ensure думал, мемоизацию сделать можно было бы.
ты взялся за архитектуру -- ты и думай.  чо мне кодить?
[22:02:35] <bobry> ну по хорошему это должен быть ленивый class attribute, но я не знаю как это сделать в камле :)
[22:13:57] ftrvxmtrx вошёл(а) в комнату
[22:14:46] <gds> class remote url будет создаваться для каждого нового урла.  впрочем, реализую чисто curl-wget, там поглядишь.
[22:26:55] <gds> как вы думаете, что можно стилистически поправить в данном ответе?
> Note that to a degree, OMake already provides the ability to do
> Unix-style things under Windows.
  I won't wish you ever hear the words I've said while porting
OMake on mingw.  If you want a polite response, please take
a look at
http://overbld.hg.sourceforge.net/hgweb/overbld/overbld/file/tip/src/omake
  -- "orig" directory is your sources, but other files are my
patches and other dirty hacks to make omake compile
and run.
  Your OMake is the most annoying piece of OCaml software
that pretends to "run under windows", that I've ever ported to
OCaml/mingw.
[22:27:43] <bobry> gds: напиши им шо wtfs per minute зашкаливают при чтении исходников OMake :)
[22:28:19] <gds> да даже не в исходниках дело, а в общей тупизне.  делить мир на unix/msvc -- пагубно влияет на карму.
[22:43:13] <gds> отписал гневное письмо.  сука этот ногин.
[22:43:37] <bobry> какой тред?
[22:45:32] <gds> https://sympa-roc.inria.fr/wws/arc/caml-list/2011-12/msg00291.html
[22:56:20] <bobry> Aleksey Nogin! русский чтоли?
[23:19:24] <bobry> gds: кстати не хочешь заюзать cmdliner? :)
[23:30:28] <gds> bobry: хочу, когда сдам "практическое задание".  и, наверное, в отдельной ветке.
[23:35:22] <gds> и только теперь мне будет нужна командная строка для курла из репки ниха.
[23:40:24] Andrey Popp вошёл(а) в комнату
[23:40:43] Typhon вошёл(а) в комнату
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!