DRAKON.SU

Текущее время: Вторник, 22 Май, 2018 10:51

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: Воскресенье, 01 Октябрь, 2017 17:31 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 3655
Откуда: Москва
http://vasilisc.com/drakon-snap

Цитата:
DRAKON в snap

Игра в снапкрафтера очень увлекательна, поскольку прокачивает твой скилл в знаниях Linux систем. Поэтому после упаковки менеджера сессий PAC, шило снова заиграло в /dev/ass и решено было найти нового подопытного кролика.

Вначале глянул в список Debian Orphaned, который неизменно наводит на уныние. Это брошенные сироты, в описании которых неизменно одно и тоже - потерян интерес сопровождающего.

Очень хотелось впервые упаковать какой-либо русский проект, чтобы своим маленьким вкладом немного помочь ему.

Почти случайно обнаружил на просторах Интернета сайт про ДРАКОНа - Дружелюбный русский алгоритмический язык, который обеспечивает наглядность. Но, прочитав пару статей про него, был немного ошарашен.

Кратко говоря, Дракон - это средство создания различных диаграмм, в частности, диаграмм деятельности (activity diagram), диаграмм состояний (UML state machine), диаграмм синхронизации (timing diagram).

В довершение, с помощью Дракона можно через Экспорт получить готовую программу на языках программирования: C и C++, Java, C#, Python, Tcl, Javascript, Erlang, D, Lua и Go.

А теперь добавьте, что Дракон был создан в рамках космической программы Буран и активно используется в российской космической отрасли.

Здесь и далее речь пойдёт о DRAKON Editor, так как существует ещё "ИС Дракон" для MS Windows платформы. Начитавшись про Дракона, реально струхнул, честно говоря. Программа на глазах стала не просто программой, а программищей, пародируя Дмитрия Нагиева.

Но первое знакомство подвергло в ступор. Как-то морально готовишься к тому, что если программа сложная, то должно +100500 кнопок и пунктов меню и всё должно быть похоже на пульт управления звездолётом.

Изображение

DRAKON Editor

Но Дракон, написанный с помощью Tool Command Language (Tcl) и графической библиотеки Tk, производил, мягко говоря, аскетичный вид. По первости я лишь недоумённо разводил руками и выдавал нечленораздельное мычание - э-э-э, что это?

Снова перечитал статьи в Интернете и, навсякий случай, поискал мнение англоязычного населения планеты. Просто опасался, что это может оказаться детищем очередного Дениски Попова, аля Болгенос!

Будучи админом, давно умер как программист, поэтому решил, что не мне судить программы. Привлекло, что это 1) русский проект и 2) используется язык/тулкит Tcl/Tk, с которыми до этого времени не сталкивался. Ок, подумал, давай сделаем это!

Сборочный сервак обзавёлся новой пустой папкой и прототипом snapcraft.yaml. На сайте разработчиков drakon.su для Drakon Editor'а указаны нужные пакеты для Ubuntu - tcl8.5, tk8.5, tcllib, libsqlite3-tcl, libtk-img.

Заносим их всех в stage-packages кусочка integration. Правлю свой уже вылизанный скрипт-обёртку run.sh под нужды Дракона и пробую первую итерацию по сборке. Уже было понятно сразу, что закончится всё печально. Первый блин в мире снапкрафтинга всегда комом!

Так как сборка программы в snap пакет довольно таки ресурсоёмкий и времязатратный процесс, то делаю ход конём, который всегда выручал при анализе программы.

Программу располагаю на своём ПК в /opt/drakon/ с владельцем root:root (имитация будущего пути $SNAP с доступом только-чтение), ставлю нужные пакеты в свою систему и пытаюсь добиться работоспособности программы.

Программа стартует и работает нормально. Конечно нормально! Tcl/Tk лежат со своими модулями там где нужно, а внутри snap пакета они будут лежать по своим путям, сдвинутые относительно хост системы на величину $SNAP.

Чтобы в своей системе без утомительной сборки добиться работы Дракона, просто нашёл все папки tcltk и переименовал в tcltk_, имитируя изменение пути в будущем пакете снап. Программа предсказуемо "сломалась". Теперь осталось дело за малым .

Нужно запустить Дракона, указав каким-либо способом (желательно самым простым и элегантным), где лежат нужные вещи у Tcl/Tk.

Самые главные помощники - это переменные окружения (environment variables). Чтение документации знакомит с переменными TCL_LIBRARY, TK_LIBRARY, TCLLIBPATH. Их говорящие названия обнадёживают. Пробуем!? В запускающем скрипте переопределяем пути с помощью данных переменных.

#!/bin/bash
export TCL_LIBRARY="/usr/share/tcltk_/tcl8.6"
export TK_LIBRARY="/usr/share/tcltk_/tk8.6"
/opt/drakon/drakon_editor.tcl

Программа упорно пишет что не видит нужные ей snit, Tk, msgcat, Img.

Добавил всё что можно и не можно в переменную TCLLIBPATH, но толку ноль. К этому времени начитался чуток про Tcl/Tk и понял, что нужно пока отстать от программы Дракон и сосредоточиться на оболочке tclsh. Если её запуск и команды внутри неё типа

package require msgcat
package require Tk
package require snit
перестанут вызывать ошибку и начнут показывать номер версии пакета, тогда и Дракон заработает. msgcat с расширением tm обнаружил в моём правленом пути /usr/share/tcltk_/tcl8.6/tcl8/, а в родительской папке /usr/share/tcltk_/tcl8.6/ нашёл файл tm.tcl со строкой, которая всегда наводит уныние.

variable paths {/usr/share/tcltk/tcl8.6/tcl8}
Вечно эти жёстковшитые пути! Твоютоматьдивизию! Прочитал tm.tcl целиком и набрёл на кусок кода

foreach ev [::list \
TCL${major}.${n}_TM_PATH \
EV - это скорее всего Environment Variables.

А TCL${major}.${n}_TM_PATH это переменная, которая зависит от версии языка и тулкита Tcl/Tk.

В данный момент доступна версия 8.6, поэтому tcl ждёт от меня переменной TCL8.6_TM_PATH="/usr/share/tcltk_/tcl8.6/tcl8/", которая может переопределить дефолтный путь.

Ринулся было указывать export TCL8.6_TM_PATH, но bash мне выдал что точку нельзя использовать в имени-идентификаторе переменной.

Разрабы Tcl/Tk, ну как так-то? Ну что вам стоило ожидать переменную TCL_8_6_TM_PATH или TCL86TM_PATH?! Нашёл обходной манёвр. Запуск tclsh нужно делать так


Читать дальше


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2018, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB