Bug 25991 - ошибка при запуске Lazarus
Summary: ошибка при запуске Lazarus
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: lazarus (show other bugs)
Version: unstable
Hardware: x86 Linux
: P3 normal
Assignee: Andrey Cherepanov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 26050
  Show dependency tree
 
Reported: 2011-08-04 20:08 MSK by Алексей Пирогов
Modified: 2014-02-16 15:58 MSK (History)
7 users (show)

See Also:


Attachments
Патч для Лазаря 1.0.6 (638 bytes, patch)
2013-03-18 22:09 MSK, NotHAM
no flags Details | Diff
файлы fpc.cfg и логи запуска (5.16 KB, application/x-bzip)
2013-04-01 11:07 MSK, NotHAM
no flags Details
Минимальная заготовка проекта (561 bytes, text/xml)
2013-04-02 21:51 MSK, NotHAM
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Алексей Пирогов 2011-08-04 20:08:58 MSK
при запуске Lazarus вываливает окно с ошибкой на вкладке Compiler
"Error: system.ppu not found. Check your fpc.cfg."

в /etc/fpc.cfg прописан путь
-Fu/usr/lib/fpc/units/i386-linux/rtl
в этом каталоге system.ppu лежит
Comment 1 AEN 2011-08-14 05:58:02 MSK
Несмотря на это сообщение продолжает работать?
Comment 3 ashen 2011-08-14 18:47:57 MSK
Это связка fpc-2.5 & lazarus-0.9.31
Уже год как пытаюсь от этого косяка избавится.
Сам по себе лазарь работает, но это как минимум раздражает.
Comment 4 Fr. Br. George 2011-08-26 16:51:41 MSK
Если сменить в файле /etc/fpc.cfg русские сообщения (errorru.msg) английскими (errore.msg), ошибка не возникает. Вообще стоит задуматься, включать ли русские сообщения об ошибках в FPC, когда он используется из-под Lazarus.

Также лечится передачей fpc ключа -Fr/usr/lib64/fpc/msg/errore.msg, только это надо как-то заранее указать. Возможно, в недрах настроек lazarus есть такая опция, не знаю.
Comment 5 AEN 2011-08-26 17:09:25 MSK
То есть пересборка fpc отменяется, наверное. По крайней мере со сменой версии. Это радует, спасибо!
Comment 6 AEN 2011-08-26 17:11:38 MSK
(В ответ на комментарий №4)
> Если сменить в файле /etc/fpc.cfg русские сообщения (errorru.msg) английскими
> (errore.msg), ошибка не возникает. Вообще стоит задуматься, включать ли русские
> сообщения об ошибках в FPC, когда он используется из-под Lazarus.
> 
> Также лечится передачей fpc ключа -Fr/usr/lib64/fpc/msg/errore.msg, только это
> надо как-то заранее указать. Возможно, в недрах настроек lazarus есть такая
> опция, не знаю.

Возможно, стоит по умолчанию установить в fpc английские сообщения, а русскую версию fpc/fp вызывать скриптами fpc-rus , fp-rus ?
Comment 7 ashen 2011-08-26 17:17:55 MSK
(В ответ на комментарий №6)
> Возможно, стоит по умолчанию установить в fpc английские сообщения, а русскую
> версию fpc/fp вызывать скриптами fpc-rus , fp-rus ?

Нет английской версии fpc, нет русской версии fpc. Язык выводимых сообщений определяется в fpc.cfg.
Comment 8 AEN 2011-08-26 17:25:46 MSK
(В ответ на комментарий №7)
> (В ответ на комментарий №6)
> > Возможно, стоит по умолчанию установить в fpc английские сообщения, а русскую
> > версию fpc/fp вызывать скриптами fpc-rus , fp-rus ?
> 
> Нет английской версии fpc, нет русской версии fpc. Язык выводимых сообщений
> определяется в fpc.cfg.

Никто ж не спорит. Вопрос в том, что "из коробки".
Comment 9 ashen 2011-08-26 17:59:35 MSK
(В ответ на комментарий №8)
> (В ответ на комментарий №7)
> > (В ответ на комментарий №6)
> > > Возможно, стоит по умолчанию установить в fpc английские сообщения, а русскую
> > > версию fpc/fp вызывать скриптами fpc-rus , fp-rus ?
> > 
> > Нет английской версии fpc, нет русской версии fpc. Язык выводимых сообщений
> > определяется в fpc.cfg.
> 
> Никто ж не спорит. Вопрос в том, что "из коробки".

Не знаю. Не знаю.
В environmentoptions.xml
Можно прописать такое:

    <CompilerMessagesFilename Value="/usr/lib/fpc/msg/errore.msg">
      <History Count="1"/>
    </CompilerMessagesFilename>

По идеи это как раз и указывает fpc какой файл сообщений использовать.
Но лазарь это игнорирует.
А вот то что Гриша предлагает помогает. Т.е. в /etc/fpc указать английский файл сообщений.

Но тогда это отразиться и на fp и на lazarus.
А мы уже народ приучили, что у нас сообщения выводятся на русском.
Сообщения компилятора на русском удобно для школьников (а ведь в основном fpc/lazarus используется в школах). Да и в инете не раз встречал упоминания учителей, преподавателей, о том как удобно читать сообщения компилятора в fpc/lazarus'е на русском.

Вот и не знаю как быть.
Comment 10 AEN 2011-08-26 18:37:51 MSK
(В ответ на комментарий №9)
> Вот и не знаю как быть.

Мы сейчас обсуждали с Гошей. Вот что лучше всего сделать:
1. Бага происходит из-за того, что при определении конфигурации fpc, lazarus, по-видимому, парсит вывод fpc. Так как вывод русский, то он "сходит с ума".
2. Надо найти это место и запускать там fpc с опцией, указывающей  на файл английских сообщений.

Остается подтвердить 1., найти этот код и исправить в соответствии с 2.
Comment 11 ashen 2011-08-26 18:50:43 MSK
lazarus "сходит с ума" если указать в /etc/fpc русский, голандский, португальский. Только что проверял, остальные не пробовал.
Comment 12 ashen 2011-08-26 18:56:42 MSK
Сейчас сравнил по количеству строк: errore.msg - 3273; errorru.msg - 2833; errorptu.msg - 3241; errorn.msg - 2373.
У нас уже были проблемы из-за формата errorru.msg. Возможно эта бага из той же оперы.
Comment 13 AEN 2011-08-26 18:59:05 MSK
(В ответ на комментарий №11)
> lazarus "сходит с ума" если указать в /etc/fpc русский, голандский,
> португальский. Только что проверял, остальные не пробовал.

Естественно, если он умеет парсить только внглийский вывод.
Comment 14 Slava Dubrovskiy 2011-08-29 19:25:00 MSK
(В ответ на комментарий №13)
> (В ответ на комментарий №11)
> > lazarus "сходит с ума" если указать в /etc/fpc русский, голандский,
> > португальский. Только что проверял, остальные не пробовал.
> 
> Естественно, если он умеет парсить только внглийский вывод.
Может его можно обучить?
Codetools не для этого предназначена?
Comment 15 Andrey Cherepanov 2012-12-26 18:54:29 MSK
В lazarus-1.0.4 ошибка всё ещё актуальна. Может, пересобрать русские сообшения, чтобы соответствовали английским по количеству и идентификаторам?
Comment 16 NotHAM 2013-03-14 14:43:24 MSK
(В ответ на комментарий №15)
> В lazarus-1.0.4 ошибка всё ещё актуальна. Может, пересобрать русские сообшения,
> чтобы соответствовали английским по количеству и идентификаторам?

Эта ошибка будет актуальна и Лазарусе 1.0.6.
Обойти ее очень просто (по кр. мере у меня сработало).
1. Сначала, когда не находит system.ppu, проигнорировать и запустить IDE.
2. В запущеной IDE в меню "Сервис" кликнуть на пункте "Пересмотреть каталог
исходного кода FPC". После чего можно перезапустить Лазаря.
Никакой Check your fpc.cfg не требуется. Оно само всё прочекит. :)

У меня после проделанного ругань пропадала навсегда и в 1.0.4 и в 1.0.6.
И вообще это, похоже, микроскопический глючок, который ничему не
мешает. 
Вполне достаточно отразить это в документации.
Как было в 0.9.30 - уже не помню.
Comment 17 NotHAM 2013-03-16 00:35:13 MSK
(В ответ на комментарий №16)
> ...
> Обойти ее очень просто ...
> ...
Можно ещё попытаться пропатчить файл lazarus.pp, но сначала надо
понять, в каком месте вываливается ошибка, и перед этим местом 
попробовать вставить вызов процедуры mnuEnvRescanFPCSrcDirClicked
из файла main.pp, т. к. именно она всё и выправляет.
Возможно это сработает.
Но этим должен заниматься тот, кто хорошо знает коды Лазаря.
У меня таких знаний нет. ;)
Comment 18 NotHAM 2013-03-18 18:49:09 MSK
(В ответ на комментарий №10)
> ...
> 2. Надо найти это место и запускать там fpc с опцией, указывающей  на файл
> английских сообщений.
> 
> ... найти этот код и исправить в соответствии с 2.

To cas.
Этот код находится в файле ../components/codetools/definetemplates.pas 
начиная со строки 7200 (для версии 1.0.6). Там вызывается fpc с несколькими
параметрами, один из которых надо, наверное, заменить нужной строкой.
По простому не получается. ;)
Comment 19 NotHAM 2013-03-18 22:09:40 MSK
Created attachment 5776 [details]
Патч для Лазаря 1.0.6

На самом деле это грубый костыль скорее, но работает.
Как поведёт себя на железе, отличном от Intel Pentium
- не знаю.
Это конечное звено цепочки вызовов. Сюда попадаем из строк 7200...
а хорошо-бы найти и пропатчить начальное звено.
Может кто поможет ??
ЗЫ. Для справки. При клике в меню "Пересмотреть ..." подставляется
другой файл /usr/lib/lazarus/components/codetools/fpc.errore.msg.
С ним тоже всё работает.
Comment 20 Superwad 2013-03-29 20:07:15 MSK
Спасобо за информацию. После накатывания обновления с 4 на 6 у меня вылетала данная ошибка. сейчас нет. Но вот вопрос, начала вылетать постоянно ошибка  "Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)". Т.е. нет цели для компиляции. в чём может быть дело???  На 4-ке такого не было.
С уважением, Вадим.
Comment 21 Алексей Пирогов 2013-03-30 15:59:26 MSK
Плюсую. в Lazarus 1.0.6 из p6 есть серьезная проблема: любая ошибка в коде при компиляции выдает
"Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)"
при этом навигации к строке с ошибкой не происходит.
если запускать lazarus из консоли, то fpc показывает там все подробности ошибки и номер строки/символа.
Comment 22 NotHAM 2013-03-31 17:39:25 MSK
(В ответ на комментарий №21)
> Плюсую. в Lazarus 1.0.6 из p6 есть серьезная проблема: любая ошибка в коде при
> компиляции выдает
> "Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not
> specify a source file to be compiled)"
> при этом навигации к строке с ошибкой не происходит.
> ...

Есть такое дело. 
Лечится очень просто.
1-й способ - не делать ошибок. :)
2-й способ - в файле /etc/fpc.cfg закомментировать строку с errorru.msg
и раскомментировать строку с errore.msg (из под рута естественно).

Выглядеть это будет как то так :
...
-Fr/usr/lib/fpc/msg/errore.msg
...
# -Fr/usr/lib/fpc/msg/errorru.msg
...

Лазарус, похоже, не понимает русскоязычные (и любые другие кроме англ.)
сообщения от fpc (в 1.0.4 то-же самое вроде было).
В версии 0.9.30 этого не было, там файл /etc/fpc.cfg, похоже, не использовался,
и соответствующего пункта в меню там не было ("Пересмотреть...").
У него был другой большой недостаток - не получалось добавить в палитру
компонентов свои компоненты. Тут требовалась самопересборка и он пытался
записать всё в /usr/lib/..., что можно сделать только от рута,
а в новых версиях стало всё нормально. Теперь, после самопересборки,
он пишет всё в ~/.lazarus и проблемы пропали, причем искаропки.
Простой пример - Double Commander - там таких компонент много.
В 0.9.30 собрать в графической среде не получалось, а начиная с 1.0.4 - проблем
больше нет. Что хочу - то и вытворяю.

Это надо, наверное, на разработчиков кляузу писать (им самим же).
Comment 23 AEN 2013-03-31 17:48:42 MSK
(В ответ на комментарий №22)
> (В ответ на комментарий №21)
> > Плюсую. в Lazarus 1.0.6 из p6 есть серьезная проблема: любая ошибка в коде при
> > компиляции выдает
> > "Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not
> > specify a source file to be compiled)"
> > при этом навигации к строке с ошибкой не происходит.
> > ...
> 
> Есть такое дело. 
> Лечится очень просто.
> 1-й способ - не делать ошибок. :)
> 2-й способ - в файле /etc/fpc.cfg закомментировать строку с errorru.msg
> и раскомментировать строку с errore.msg (из под рута естественно).
> 
> Выглядеть это будет как то так :
> ...
> -Fr/usr/lib/fpc/msg/errore.msg
> ...
> # -Fr/usr/lib/fpc/msg/errorru.msg
> ...

Думаю, что надо это, наконец-то, сделать по умолчанию. И написать README о том, включить и когда это сделать разумно.
По сути, немногочисленные русские сообщения об ошибках, не мешают работе только при запуске fpc и fp без lazarus. Тот, кто не использует lazarus, включит их сам.
Comment 24 NotHAM 2013-03-31 19:00:10 MSK
(В ответ на комментарий №23)
> ...
> Думаю, что надо это, наконец-то, сделать по умолчанию. И написать README о том,
> включить и когда это сделать разумно.
> По сути, немногочисленные русские сообщения об ошибках, не мешают работе только
> при запуске fpc и fp без lazarus. Тот, кто не использует lazarus, включит их
> сам.

Дык в сс #16 я именно это и предложил...

В Лазаре 0.9.30 по дефолту сразу использовался файл
/usr/lib/lazarus/components/codetools/fpc.errore.msg
и никакой проблемы не было. В окно сообщений компилятора (в графике) всё
валилось только на английском, и вроде никто не жаловался.
Причем туда валилось слишком много ненужного и некритичного.
В Лазарях 1.*.* они это сильно почистили, пишется только полезная инфа
(тоже на английском), но вот другая проблемка вылезла ...,
зато проблему с доп. компонентами и самопересборкой они хорошо решили.

Кстати, errorru.msg пакостит только при работе в графике, в терминале
(а также в хашере, естественно) это никак не проявляется.

ЗЫ. Там, вообще-то, есть ещё одно место, где можно попробовать пропатчить,
(имхо - более кошерное) может сработает. Пока руки не доходят. 
Найду время - попробую и сообщу сюда-же.
Comment 25 NotHAM 2013-03-31 21:02:45 MSK
(В ответ на комментарий №24)
> ... 
> Найду время - попробую и сообщу сюда-же.

Твою мать! (Извиняюсь конечно).
Сделал так:
1. Сделал дубликат /etc/fpc.cfg.
2. Переименовал его в extrafpc.cfg ну и положил рядом с оригиналом.
3. В extrafpc.cfg закомментировал #-Fr/usr/lib/fpc/msg/errorru.msg
и раскомментировал -Fr/usr/lib/fpc/msg/errore.msg
4. В настройках Лазаря: Проект -> параметры проекта -> Другие:
 - снял птицу "Использовать стандартный файл настройки...(fpc.cfg)..."
 - поставил птицу "Использовать дополнительный файл настройки..."
 - в окошке прописал /etc/extrafpc.cfg (обязательно полный путь!!)
 - в самом низу поставил птицу "Использовать текущие параметры по умолчанию..."
5. И всё заработало, и патчить не надо ничего.
При этом в параметры вызова fpc всё подставляется вполне корректно
(параметры ... -n @/etc/extrafpc.cfg ...), что хорошо видно, если в
этом же окне кликнуть по кнопкам "Test", "Показать параметры", "...".

Единственное - окна при первом старте Лазаря будут выскакивать, придется 
их игнорировать.

ЗЫ. Вот, нашлось уже 2 пути решения проблемы.
Comment 26 NotHAM 2013-04-01 11:07:20 MSK
Created attachment 5792 [details]
файлы fpc.cfg и логи запуска

> Там, вообще-то, есть ещё одно место, где можно попробовать пропатчить,
> (имхо - более кошерное) может сработает...

Сработало...
Но это уже не патч а бан, который решает обе проблемы:
ошибку при первом запуске, и ошибку при компиляции.
Подробности в комментариях к файлам в архиве.
Читать в порядке 1-2-3-4.

ЗЫ. Это не первоапрельская шутка.
Comment 27 Andrey Cherepanov 2013-04-01 11:32:07 MSK
(В ответ на комментарий №25)
> 2. Переименовал его в extrafpc.cfg ну и положил рядом с оригиналом.
Тогда проще в Lazarus сделать подобный файл с нужными исправлениями, положить его в /etc/lazarus.cfg и прописать его использование по умолчанию. Как идея?
Comment 28 NotHAM 2013-04-01 12:07:55 MSK
(В ответ на комментарий №27)
> ...
> Тогда проще в Lazarus сделать подобный файл с нужными исправлениями, положить
> его в /etc/lazarus.cfg и прописать его использование по умолчанию. Как идея?

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

Но это не решает проблему первого запуска. См. 4-й лог из архива.
Там первый старт RunTool по любому идёт с пустым ExtraOptions, повидимому
в расчете на то, что fpc выдаст нужную информацию для распарсивания
из своего errore.msg.
Причем пустое значение предписано в файле 
.../components/codetools/definetemplates.pas 
строка 703. Декларация функции Update. Т. е. прямо в декларации.

А вот бан, или оставление только errore.msg, решает обе проблемы.
Comment 29 NotHAM 2013-04-01 14:13:03 MSK
(В ответ на комментарий №28)
> ...
> А вот бан, или оставление только errore.msg, решает обе проблемы.

В догонку, для сведения.
Сейчас попробовал 0.9.30. Так он, похоже, errore.msg из /etc/fpc.cfg
вообще не использует, а сразу свой подставляет.
Там запуск RunTool с пустым ExtraOptions напрочь отсутствует как при
первом старте Лазаря, так и позже. Потому проблем и не было.
Ошибку при компиляции проверять даже не стал.
Comment 30 Superwad 2013-04-01 17:59:14 MSK
Спасибо за помощь! Закомментировал русский файл, расскомментировал английский - всё заработало!
Comment 31 NotHAM 2013-04-01 18:14:51 MSK
(В ответ на комментарий №30)
> Спасибо за помощь! Закомментировал русский файл, расскомментировал английский -
> всё заработало!

Пожалуйста!
А теперь попробуйте (ради эксперимента) очистить каталог /home/.../.lazarus
и запустите его из меню или из терминала ...$ startlazarus.
Это равноценно первому запуску после установки программы.
(Ни один Ваш проект при этом не пропадёт! - они в других каталогах).
Стартовых окон, описанных в СС#1 не должно появиться, должен сразу
нормально стартовать.
А то может это только у меня всё работает ?? (т. к. всё сильно перепахано).
Comment 32 NotHAM 2013-04-02 21:51:23 MSK
Created attachment 5795 [details]
Минимальная заготовка проекта

(В ответ на комментарий №27)
> ...
> Тогда проще в Lazarus сделать подобный файл с нужными исправлениями, положить
> его в /etc/lazarus.cfg и прописать его использование по умолчанию. Как идея?

Если уж подкладывать в /etc/lazarus/ то наверное минимальную заготовку проекта
(см. вложение).
Там, возможно, секцию Debugging можно тоже полностью убрать (не пробовал).
Эта заготовка добавляет в параметры вызова компилятора дополнительный
параметр -Fr/бла-бла-бла.
Посмотреть можно в том же самом окне, где и про fpc.cfg было, но теперь
никакие манипуляции с "птицами" не требуются. Это будет по дефолту запись
в "параметры пользователя" в любом НОВОМ проекте. В старые пректы, возможно,
придется добавить руками.
В файл project.lpi всё что нужно - пишется Лазарем по умолчанию
(как и было раньше), а из этой болванки  - дописывается.
Проблему при компиляции программы с ошибками это устраняет полностью,
т. е. errorru.msg можно оставить, но тогда проблема первого запуска
останется (на самом деле она ерундовая).
У меня работает (laz 1.0.6; fpc 2.6.2; бранч р6).
Хорошо-бы Шенцев прокомменторовал это, если доступен.
Comment 33 NotHAM 2013-04-02 22:10:26 MSK
(В ответ на комментарий №32)
> Created an attachment (id=5795) [details]
> Минимальная заготовка проекта
> ...
Склеоз, блин! 
Файл нужно обозвать projectoptions.xml .
Comment 34 NotHAM 2013-04-04 15:34:47 MSK
(В ответ на комментарий №32)
> Там, возможно, секцию Debugging можно тоже полностью убрать...
Можно. Убрал всё лишнее.
Теперь projectoptions.xml выглядит так:

<?xml version="1.0"?>
<CONFIG>
  <CompilerOptions>
    <Other>
      <CustomOptions Value="-Fr/usr/lib/fpc/msg/errore.msg"/>
      <CompilerPath Value="$(CompPath)"/>
    </Other>
  </CompilerOptions>
</CONFIG>

При этом errorru.msg ВКЛЮЧЕН !!.
Проблемы, описанной в сс#20 и сс#21 больше не возникает,
а проблему первого запуска один из разрабов Лазаря (Mattias вроде)
рекомендовал обходить "пересмотром каталогов исходного кода fpc".
(Подсмотрел в гугле в какой-то ихней рассылке - ссылку, естественно,
забыл скопировать, а зачем ? ...)
Теперь при сборке в терминале путём lazbuild somefile.lpi вся инфа
идет на английском, а при сборке путем fpc somefile.pas - на русском.
В обеих случаях - успешно (если нет ошибок).

fpc 2.6.2, lazarus 1.0.8 (или 1.0.6), бранч p6.
Comment 35 Repository Robot 2013-05-24 19:21:10 MSK
lazarus-1:1.0.8-alt1 -> sisyphus:

* Fri May 24 2013 Andrey Cherepanov <cas@altlinux> 1:1.0.8-alt1
- New version 1.0.8
- Fix search FPC compiler with localized output from fpc (ALT #25991)
- Set correct path to xterm for all existing modules (ALT #24803)
- Update PowerPDF to 0.9.10 (ALT #24804)
- Add libdbus-devel and xterm to requires
- Pack man pages
- Add patches from Fedora
- Make symlink /usr/bin/lazarus for lazarus-ide
- Add docs and examples in main package