OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 15 Сентябрь, 2019 12:50

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




Начать новую тему Ответить на тему  [ Сообщений: 297 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11, 12 ... 15  След.
Автор Сообщение
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Пятница, 27 Март, 2009 12:34 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Илья Ермаков писал(а):
В неграфическом плане вообще не мешает...
Сейчас не 1970 год, любое мало-мальски серьёзное приложение не обходится без GUI.
Илья Ермаков писал(а):
Из ядра выкидывается эта часть.
А заодно и все модули, которые импортируют COM. Об этом я и толкую. Система "подсажена" на COM.
Илья Ермаков писал(а):
Графику вообще переписывать надо, подсистему Host.
Этого можно было бы избежать. Но к сожалению не получится, так как некоторые Оберон-лозунги провозглашены только на бумаге, а на деле в Блэкбокс частенько попираются.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Пятница, 27 Март, 2009 14:49 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
У нынешних "серьёзных" программ морды вебные.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Пятница, 27 Март, 2009 15:35 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1026
Игорь Лоскутов писал(а):
Илья Ермаков писал(а):
В неграфическом плане вообще не мешает. В графике кое-где вплетено, но тоже отслаивается.

Сейчас не 1970 год, любое мало-мальски серьезное приложение не обходится без GUI.
Не хотите - можете не выкидывать. COM - платформенно-независим, вообще-то.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Понедельник, 30 Март, 2009 12:29 

Зарегистрирован: Среда, 31 Октябрь, 2007 18:58
Сообщения: 213
Откуда: Austria, Bruck
:)
Verno. No, dolzhna bit podsistema realizujuschaja COM. V Linuxe takoy net ;-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Понедельник, 30 Март, 2009 13:06 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1026
Её в ядре Linux-а и не будет. Подсистема COM организуется в пользовательском режиме.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Понедельник, 30 Март, 2009 13:47 

Зарегистрирован: Среда, 31 Октябрь, 2007 18:58
Сообщения: 213
Откуда: Austria, Bruck
Mozhete predlozhit' realizaciju? ;-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Понедельник, 30 Март, 2009 17:39 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1200
http://www.ibm.com/developerworks/webse ... xpcom.html
;-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 31 Март, 2009 09:27 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Практика показывает что с COM'ом всё на самом деле плохо. Не под виндой.
Не под виндой для подобных целей обычно использовалась CORBA, но оно конечно же с MS COM не совместимо никак.

Например для OPC, который изначально базировался на DCOM, так и нет нормальных решений под Qnx и Linux. Есть решения только через виндовозную машину, играющую роль гейта между линуксом и OPC-инфраструктурой.

Посему OPC Foundation сейчас разрабатывает (почти уже выпустила релиз соотв. спецификаций) OPC UA -- новую версию OPC никак не привязанную к столь замечательной кроссплатформенной, но привязанной к конкретной ОС, технологии как DCOM.

Благодаря отвязки от DCOM реализации OPC UA есть уже как минимум на яве, .нет, C++. ОСенезависимые реализации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 31 Март, 2009 11:30 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4302
Откуда: Россия, Орёл
Посему предлагаю забыть про COM совсем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Среда, 01 Апрель, 2009 00:12 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Можно сказать, что GAPI-парсер готов. Выкладываю на всеобщее обозрение.
Скачать GAPI-parser.zip (на народе)
Вложение:
GAPI-parser.zip [775.57 КБ]
Скачиваний: 167
.

Как это все работает описано в блоге.
Простите, время пять утра, дублировать здесь не буду :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Пятница, 03 Апрель, 2009 02:17 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
УРА!!! ЗАРАБОТАЛО!!!

Запустилась программа HelloWorld из под ББ под Linux!
Подробности постораюсь сообщить сегодня к вечеру.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Программа Hello world на GTK и ББ
СообщениеДобавлено: Пятница, 03 Апрель, 2009 23:22 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Выкладываю обещанные подробности

В архиве содержится собранная копия ББ, в которой при запуске выполняется код, приводящий к появлению GTK+ окна с одной кнопкой, на которой написано "Hello world"

В составе комплекта идет подсистема Gnome, представляющая собой сгенерированные файлы для библиотек GTK, GDK, Pango, Atk, GdkPixbuf.

В автоматически сгенерированном коде содержатся определения для процедур (методов), которые принадлежат каким-то объектам. Определения процедур не-методов опущены, поскольку предполагается, что в этом нет необходимости (это рассуждение для проекта Gtk#, где есть возможность использовать C код напрямую).

Поэтому для успешного запуска программы потребовалась ручная доводка.
В модуль GTK добавлены определения процедур gtk_main, gtk_main_quit. Кроме того, в код модуля GObject добавлены определения процедур g_signal_connect_data. Добавлен модуль GObjectStuff, в котором записаны процедуры g_signal_connect, g_signal_connect_swapped. Эти процедуры в коде
оригинальной системы GLib представляют собой #define определения. В ББ пришлось сделать для них отдельный модуль, поскольку у меня не получилось соединить определения библиотечных процедур (без реализации) и процедур модуля (с реализацией). Если знаете как это сделать - подскажите.

В итоге имеем приложение, запускаемое при старте ББ. Оно вызывает окно, которое правильно ведет себя в GTK-системе и реагирует на команды пользователя.

Уже немало.

Основные проблемы, с которыми пришлось столкнуться.

1) Не производится инициализация структуры Kernel.bootInfo или я неправильно понимаю, откуда брать argc и argv. Обращение к Kernel.bootInfo.arg(c|v) гарантированно ведет к трапу.

Поэтому вызов gtk_init производится в виде gtk_init(0, 0);

Что не есть правильно.

Поделитесь, кто может, информацией о старте приложения в Linux, откуда берется командная строка? Что-то про регистр BX в исходниках ББ сказано, но, это все вилами по воде писано.

2) Я не придумал как избежать обращения к SYSTEM при присваивании процедур.

В процедуру g_signal_connect одним из параметров передается указатель на процедуру. Причем сигнатура процедуры на момент вызова g_signal_connect значения не имеет, объект разбирается с сигнатурой самостоятельно в процессе работы.

Как передать в процедуру указатель на процедуру для процедур разной сигнатуры? Я не придумал.

Есть решение сделать объект с одним полем, представляющим собой указатель на процедуру и делать расширение некоего общего предка:
Код:
GCallback = EXTENSIBLE RECORD
END;

...

GMyCallback = RECORD(GCallback)
  callback: PROCEDURE ...
END;

Но тогда появляются проблемы другого рода - где-то нужна сама процедура, а где-то указател на нее. Кроме того, при работе с модулем появляется дополнительная (промежуточная) сущность. В общем это у меня не получилось, использую SYSTEM.ADR. Можно было бы спрятать использование SYSTEM в отдельный модуль, но это не решает проблему процедур разной сигнатуры. Их же как-то надо подать на вход оберточной процедуры...

3) Явно не хватает автогенерации модулей GLib и GObject.
Для того, чтобы получить перевод этих модулей с C на КП, можно использовать утилиту gapi_pp.pl (из Gtk#), которая вытаскивает из C-шных исходников определения процедур, структур, перечислений и прочего.

Затем необходимо произвести перевод из этого экстракта в удобоваримую форму или сразу на КП.

У меня руки не скоро дойдут до этого.
Впрочем, мне пока хватает того, что у меня есть (из ручной сборки). Более того, что это работает :Р

Продублировано в блоге.
Вложение:
BB-GTK-hello.tar.gz [2.79 МБ]
Скачиваний: 315


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Пятница, 03 Апрель, 2009 23:39 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8174
Откуда: Троицк, Москва
Димыч писал(а):
УРА!!! ЗАРАБОТАЛО!!!

Запустилась программа HelloWorld из под ББ под Linux!
Здорово.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программа Hello world на GTK и ББ
СообщениеДобавлено: Суббота, 04 Апрель, 2009 08:34 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1026
Димыч писал(а):
1) Не производится инициализация структуры Kernel.bootInfo или я неправильно понимаю, откуда брать argc и argv. Обращение к Kernel.bootInfo.arg(c|v) гарантированно ведет к трапу.

Поэтому вызов gtk_init производится в виде gtk_init(0, 0);

Что не есть правильно.

Поделитесь, кто может, информацией о старте приложения в Linux, откуда берется командная строка? Что-то про регистр BX в исходниках ББ сказано, но, это все вилами по воде писано.

BX (EBX точнее) это регистр в который линкер записывает адрес списка собранных модулей. Небольшая стартовая процедура это делает. Командная строка в Linux обрабатывается при обработке запуска на исполнение. Параметры argc и argv передаются по Си-соглашению через стек, обратиться к которому можно через baseStack в модуле KERNEL.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Суббота, 04 Апрель, 2009 09:43 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4302
Откуда: Россия, Орёл
Дмитрий, а под какой сборкой Линукса вы его собирали?
Код:
command error: code file for libgtk-x11-2.0.so not found
 
****
* Error 01
* libgtk-x11-2.0.so: code file not found
****


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Суббота, 04 Апрель, 2009 10:44 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Подтверждаю. Работает.

PS. Debian Lenny


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Суббота, 04 Апрель, 2009 11:21 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1026
Борис Рюмшин писал(а):
Дмитрий, а под какой сборкой Линукса вы его собирали?
[code][/code]
А у Вас какая? Результат тот же.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Суббота, 04 Апрель, 2009 11:31 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Забавно. Народ спрашивает у других какой дистрибутив у них линукс, а при этом не говорит какой у них ;-)

Какие все стеснительные! :lol:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Суббота, 04 Апрель, 2009 11:47 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4302
Откуда: Россия, Орёл
Это я упустил. Хотя несовместимость между собой - это минус Линукс-систем.

Но похоже в моей версии и проблема: Ubuntu 8.10 x86-64. Подозреваю, что в этом самом 64 и есть проблема...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Суббота, 04 Апрель, 2009 11:54 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1026
Борис Рюмшин писал(а):
Подозреваю, что в этом самом 64 и есть проблема...
А 32-разрядную версию библиотеки если поставить что будет?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 297 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11, 12 ... 15  След.

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


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

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


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

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