?

Log in

No account? Create an account

Заповедник репрессивной психиатрии

Пингвины из заполярного рейха наступают
metaclass
Стоило пару месяцев посидеть в линуксе, как "началось".
Сначала одни коллеги присылают софт, который нужно собирать под убунтой.
Потом на работе принято решение переделать сетевую инфраструктуру немного, что тянет за собой хитрожопо настроенный линуксовый маршрутизатор.
Сегодня одни потенциальные клиенты позвонили начальнику и спросили "а есть ли версия под линукс".

И, как обычно, заниматься всем этим нет времени, "есть более важные вопросы". Хотя если желающие линуксового софта предоплатят работу на полгода вперед - тогда можно и заняться.

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

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

Проект состоит из аддона к 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 не используйте этот файл, в нем жабы черви и змеи"
В общем, уже как бэ и поздно, и мозг уже не соображает - потом буду разбираться дальше, или же напишу авторам, чтобы сами собирали свой шрот и не компостировали мозг.

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

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