OberonCore
https://forum.oberoncore.ru/

Что с oo2c?
https://forum.oberoncore.ru/viewtopic.php?f=30&t=1951
Страница 3 из 6

Автор:  Info21 [ Понедельник, 25 Июль, 2011 21:33 ]
Заголовок сообщения:  Re: Что с oo2c?

Слежу с интересом.

Автор:  Борис Рюмшин [ Вторник, 26 Июль, 2011 13:50 ]
Заголовок сообщения:  Re: Что с oo2c?

Как я понимаю, исходная разработка стала несколько лет назад?

Автор:  Александр Ильин [ Вторник, 26 Июль, 2011 16:00 ]
Заголовок сообщения:  Re: Что с oo2c?

В CVS на SourceForge последний коммит датирован 2009-01-06. Автор коммита - Michael van Acken, т.е. автор компилятора.
В 2008 и 2007 годах коммитов довольно мало, но попадаются интересные имена файлов, такие как CodeGenJava.Mod.
В общем, надо мне брать последние исходники из CVS, а не последний релиз.
Michael van Acken - 2010-07-28 13:50 писал(а):
Hi all,

for myself I can say that I stopped working with Oberon several
years ago. By now it's quite hard for me to even read and
understand Oberon code. Go figure...

Jürgen did not continue with this project after our university time.
guenne I just gave access for some other work, unrelated to OOC.

-- mva

Автор:  Александр Ильин [ Вторник, 26 Июль, 2011 23:04 ]
Заголовок сообщения:  Re: Что с oo2c?

Решил заставить работать команду "make test". Для начала пришлось в файле oo2crc-install.xml поправить секцию "repositories", заменив пути вида /usr/local... на d:/Programs/Dev...:
Код:
  <repositories>
    <!--file-system>/usr/local/src/oo2c/lib</file-system-->
    <!--file-system>/usr/local/src/oo2c</file-system-->
    <file-system>d:/Programs/Dev/MinGW/msys/1.0/local/src/oo2c/lib</file-system>
    <file-system>d:/Programs/Dev/MinGW/msys/1.0/local/src/oo2c</file-system>
    <!--.-->
  </repositories>
Даже после этого в текущей версии команда "make test" не заработала.

Попробовал скомпилировать старые версии oo2c, начиная с v2.0.18, в надежде, что раньше команда работала, а потом сломалась. Оказалось, что не все релизы удаётся скомпилировать. Первой скомпилировалась v2.1.6. "Make test" не работает. Сначала часть тестов, проверяющих правильную работу, проходит успешно, а затем все тесты, проверяющие выдачу ошибок, не проходят:
Код:
ok: wf/001.xml
ok: wf/002.xml
ok: wf/003.xml
ok: wf/004.xml
ok: wf/005.xml
ok: wf/006.xml
ok: wf/007.xml
ok: wf/008.xml
ok: wf/009.xml
ok: wf/010.xml
ok: wf/011.xml
ok: wf/012.xml
cd /usr/local/src/oo2c/tests/config/sections && ./not-wf.sh
1c1
< In file not-wf/001.xml:
---
> In file file:///d$/Programs/Dev/MinGW/msys/1.0/local/src/oo2c/tests/config/sections/not-wf/001.xml:
failed: not-wf/001.xml
1c1
< In file not-wf/002.xml:
---
> In file file:///d$/Programs/Dev/MinGW/msys/1.0/local/src/oo2c/tests/config/sections/not-wf/002.xml:
failed: not-wf/002.xml
... и т.д.
Суть проблемы в том, что ожидается, что программа выдаст текст вида "In file not-wf/002.xml: <на следующей строке сообщение об ошибке в указанном файле>". Но вместо относительного пути к файлу выдаётся полный путь (file:///...).

Версии 2.1.7-11 тоже успешно скомпилировались, но во всех "make test" приводит к точно такой же проблеме с путём к файлу.

Автор:  Александр Ильин [ Среда, 27 Июль, 2011 00:29 ]
Заголовок сообщения:  Re: Что с oo2c?

Нашёл причину. В файле oo2c\lib\src\XML\Error.Mod, начиная со строки 245 производится проверка. Если начало пути к файлу совпадает с текущим каталогом, то это начало (префикс текущего каталога) из выдачи удаляется, см. стр. 249 - вызов Strings.Delete. Проблема в том, что совпадение проверяется простым равенством, но строки различаются:
Код:
text = file:///d$/Programs/Dev/MinGW/msys/1.0/local/src/oo2c/tests/config/sections/not-wf/026.xml
cwd  = file://d:\Programs\Dev\MinGW\msys\1.0\local\src\oo2c\tests\config\sections/
Видимо, нельзя здесь использовать функцию OS:ProcessParameters.GetCwd, так как она возвращает DOS-путь к текущему каталогу ("d:\Programs..."), и добавление префикса "file://" тут не поможет. Надо искать ту функцию, которая превратила относительный путь "not-wf/026.xml" в полный путь с префиксом "file:///". Наверняка это было сделано с помощью получения текущего каталога, и при том в более правильном формате, чем выдаёт GetCwd.

UPD: Разобрался. Достаточно в файле Error.Mod заменить строку
Код:
cwd := "file://"+ProcessParameters.GetCwd()+"/";
на такую:
Код:
cwd := "file://"+HostPath.Normalize(ProcessParameters.GetCwd())+"/";
Т.е. добавить нормализацию пути. После этого первый набор тестов (TestConfigSections) проходит успешно!

Второй набор тестов (TestConfigCmdLine) ломается. Опять какие-то проблемы с путями.

Автор:  Valery Solovey [ Среда, 27 Июль, 2011 21:10 ]
Заголовок сообщения:  Re: Что с oo2c?

Все эти проблемы с путями... Неужели, cygwin + bash выдают стандартный виндовый путь вместо линуксового? У меня на работе они стоят уже лет 5, и всегда всё работало нормально.

Автор:  Valery Solovey [ Среда, 27 Июль, 2011 21:15 ]
Заголовок сообщения:  Re: Что с oo2c?

А, правда я в папку "/mnt" добавил 26 ссылок на все возможные диски компьютера, и вместо "D:\tmp" обращаюсь "/mnt/d/tmp". При добавлении ссылок на диски, как я помню, он не проверяет наличия пути, а потому ни на что не ругается. Сама проверка выполняется по факту обращения. Так что, таким образом можно будет обращаться к динамически подключаемым дискам или флешкам.

Автор:  Александр Ильин [ Четверг, 28 Июль, 2011 06:42 ]
Заголовок сообщения:  Re: Что с oo2c?

Valery Solovey писал(а):
Неужели, cygwin + bash выдают стандартный виндовый путь вместо линуксового?
Не знаю, я работаю под MinGW+bash. Мне нужна маленькая среда.

Автор:  Александр Ильин [ Понедельник, 01 Август, 2011 09:42 ]
Заголовок сообщения:  Re: Что с oo2c?

Благодаря большой помощи пользователя Alexander Shiryaev у меня теперь есть рабочая виртуалка с OpenBSD, в которой я могу тестировать oo2c. Набор тестов под MinGW мне так и не удалось запустить, а под OpenBSD он отлично выполняется. На моём ноутбуке в VirtualBox весь цикл деинсталляции ранее скомпилированного пакета, полной компиляции и тестирования занимает 27 минут 50 секунд, из них более 20 минут - выполнение тестов.

Автор:  Александр Ильин [ Понедельник, 01 Август, 2011 20:15 ]
Заголовок сообщения:  Re: Что с oo2c?

В репозиторий на GitHub импортированы последние исходники из CVS на SourceForge, интегрированы в ветку master. Там не было доработок компилятора, только обновления H2O - утилиты Stewart'а Greenhill'а для перевода сишных заголовочных файлов в обероновские модули импорта (в том числе поддерживает Component Pascal).

Интегрированы 2 из 4 исправлений Александра Ширяева к автоматическим тестам.

Выложено также моё исправление сканера (компилятор валился с трапом от достаточно тривиальной синтаксически некорректной директивы), снабжено тестом.

В попытке заставить работать "make test" под MinGW+msys была исправлена одна из проблем с путями. Под OpenBSD проверено, что это исправление корректно работает и там тоже.

В CVS OOC на SourceForge было обнаружено несколько проектов неизвестной степени готовности. Библиотека libpobj для обеспечения персистентности Oberon-объектов с хранением в PostgreSQL. Библиотека libnet - "basic NNTP client, simple HTTP server, framework for reading and writing HTML forms". Биндинги для http://www.spread.org/ , http://icu-project.org/ .

Ещё там есть утилита gaf2 - "a sophisticated NNTP client for high volume downloads. "High volume" means stuff like DVD rips and TV caps. The client can maintain simultaneous connections to several different NNTP servers, and offers configuration access by means of an embedded Web server. It is best run as a daemon on a host with direct Internet access."

Автор:  Александр Ильин [ Четверг, 04 Август, 2011 11:14 ]
Заголовок сообщения:  Re: Что с oo2c?

Удалось скомпилировать программу ImportGraph. Результат получился не кроссплатформенный, поскольку используются библиотеки Files и Paths из Amadeus, а не из oo2c. Привязка к WinApi взята из проекта VisualOberon (модуль Windows.Mod автоматически создан утилитой H2O).

Автор:  Kubanych [ Четверг, 20 Октябрь, 2011 08:23 ]
Заголовок сообщения:  Re: Что с oo2c?

Спасибо за интерес

Автор:  Александр Ильин [ Четверг, 20 Октябрь, 2011 10:38 ]
Заголовок сообщения:  Re: Что с oo2c?

Kubanych писал(а):
компилируются и устанавливаются, но при попытке запуска не находят библиотеки типа liboo2c.so.0
А библиотеки-то создались? Где находятся? В PATH путь к ним прописан?

Автор:  Kubanych [ Пятница, 21 Октябрь, 2011 03:01 ]
Заголовок сообщения:  Re: Что с oo2c?

Спасибо за интерес.

Автор:  Kubanych [ Пятница, 21 Октябрь, 2011 06:20 ]
Заголовок сообщения:  Re: Что с oo2c?

Спасибо за интерес

Автор:  Madzi [ Пятница, 21 Октябрь, 2011 09:23 ]
Заголовок сообщения:  Re: Что с oo2c?

А зачем oo2c для сайтостроения? Просто интересно, как много по вашему сайтов используют CGI ?
Мне кажется, что их количество исчезающе мало. Причём CGI считается одним из основных источников потенциальной угрозы, поэтому от него отказываются.
Другое дело системный софт.

Автор:  Евгений Темиргалеев [ Пятница, 21 Октябрь, 2011 11:41 ]
Заголовок сообщения:  Re: Что с oo2c?

Обсуждение CGI и пр. выделено: viewtopic.php?f=27&t=3621

Автор:  adva [ Воскресенье, 23 Октябрь, 2011 11:48 ]
Заголовок сообщения:  Re: Что с oo2c?

Kubanych писал(а):
Спасибо за интерес


А где предыдущие тексты, хотел попробовать на ubuntu установить (сам в линуксе не силен), отложил до выходных. И на тебе :(

Автор:  Kubanych [ Вторник, 25 Октябрь, 2011 02:04 ]
Заголовок сообщения:  Re: Что с oo2c?

Здравствуйте. Я подумал, народ не принял, поэтому удалил... Восстанавливаю

Разработка динамических сайтов на обероне. Начало. Простейший CGI. Шаг 1. Подготовка компилятора.

Чтобы
1) снизить порог вхождения тех, кого мы привлекаем в Оберон-сообщество для динамического сайтостроения;
2) обеспечить повторяемость экспериментов;
3) исключить вопрос об убитых сайтах и ссылках (см. начало темы);

произведем необходимую и достаточную степень детализации шагов.

1. Начнем с отрезания 10 гигабайт от диска D, например, с использованием следующего инструмента
http://rutracker.org/forum/viewtopic.php?t=3020406

2. Скачаем дистрибутив 64 битного Linux, например отсюда
http://rutracker.org/forum/viewtopic.php?t=3677491

3. При установке, когда увидим окно с одним из пунктов меню "Рядом с Windows", выберем не этот пункт меню, а последний (для ручной установки), создаем на пустом месте раздел, задаем тип ext4fs с точкой монтирования "/", помечаем этот раздел первичным. Нам надо уместиться в 10 гигабайтах, поэтому раздел подкачки (SWAP) делать не будем, в современных компах оперативки достаточно много.

4. Чтобы наши операции не мешали эксплуатации Windows системы,
запускаем

gksudo gedit /boot/grub/grub.cfg

находим и вырезаем в нем примерно такой кусок текста

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 3E9C02FC9C02AF09
chainloader +1
}
### END /etc/grub.d/30_os-prober ###

вставляем перед самым первым
menuentry 'Ubuntu ...

После этого при перезагрузке если клавиатуру не трогать, должен появляться Windows

5. Качаем последнюю версии сборщика мусора c
http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/
например, gc-7.1.tar.gz .

Качаем последнюю версию oo2c, например, c
http://sourceforge.net/projects/ooc/files/ooc2/2.1.11/
версию oo2c_64-2.1.11.tar.bz2

6. Распаковываем oo2c_64-2.1.11.tar.bz2, например, в папке /home/oberon_programmist/instrument .
Распаковываем gc-7.1.tar.gz,
переименовываем папку gc-7.1 в gc,
вырезаем папку gc и вставляем в папку oo2c_64-2.1.11.

7. Запускаем терминал, переходим через команду cd в папку oo2c_64-2.1.11, например, так
cd /home/oberon_programmist/instrument/oo2c_64-2.1.11

Если будут проблемы с Линуксом, запускаем тут же браузер и ищем ответы через google

8. Запускаем команду
sudo apt-get install libtool
может спросить пароль

9. запускаем команду
sudo ./configure

среди появившихся строк должны быть такие

checking gc/gc.h usability... yes
checking gc/gc.h presence... yes
checking for gc/gc.h... yes

10. запускаем команду
sudo make

11. запускаем команду
sudo make install

12. Запускаем команду
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
Эту команду надо запускать каждый раз перед запуском oo2c (или найти и прикрутить в автозапуск bash)

затем запускаем команду
oo2c

видим ответ

Usage:
oo2c [options] <module>...
oo2c (--make|-M) [options] <module>
oo2c --uses <ext-ident> [options] <module> ...
oo2c --build-package [options] <package>
oo2c --install-package [options] <package>
oo2c --uninstall-package [options] <package>
oo2c --build-pkg-doc [options] <package>
oo2c --package-installed [options] <package>
oo2c --list-packages [options]
Options:
--config <file>
--repository <directory>, -r <directory>
--no-rtc
(--all|-A)
--error-style (file:line:column|char-pos|attributes)

значит, компилятор oo2c поставился нормально.

P.S. Возникает одна проблема - скомпилированный в oo2c файл требует наличия liboo2c, на web сервере его администратор не даст поставить, поэтому работаю над тем, как решить эту проблему, а пока использую freepascal.

Автор:  Иван Денисов [ Вторник, 25 Октябрь, 2011 08:09 ]
Заголовок сообщения:  Re: Что с oo2c?

Чтобы делать эксперименты прямо в вебе рекомендую использовать сервис облачных серверов, например, Clodo. Плата небольшая, любую библиотеку можете установить на свой веб-сервер и иметь функциональный сайт в Интернете на Обероне.

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