OberonCore
https://forum.oberoncore.ru/

DIA: BlackBox Component Builder 1.6 + GTK2
https://forum.oberoncore.ru/viewtopic.php?f=134&t=3535
Страница 3 из 6

Автор:  Иван Денисов [ Четверг, 13 Сентябрь, 2012 12:18 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Обновил репозиторий, теперь ядро от OpenBUGS 3.2.2 с теми правками от Александра.

Автор:  Alexander Shiryaev [ Четверг, 13 Сентябрь, 2012 12:31 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Ок.

Теперь надо исправить опечатки:
  • System/Mod/Kernel.odc: "kernal" -> "kernel"
  • readme: "заного" -> "заново"
:)

Ещё:
  • вместо "#!/usr/bin/python" правильно писать "#! /usr/bin/env python", т. к. python не у всех в /usr/bin
  • вместо "#!/bin/bash" правильно писать "#!/bin/sh", т. к. bash есть не у всех
(setup_script.py, start, stop)

stop: используй pkill вместо kill `ps ...`

Автор:  Иван Денисов [ Четверг, 13 Сентябрь, 2012 13:36 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Alexander Shiryaev писал(а):
Ок.

Теперь надо исправить ...
Все поправил, реп. обновил.

Если вы захотите что-то заливать сами, то права на запись в этот реп. у вас есть. Хотя мне такая форма больше нравится — учусь.

Автор:  Alexander Shiryaev [ Четверг, 13 Сентябрь, 2012 23:04 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Не.. вместо
Код:
kill `ps -ef | grep blackbox | grep -v grep | awk '{ print $2 }'

надо было написать
Код:
pkill -x blackbox

http://ru.wikipedia.org/wiki/Pkill

Автор:  Иван Денисов [ Суббота, 15 Сентябрь, 2012 12:59 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Alexander Shiryaev писал(а):
Не.. вместо
Код:
kill `ps -ef | grep blackbox | grep -v grep | awk '{ print $2 }'

надо было написать
Код:
pkill -x blackbox

http://ru.wikipedia.org/wiki/Pkill
Сделал, проверял на GUI версии, интерфейс остается висеть. А вот серверная версия убивается хорошо. Скрипт собственно для нее, поэтому все ОК.

Автор:  Alexander Shiryaev [ Суббота, 15 Сентябрь, 2012 14:48 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Вообще надо будет правильно реализовать обработку сигнала SIGTERM.

Сейчас просто срабатывает TRAP, а надо:
  • для консольной несерверной версии: можно так и оставить;
  • для консольной серверной версии: чтобы завершался цикл процедуры Loop, запущенной процедурой Kernel.Start;
  • для GUI-версии (серверной): эквивалентно File->Exit (нажатию на кнопку закрытия главного окна).

Автор:  Иван Денисов [ Суббота, 15 Сентябрь, 2012 18:39 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Alexander Shiryaev писал(а):
Вообще надо будет правильно реализовать обработку сигнала SIGTERM.

Сейчас просто срабатывает TRAP, а надо:
  • для консольной несерверной версии: можно так и оставить;
  • для консольной серверной версии: чтобы завершался цикл процедуры Loop, запущенной процедурой Kernel.Start;
  • для GUI-версии (серверной): эквивалентно File->Exit (нажатию на кнопку закрытия главного окна).

Отлично, разобрался, что в ядре за обработку всех прерываний отвечает TrapHandler добвил в CASE sig OF вариант | LinLibc.SIGTERM Quit(1); и трап больше не выдается. Также, добавил Quit(1) на SIGINT, чтобы ББ закрывался при нажатии Ctrl+C в консоли, это очень облегчит отладку. Уф. Реп. обновил.

Автор:  Иван Денисов [ Среда, 19 Сентябрь, 2012 12:13 ]
Заголовок сообщения:  Re: Итерация 2

Alexander Shiryaev писал(а):
Иван Денисов писал(а):
Каким образом делали эти хедеры Gtk2? Вопрос автоматической хедерогенерации открыт.

По поводу автоматической кодогенерации интерфейсных модулей.
См.:
${PREFIX}/share/pygobject/2.0/defs
${PREFIX}/share/pygtk/2.0/defs
из py-gtk2
На основе этой информации, по-моему, можно генерировать интерфейсные модули для Gtk2.
Парсер для Питона:
${PREFIX}/share/pygobject/2.0/codegen/definitions.py
Для облегчения процесса транслятор можно написать на Питоне.
Попробовал там разобраться, но пока многого не понял в этой системе Питоновской.

Но зато вспомнил про H2O, его получилось адаптировать под КП и транслировать две библиотеки.
viewtopic.php?f=34&t=661&p=74877#p74877
На сколько они пригоды сложно судить, но процесс прошел до конца, типы данных и процедуры совпадают с известными трансляциями Cairo и FreeImage. Пробовал gtk2 транслировать, но это оказалось посложнее лезут ошибки.

Автор:  Иван Денисов [ Вторник, 25 Сентябрь, 2012 20:02 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Почистил историю репозитория от случайно добвленных pdf и txt документов, а также svn ошметков.
Помогла статья: http://www.ducea.com/2012/02/07/howto-c ... t-history/

Автор:  Иван Денисов [ Среда, 26 Сентябрь, 2012 20:23 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Добавил HostFiles, Kernel, LinDl, LinLibc из хранилища Александра, заменил ими версию ядра OpenBUGS322 и Омниковские модули. С новым ядром легче идет отладка компонентов интерфейса, приложение делает корректно аварийную остановку.

Добавил обработку сигналов завершения в версию ядра Александра, что обсуждалось выше.

Автор:  Иван Денисов [ Среда, 26 Сентябрь, 2012 22:58 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Починил HostGnome и теперь нормально отрабатывается Hook для Kernel.MessageBox ! Оказалась устаревшая функция в libgnomeui

Еще вернул назад ядро OpenBUGS но с правками памяти от Александра. Оказывается аварийная остановка нужна не всегда, если нормально работает ТРАП.

Теперь лог открывается и в нем деже можно что-то напечатать, но затем ББ зависает насмерть.

Автор:  Alexander Shiryaev [ Четверг, 27 Сентябрь, 2012 19:59 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Иван Денисов писал(а):
Еще вернул назад ядро OpenBUGS но с правками памяти от Александра. Оказывается аварийная остановка нужна не всегда, если нормально работает ТРАП.

?

Цитата:
Теперь лог открывается и в нем деже можно что-то напечатать, но затем ББ зависает насмерть.

Попробовал, как работает StdLog (Info -> Open Log) в Linux (Fedora Core 17). У меня почему-то всё нормально работает, не зависает, TRAP не выдаёт. И в OpenBSD тоже.

Что нужно сделать, чтобы BlackBox завис или аварийно завершился?

Автор:  Alexander Shiryaev [ Четверг, 27 Сентябрь, 2012 20:21 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Иван Денисов писал(а):
Починил HostGnome и теперь нормально отрабатывается Hook для Kernel.MessageBox ! Оказалась устаревшая функция в libgnomeui

Кстати DevDebug работает в Linux Fedora Core 17.

В OpenBSD не работает (зависает сразу после TRAP-а) -- буду разбираться.

Вложения:
Комментарий к файлу: DevDebug в Linux Fedora Core 17
1.png
1.png [ 40.54 КБ | Просмотров: 8554 ]

Автор:  Иван Денисов [ Пятница, 28 Сентябрь, 2012 08:23 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

После того как я поправил HostGnome и пересобрал ядро с ним, как описано в Lin/Docu/LinuxPort.odc, заработали KernelMessages и после открытия лога вылетает такое окошко с Undefined real result и с вашей версией ядра ББ закрывается с OpenBUGS версией не закрывается, а через некоторое время зависает. Я сделал гибрид OpenBUGS322 и вашего ядра, перенес исправления по работе с памятью. Этот гибрид вместе с исходными ядрами (OpenBUGS322 и вашим) залил в хранилище.

Чтобы показать поведение ББ в Ubuntu 12.04 записал видео: http://oberon.molpit.ru/podcast/BB_Lin_test.mp4

Автор:  Alexander Shiryaev [ Пятница, 28 Сентябрь, 2012 09:20 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Ок. Странно что в Fedora Core всё нормально работает.

Автор:  Alexander Shiryaev [ Суббота, 29 Сентябрь, 2012 18:31 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Иван, моё ядро не работало, потому что я забыл исправить Kernel.Start.

Теперь у меня всё нормально работает в OpenBSD и в Fedora Core. И DevDebug тоже работает.

Ищи место, где возникает "Undefined real result".

Автор:  Alexander Shiryaev [ Понедельник, 01 Октябрь, 2012 22:39 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

С обработкой исключения при переполнении стека не всё так просто оказалось. Если использовать альтернативный стек для обработки сигналов, то оказывается, что если из обработчика сигнала выйти не по RETURN, а через siglongjmp, то в состоянии процесса сохраняется, что выполнение идёт в альтернативном стеке, и при следующем вызове обработчика сигнала для него уже не происходит переключение на альтернативный стек. Т.е. получается. что в альтернативном стеке обрабатывается только 1-й (по времени) сигнал, а все последующие -- в основном.

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

Может быть проблему можно решить с помощью sigreturn вместо siglongjmp (тогда вместо sigsetjmp надо выполнять setcontext). Уже пробовал, это вообще работает.

Но ещё есть проблемы.

1) быват, что BlackBox зависает при обработке сигнала (или сразу после) при включенном альтернативном стеке;

2) бывает, что BlackBox зависает при обработке SIGSEGV (или сразу после него, даже при выключенном альтернативном стеке) в случае использования просмотрщика TRAP-ов DevDebug вместо Kernel.DefaultTrapViewer.

Разбираюсь.

P.S.: в OpenBSD нет setcontext :) :(

Автор:  Alexander Shiryaev [ Воскресенье, 21 Октябрь, 2012 03:42 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Иван Денисов писал(а):
Undefined real result


Немного поразбирался. Это проблема где-то в Gtk в Ubuntu. Зависает именно Gtk, а не BlackBox, т.е. сам BlackBox продолжает при этом работать.

Автор:  Иван Денисов [ Понедельник, 22 Октябрь, 2012 07:58 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

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

Автор:  Иван Денисов [ Понедельник, 22 Октябрь, 2012 20:09 ]
Заголовок сообщения:  Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2

Убрал ошибку undefined real result при открытии Log, вызывается в HostWindows.UpdateScrollbar, пометил синим. Вернул назад LinLinker так как теперь среда себя запросто собирает сама. Вызов инструмента для сборки из меню Linux/Tool

Нужно сделать корректное открытие файлов.
Нужно сделать обработку колеса мыши, улучшить выделение слов в текстах.

Страница 3 из 6 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/