metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-10-20 08:18 pm

Разработка под Линукс. Просто?

Вот ощутил, так сказать, на собственной шкуре чо такое разработка под Линукс.

Простая задача: собрать чужой проект, чтобы можно было отладить мою дотнет-часть, с ним взаимодействующую.

Проект состоит из аддона к rdesktop, который вытаскивает виртуальный канал с виндового терминального сервера в виде двух fifo и работающей с этими fifo проги на питоне.
У авторов вся последовательность сборки и запуска задокументирована. Там множество вуду-действий, типа "настроить правила для udev, чтобы пользователь мог видеть подключаемые устройства", но б-г с ним.

Значит, rdesktop собирается нормально. Зачем они его собирают - не знаю, но так написано. Аддон к rdesktop собирается тоже нормально. fifo делаются вручную. Затем надо запустить питоновую прогу, для чего они делают EXPORT PYTHONPATH=$PWD/src:$PYTHONPATH и затем запускают питон с именем проги. Этот этап уже не работает. Если запустить питон и сделать import sys и print sys.path - в путях нужный путь есть. strace тем не менее показывает что скрипт питон открывает без путей вообще.

Ладно, думаю, разберемся позже, запускаю с полным путем. И тут начинается. Во первых, требуется google.protobuf, в инструкции не упомянутый. Качаем. Собираем бинарник. Запускаем питоном setup.py, вроде инсталлируется. Запускаем. Начинает требовать питоновые модули, упомянутые в инструкции.
Первый модуль python-pyaudio. В репозитории нет. Ищем гуглом. Есть deb. Качаем, ставим.
Второй модуль python-pyinotify. В репозитории есть. Ставим.
Третий модуль python-pyspeex. Нету. Ищем. Качаем исходники. Пытаемся ставить. Требует pyrex (какой-то модуль для интеграции C и Python). Ищем в репозитории. Есть. Ставим. Тянет за собой питон 2.4 (текущий используемый - 2.5.2). Запускаем опять билд pyspeex - ебубух, "cannot assign float to short" и получается на выходе только файл speex.c с содержимым типа "#error не используйте этот файл, в нем жабы черви и змеи"
В общем, уже как бэ и поздно, и мозг уже не соображает - потом буду разбираться дальше, или же напишу авторам, чтобы сами собирали свой шрот и не компостировали мозг.

В итоге мы имеем несколько часов потраченных на билд только одного мелкого куска системы.
И пример к чему приводит любимая методика "слепить из <говнаповторно использовать наработки сообщества".

Кстати, прототип этой хрени, без питонов, на чистом С, собрался и условно "заработал". Но судя по исходному коду, авторам надо безжалостно отрывать жопу (полное отсутствие обработки ошибок). То что это прототип - не оправдание, нормальный программист физически не может писать код, не обрабатывающий все мыслимые и немыслимые ошибки.

[identity profile] vp.livejournal.com 2009-10-21 04:57 am (UTC)(link)
Однако именно под целевой ОС такие дикие связки - это норма и промышленный стандарт.

[identity profile] kiryl.livejournal.com 2009-10-21 05:18 am (UTC)(link)
Если вы не заметили, то речь скорее не о linux/unix, а о python. И целевая ОС тут вообщем-то не при чём. У питона свои черви.

[identity profile] spushnyakov.livejournal.com 2009-10-21 06:21 am (UTC)(link)
Ну давайте расскажите нам, как питоновские черви плодятся на благородной почве Windows....
И вся проблема в том, что черви Питона скрещиваются с червями разработчиков на Питоне и усугубляются генами фанатов "целевой ОС". И получается то что получается....

P.S. А есть еще продукты(!) на Huskel, Erlang и прочих "суперязыках" владение которыми несомненно повышает ЧСВ разработчика, но напрямую ведет к невозможности нормальной поддержки продукта, его развития и зачастую просто нормальной работы.

[identity profile] metaclass.livejournal.com 2009-10-21 07:57 am (UTC)(link)
Haskell и Erlang это же лютый фетиш, круче даже чем линукс. Для пользования линуксом не нужно знать теорию категорий и лямбда-исчисление :)

[identity profile] vp.livejournal.com 2009-10-21 06:32 am (UTC)(link)
Вот о чем и речь. Под Win в подобной постановке задачи для такого применения ни у кого в кошмарном бреду не появится идеи притянуть сюда за уши питон. А в линуксе это норма, потому что на другом писать не умеют, не модно, комьюнити не велит (нужное подчеркнуть). Короче, традиции изначально заточены на такие вот гроздья.