MonoDevelop на Nokia N900. Where is your God now?


    Работает всё, что вообще может работать. Редактор, компиляция, отладчик, значение переменной по клику в отладчике. С диким скрипом и скрежетом даже дизайнер форм.

    Пощупать сии ништяки у себя на мобилке можно добавив
    deb http_://archive.kebrum.com/n900/ all main
    В sources.list (надеюсь, я ничего не забыл при упаковке). Также понадобится подключить extras-testing и extras-devel. После чего набрать в консоле apt-get install monodevelop. Вся иерархия пакетов полностью соответствует таковой в Debian, за исключением 2 оптификационных, но они автоматом подтянутся по зависимостям.

    Пока пакеты ставятся, забивая бесценное место в rootfs библиотеками из маэмовских репов (у меня-то всё в /opt, вы не подумайте!), предлагаю Вам почитать, как дошёл я до жизни такой.



    Я хотел рассказать обо всём по-порядку, но для начала пятиминутка ненависти.

    Хочу передать привет содомитам из Nokia, которые вместо нормального эмулятора своего девайса подсунули недоделанную старую версию qemu-arm, что сделало невозможным использование моновского компилятора, и, как следствие, сборки какого-либо управляемого кода посредством этого их SDK. Они подарили мне много весёлых часов.
    Хочу передать привет разработчикам биндингов к gtk, которые соорудили генератор кода, который генерит нечто некомпилируемое (что превратило их сборку в кошмар из серии «не пытайтесь повторить это дома»), а так же считающим, что в гткшном диалоге в action area обязательно находится HButtonBox, хотя документация говорит, что там абстрактный контейнер (в результате чего GtkDialog.ArctionArea всегда было null). Они тоже подарили мне немало весёлых часов.
    Так же хочу передать привет разрабочикам Mono.Addins, которые пишут вот такой код:

    string folder = args.Length > 2 ? args [2] : null;
    if (folder.Length == 0) folder = null;


    На этом пятиминутку ненависти можно считать законченной. В конце концов они все хорошие люди, благодаря которым всё это вообще заработало.

    Собственно, после написания предыдущего поста я решил отказаться от правки debian/rules с целью переноса всего хлама в /opt, поскольку это ломало часть компонентов. Теперь оптификация производится предварительным созданием симлинков на нужные директории. Кстати, за счёт этого можно легко вычистить monoи всё с ним связанное, просто удалив пакет mono-opt-prepare. После сборки биндингов к гтк, и проверки работоспособности того, ради чего всё затевалось (кстати, софтина вообще без изменений исходника завелась, сейчас переделываю диалоги под размер экрана и управление пальцем), я решил проверить сборку в целом. Какая самая сложная программа на GTK#? Правильно, Monodevelop. Непосредственно после сборки всех зависимостей (часть пакетов была утянута непосредственно в бинарном виде с ports.ubuntu.com) я напоролся на следующую пакость:
    image

    И так практически со всеми диалогами. Поскольку сырцы биндингов уже были пропатчены в связи с багом с ActionArea, я не придумал ничего лучше чем спрятать от внешнего наблюдателя оригинальный VBox, а вместо него подсунуть другой, обёрнутый в ScrolledWindow. Полчаса шаманств и получился GtkDialog, адекватно подстраивающийся под размеры своего содержимого. Примерно вот так:



    Что помешало нокиевским программистам сделать то же самое (учитывая, что диалог они и так переделали до состояния несовместимости с биндингами), а не ломать софт, заточенный под большие экраны, для меня остаётся загадкой. Если кто-то захочет таки достучаться до оригинального VBox-а, то это легко сделать просто перейдя по ссылкам на 2 уровня иерархии вверх.

    Некоторую проблему представило из себя взаимодействие с отладчиком и компилятором, но это решилось посредством добавления ещё нескольких симлинков, хоть и потребовало копаться в исходнике.

    Теперь ложка дёгтя. У меня не получилось отключить HILDON_GTK_INPUT_MODE_AUTOCAP через IMContext (для TextArea и Entry всё прекрасно, но MonoDevelop использует свой контрол для редактирования текста и работает с IMMultiContext напряму), так что придётся либо отключать автоподстановку заглавных букв глобально, либо печатать зажав шифт. Если кто-то владеет информацией по этому поводу, прошу поделиться.

    Помимо перечисленного эта зараза почему-то не видит в списке сборок для подключения библиотеки, не относящиеся непосредственно к Mono. Это лечится добавлением оных по абсолютному пути. Это я попробую исправить, но ничего не обещаю.

    И ещё. В нокиевские репы это, по всей видимости никогда не попадёт по той причине, что из-за особенностей процесса сборки (этот файл берём с эмуля, те 10 из скомпиленного под убунту, тут тормозим процесс сборки и подсовываем сгенерированный под той же убунтой исходник, правим линки, правим debian/control, etc) невозможно создать вменяемые пакеты исходного кода, а убедить их в безопасности бинарников весьма сложно. В прочем, если кто-то связан с этой тусовкой и решится помочь, буду рад.

    Напоминаю, что теперь софт для N900 можно разрабатывать хоть в Visual Studio, если у кого-то с этим возникнут проблемы, обращайтесь, буду рад помочь.

    UPD: выяснилось, что при отсутствии bash возникают проблемы с установкой. Если кто уже столкнулся, то лечится apt-get install bash. Сейчас пропишу его в зависимости.

    UPD2: А ещё запустился Paint.NET:

    Пакет зовётся paint-mono и уже есть в репозитории.
    Share post

    Similar posts

    Comments 41

      +1
      А что это за приложение, ради которого всё затевалось?
        +4
        Отвечаю сам себе: клиентская часть для Kebrum VPN.
          +5
          Надо возразить себе, а потом опять согласиться… И получится диалог.
            +22
            Потом назвать троллем и нагадить в карму.
              +12
              А зачем троллем… Просто приятно поговорить с умным человеком.
                +1
                А можно начать ветку «кто я — тролль или умный человек»?
                  +2
                  *или «эльф»
                  –1
                  Также можно вступить в диалог с самим собой в качестве уже третьего человека с третьим мнением, не совпадающим ни с мнением стартера, ни с мнением «тролля». Ну а затем добавить четвертого, который просто запостит сиське.
                    +1
                    Ребята, вам бы на имиджборды, там такое сплошь и рядом, благо, анонимность позволяет.
              0
              А там разве не обыкновенный openvpn?
                0
                Да, он. Но как-то у них там все закручено.
                  0
                  Просто на N900 есть openvpn апплет в репах, ставится, импортируются ключи и конфигурационный файл, не понимаю зачем еще клиент какой-то сторонний нужен…
                    0
                    Ради удобства.

                    Я, например, у себя на Android OpenVPN настраивал (не Kebrum, а свой корпоративный), так это квест не из простых (при том, что OpenVPN в прошивке уже был).
                      0
                      У нас поверх openvpn накручена смена IP-адреса на лету (на каждом сервере минимум 3 адреса на выбор) + биллинг + всегда актуальный список серверов. По-моему, вполне достаточно причин для установки.
              +16
              Кекс, я тебе говорил, что ты извращенец? =)
                +2
                Эх, Саша, кто ему только этого не говорил…
              • UFO just landed and posted this here
                  +4
                  Месье знает толк! Респект.
                    –6
                    «Я запустил MonoDevelop на Nokia N900»
                    И в чем PROFIT?
                      +7
                      Это делалось в первую очередь для проверки работоспособности биндингов и рантайма. А так вообще можно спокойно в метро проверять пришедшие в голову идеи. Нормальное IDE с отладчиком в этом плане очень полезно.
                      +1
                      Сколько же вы времени потратили на это?
                        +5
                        Основные потери времени пришлись собственно на компиляцию. А так дня полтора-два чистого времени в общей сложности.
                        +5
                        Главное — чуство гордости в конце. Я вас поздравляю!
                          0
                          Отличная работа. Спасибо.
                            +5
                            Хххххх… хороёб!
                              +1
                              > оптификационных
                              Чего?
                                +5
                                /opt -> move to /opt -> optify -> optification -> optificational -> оптификационный. Теперь этимология понятна?
                                  0
                                  Теперь-то да. Но все равно кричаще не по-русски. Как тут уже отметили, толк вы знаете.
                                    0
                                    а мне термин понравился )
                                +4
                                А что за музыка играет в первом видео? Понравилась. :)
                                  0
                                  Umineko no naku koro ni Sound Novel BGM — Worldend dominator
                                  +6
                                  Респект за саундтрек из уминек. ^^”
                                    +4
                                    В заголовке вместо «Where is your God now?» лучше «Who is your Daddy?» :)
                                      0
                                      Лучше бы ты ядро пересобрал, ей богу лол.
                                        0
                                        Что, нужна статья на эту тему?
                                          +3
                                          Обязательно.
                                        0
                                        Но зачем?
                                          0
                                          Судя по Холо на экране, вы сами знаете ответ на вопрос в заголовке
                                            0
                                            s/God/waifu/
                                              0
                                              Холо-няшка ваша вайфу? То есть вы живёте с ней и чешете ей хвостик?
                                                0
                                                Дорогой %username%, скоро я пойду спать… Моя лоли-нека уже тянет меня за рукав, сейчас я выключу компьютер и буду щекотать ей живот, а она будет смеяться и сопротивляться, она ткнёт меня по ноге своей коленочкой, тогда я упаду на пол, изображая что потерял сознание, а она будет бегать вокруг и в шутку сокрушаться, потом шутя будет делать массаж сердца и дыхание в рот, тогда я конечно очнусь, и мы вместе посмеёмся над этой сценой…
                                                Потом она сделает серьёзную мордочку и обнимет меня, сильно прижавшись своей небольшой но упругой и тёплой грудкой, я чмокну её в шейку под остреньким ушком, потом возьму на руки и положу в постель, укрою её сверху большим и тёплым одеялом. Пока она будет засыпать, я быстро искупаюсь с шампунем и мылом, почищу зубы. Потом допью сладкий чай, который пил, сидя за компом.
                                                Она будет лежать на боку, лицом к стене, Я тоже лягу на бок, сзади неё, прижмусь всем телом и перекину через неё одну руку, чтобы всю ночь держать её ладошку, мягкую как лапка. Мне будут сниться чудесные сны.
                                                Я желаю это тебе, %username%.

                                                Разрешение на перепечатку и модификацию получено непосредственно от автора оригинального текста. Все права защищены ©

                                          Only users with full accounts can post comments. Log in, please.